![](/img/trans.png)
[英]How to run a Docker Compose image pulled from GitHub Packages
[英]How to use Docker image from GitHub Packages?
我在.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的公共 Docker 映像。 由於它不是在 DockerHub 上公開托管的,我找不到一種方法來以編程方式向 GitHub Packages/Registry 驗證自己。
我確實嘗試了不同的語法(見下面的代碼),但沒有用。
# .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
在作業運行時可用。 我如何使用這個GITHUB_TOKEN
環境變量在該container:
頂部運行類似GITHUB_TOKEN
docker login
類的東西container:
部分以便作業能夠提取圖像?
使用 GitHub Personal Token 對我來說不是一個選擇,因為在將相同的東西應用於我的 GitHub 組織之前,該存儲庫只是我的實驗存儲庫。 我不想將我的個人令牌放在我組織的存儲庫環境變量/秘密下——這只會將我的個人令牌暴露給我的同事。
您不需要使用container
指令在container
中運行測試。
GitHub Actions 主機附帶安裝了 docker 和 docker-compose。 我這樣做的方式是在我的存儲庫中有一個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 login
命令是否會按原樣工作,請參閱這些以進行更深入的討論:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.