首页 > 解决方案 > 如何在 Google Cloud Build 中为 Kaniko 使用非执行入口点(启用构建参数定义)

问题描述

在 GCB 中使用 Kaniko的说明exec使用kaniko 项目构建器的形式,如下所示:

  - id: 'Build (with Kaniko Cache)'
    name: 'gcr.io/kaniko-project/executor:latest'
    args:
      - --destination=$_GCR_HOSTNAME/$PROJECT_ID/$REPO_NAME:$SHORT_SHA
      - --cache=true
      - --cache-ttl=6h

但是我用它来替换 docker build,在其中我绕过了exec使用形式,以便注入构建 arg(来自 Secret Manager 的访问令牌),如此此处所述。

  - id: 'Build'
    name: gcr.io/cloud-builders/docker
    entrypoint: 'bash'
    args:
      - '-c'
      - |
        docker build --cache-from $_GCR_HOSTNAME/$PROJECT_ID/$REPO_NAME:$SHORT_SHA --build-arg PERSONAL_ACCESS_TOKEN_GITHUB=$(cat decrypted-pat.txt) -t $_GCR_HOSTNAME/$PROJECT_ID/$REPO_NAME:$SHORT_SHA .

我试过定义一个bash入口点,但没有找到,所以我被卡住了。甚至可以运行非执行表单吗?

注意:可以在容器内的文件中访问秘密,而不是通过构建 arg,但这意味着将我的开发人员的设置更改为所有人都拥有该秘密文件,以便在本地构建他们的开发映像,我可以,但真的不想,做。

标签: dockergoogle-cloud-platformgoogle-cloud-buildkaniko

解决方案


我使用以下方法解决了它docker run

- id: Build
  name: gcr.io/cloud-builders/docker
  entrypoint: /bin/bash
  args:
  - -c
  - |
   docker run \
      --network=cloudbuild \
      -v /workspace:/workspace \
        gcr.io/kaniko-project/executor:latest \
          --dockerfile /workspace/Dockerfile \
          --build-arg=GITHUBTOKEN=$$GITHUBTOKEN \
          --destination=gcr.io/$PROJECT_ID/myapp:$SHORT_SHA \
          --cache=true \
          --context dir:///workspace/
  secretEnv: ['GITHUBTOKEN']

availableSecrets:
  secretManager:
    - versionName: projects/$PROJECT_ID/secrets/github_machine_user_pat/versions/latest
      env: GITHUBTOKEN

推荐阅读