我想構建一個 docker 容器并將其從我的 Github 存盤庫推送到 Github 容器注冊表。也許值得一提的是存盤庫位于一個組織中。這是我的 Github Action 作業流程:
name: <name>
on:
push:
branches:
- server
jobs:
login:
runs-on: ubuntu-latest
steps:
- name: login to GitHub Container Registry
uses: docker/login-action@v1
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: create image from repository
run: docker build -t ghcr.io/${{ github.actor }}/<img-name> .
- name: push image to GitHub Container Registry
run: docker push ghcr.io/${{ github.actor }}/<img-name>:latest
通過login,但build失敗并出現以下錯誤:
The push refers to repository [ghcr.io/<user>/<img-name>]
2059ea815744: Preparing
8e3db2b6bb5e: Preparing
5aaeefe84632: Preparing
908e917b0525: Preparing
dff5b20a51e8: Preparing
407c3ac1f7e9: Preparing
e12889c39beb: Preparing
8d3ac3489996: Preparing
e12889c39beb: Waiting
8d3ac3489996: Waiting
407c3ac1f7e9: Waiting
denied: unauthenticated: User cannot be authenticated with the token provided.
Error: Process completed with exit code 1.
我查找了許多解決方案,但沒有一個有效。我錯過了什么嗎?
uj5u.com熱心網友回復:
問題是 docker 登錄在一個作業中,而構建、推送操作在另一個作業中。對于每個作業,都會運行一個單獨的 GitHub 運行器,一旦完成,它就會退出。此外,除非needs鍵指定,否則作業默認被認為是獨立的,并且無論如何都會同時運行,因此構建、推送在您的作業流程中順序運行和登錄在不同的 GitHub 運行器上并行進行。要使您的作業流運行,請按如下方式修改代碼:
name: <name>
on:
push:
branches:
- server
jobs:
dockerloginbuildpush:
runs-on: ubuntu-latest
steps:
- name: login to GitHub Container Registry
uses: docker/login-action@v1
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- uses: actions/checkout@v2
- name: create image from repository
run: docker build -t ghcr.io/${{ github.actor }}/<img-name> .
- name: push image to GitHub Container Registry
run: docker push ghcr.io/${{ github.actor }}/<img-name>:latest
所以現在你登錄,構建你的鏡像并成功推送,因為你已經登錄到你正在推送的機器上。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/421305.html
標籤:
