簡體   English   中英

如何使用 GitHub Packages 中的 Docker 鏡像?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM