github - 如何访问 Github Actions CI/CD 中的服务?

标签 github elixir github-actions

我正在尝试在 GitHub Actions 中为我的 Elixir 项目设置 CI/CD 管道。

我可以获取依赖项、编译它们、检查格式、信条...但是当测试开始时,我无法访问 YAML 上声明的 PostgreSQL 服务。

如何链接两个容器? (Elixir 和 PostgreSQL)

根据 GitHub Actions 上显示的日志,两个容器都位于同一 Docker 网络上,因此应该可以使用网络别名相互访问它们。然而,当我尝试连接到 postgres 时,它显示 NXDOMAIN。正如预期的那样,ping 也不起作用。

我的工作流程内容:

name: Elixir CI

on: push

jobs:
  build:
    runs-on: ubuntu-18.04

    container:
      image: elixir:1.9.1

    services:
      postgres:
        image: postgres
        ports:
        - 5432:5432
        env:
          POSTGRES_USER: my_app
          POSTGRES_PASSWORD: my_app
          POSTGRES_DB: my_app_test

    steps:
    - uses: actions/checkout@v1
    - name: Install Dependencies
      env:
        MIX_ENV: test
      run: |
        cp config/test.secret.ci.exs config/test.secret.exs
        mix local.rebar --force
        mix local.hex --force
        apt-get update -qqq && apt-get install make gcc -y -qqq
        mix deps.get
    - name: Compile
      env:
        MIX_ENV: test
      run: mix compile --warnings-as-errors
    - name: Run formatter
      env:
        MIX_ENV: test
      run: mix format --check-formatted
    - name: Run Credo
      env:
        MIX_ENV: test
      run: mix credo
    - name: Run Tests
      env:
        MIX_ENV: test
      run: mix test

另外,在 Elixir 上我设置了测试任务来连接到 postgres:5432,但它说主机不存在。

根据我在互联网上找到的一些教程和示例,此配置看起来有效,但我无能为力。

最佳答案

您需要将服务名称(“postgres”)作为 POSTGRES_HOST 传递给应用程序设置端口 POSTGRES_PORT:${{ job.services.postgres.ports[5432] }}(空格很重要。)

Github CI 动态地将端口和主机路由到它。

我写了一个blog post几天前讨论过这个主题。

关于github - 如何访问 Github Actions CI/CD 中的服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57639507/

相关文章:

elixir - 如何处理 API 的不同速率限制?

linux - 使用 bash 变量作为 GitHub 操作的参数

github - 如何在 Github Actions 中设置 secret ?

azure - 如何使用 azure runbook 从 Github 部署 ARM 模板?

java - GitHub - Travis ci 工作被拒绝

macos - .git 文件夹消失,git status 给出 "Not a git repository"

docker - 如何传递从GitHub操作收到的环境变量

github - 将 sourceforge 票证迁移到 GitHub 问题

Elixir警告: default arguments are never used

linux - 如何在服务器上正确安装 Erlang、Elixir 和 mix?