使用 github 操作拒绝资源的权限 artifactregistry.repositories.uploadArtifacts

Nik*_*mar 27 google-cloud-platform github-actions google-artifact-registry

我正在尝试将 docker 容器推送到 GCP 上的 ArtifactRegistry,但我在步骤中遇到错误Push Docker Image to Artifact Registry

拒绝:资源“projects/PROJECT_ID/locations/asia-south1/repositories/images”的权限“artifactregistry.repositories.uploadArtifacts”被拒绝(或者可能不存在)错误:进程已完成,退出代码为1。

name: Build image and push to Artifact Registry of GCP
on: 
  push:
    branches: 
      - master
 
jobs:
  build-push-artifact:
    name : Build and push Artifact Registry
    runs-on: ubuntu-latest

    steps:
    - name: Checkout
      uses: actions/checkout@v2

    - id: 'auth'
      uses: 'google-github-actions/auth@v1'
      with:
        credentials_json: '${{ secrets.ACCOUNT_KEY }}'

    - name: 'Set up Cloud SDK'
      uses: 'google-github-actions/setup-gcloud@v1'

    - name: 'Use gcloud CLI'
      run: 'gcloud info'

    - name: build Docker Image
      run: docker build -t MY_IMAGE:latest .
    
    - name: Configure Docker Client of Gcloud
      run:  |-
        gcloud auth configure-docker --quiet
        gcloud auth configure-docker asia-south1-docker.pkg.dev --quiet
    
    - name: Push Docker Image to Artifact Registry 
      env:
        GIT_TAG: v0.1.0
      run:  |-
        docker tag MY_IMAGE:latest asia-south1-docker.pkg.dev/PROJECT_ID/images/MY_IMAGE:latest
        docker tag MY_IMAGE:latest asia-south1-docker.pkg.dev/PROJECT_ID/images/MY_IMAGE:$GIT_TAG
        docker push asia-south1-docker.pkg.dev/PROJECT_ID/images/MY_IMAGE:latest
        docker push asia-south1-docker.pkg.dev/PROJECT_ID/images/MY_IMAGE:$GIT_TAG
Run Code Online (Sandbox Code Playgroud)

我还使用服务电子邮件将 Artifact Registry Write 主体添加到存储库。除最后一步外,所有其他步骤均成功执行。我该如何修复它?

Rom*_*nko 57

好吧,我现在花了很多时间在这上面,有两种可能的解决方案:

  • 登录 gcloud:gcloud auth login
  • 配置docker:(gcloud auth configure-docker europe-west1-docker.pkg.dev确保指定适当的区域)

第二个为我做到了。

  • 很好的答案。然而,我需要使用“欧洲”区域来推送到 ArtifactRegistry,这让我有点困惑。如果其他人遇到同样的问题,错误是“被拒绝:资源“projects/<PROJECT ID>/locations/europe/repositories/eu.gcr.io”上的权限“artifactregistry.repositories.uploadArtifacts”被拒绝”,我修复了它与:`gcloud auth configure-docker europe-docker.pkg.dev` (3认同)
  • 哇不敢相信我只是没有登录! (2认同)

Adi*_*rma 8

最后这对我有用。我也面临着上述 Artifact 注册表问题。

所以在执行docker Push之前,我做了身份验证。文档中没有确切提到此步骤,但这对我有用。

gcloud auth print-access-token | docker login -u oauth2accesstoken --password-stdin https://us-central1-docker.pkg.dev
Run Code Online (Sandbox Code Playgroud)

注意:- 更改您的区域。