代码之家  ›  专栏  ›  技术社区  ›  Zulhilmi Zainudin

如何使用GitHub包中的Docker映像?

  •  0
  • Zulhilmi Zainudin  · 技术社区  · 6 年前

    我的密码是 .github/workflows/main.yaml

    # .github/workflows/main.yaml
    name: CI Workflow
    
    on: [push]
    
    jobs:
      rspec-job:
        runs-on: ubuntu-latest
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        container:
          image: I-stucked-here
          volumes:
            - /vendor/bundle
        steps:
          - code omitted for brevity
    

    此作业的主要思想是以容器模式运行所有步骤。不是在Linux主机模式下。

    ruby-rimy-2.6.3

    我尝试了不同的语法(见下面的代码),但没有成功。

    # .github/workflows/main.yaml
    name: CI Workflow
    
    on: [push]
    
    jobs:
      rspec-job:
        runs-on: ubuntu-latest
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        container:
          image: docker://docker.pkg.github.com/zulhfreelancer/rimy/ruby-rimy-2.6.3:latest
          volumes:
            - /vendor/bundle
        steps:
          - code omitted for brevity
    

    GitHub说 GITHUB_TOKEN 在作业运行时可用。我怎么用这个 Gitub令牌 docker login 最重要的是 container: 这样的工作是不是能把图像拉出来?

    0 回复  |  直到 6 年前
        1
  •  1
  •   DannyB    6 年前

    您不需要使用 container 在容器中运行测试的指令。

    docker-compose.yml 在我的存储库中,它包括一个运行测试的“服务”。然后,您的工作流需要 docker login docker-compose run test 命令。

    请注意,这种方法的优点在于,您的测试在自己的机器和CI机器上执行完全相同。同样的步骤。

    大致如下:

    name: Test
    on:
      pull_request:
      push: { branches: master }
    
    jobs:
      test:
        name: Run test suite
        runs-on: ubuntu-latest
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
    
        steps:
        - name: Checkout code
          uses: actions/checkout@v2
    
        - name: Docker login
          run: echo ${GITHUB_TOKEN} | docker login -u ${GITHUB_ACTOR} --password-stdin docker.pkg.github.com
    
        - name: Build docker images
          run: docker-compose build
    
        - name: Run tests
          run: docker-compose run test
    

    我和DockerHub也在做同样的事情,非常轻松和成功。

    当然,如果您不想使用docker compose,您仍然可以使用任何普通的 docker run ... 在登录步骤中正确登录后的命令。

    我不确定 docker登录 命令将按原样工作,有关更深入的讨论,请参见以下内容: