我一直在尝试在我的 github 项目中设置一个容器工作流,以便每次推送到 repo 时都会触发它。它必须从默认的 Dockerfile 构建容器镜像并将镜像推送到我的 GitHub 容器注册表 (GHCR)。在我可以将图像推送到注册表之前,我需要进行身份验证。我有一个 PAT(个人访问令牌),我可以从终端使用它进行手动推送。然后我为它做了一个秘密,以便我可以在工作流程中使用它。到目前为止,我还无法通过工作流程中的身份验证步骤。
这是我的容器工作流程 yaml:。
name: Docker Image CI
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
repo-token: ${{secrets.GHCR_LOGIN}}
- name: Build the Docker image
# run: docker build . --file Dockerfile --tag my-image-name:$(date +%s)
run: docker build -t ghcr.io/myusername/repo:latest .
# - name: Authenticate in the Workflow
run: echo $GHCR_LOGIN |docker login ghcr.io -u myusername --password-stdin
- name: Push the Docker image
run: docker push ghcr.io/myusername/repo:latest
我在这个定义中得到的错误是 docker 无法从非 tty 环境中的标准输入进行身份验证。但是,必须有一种方法可以将秘密或密码传递给 docker。