docker - 如何在 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,但这意味着将我的开发人员的设置更改为所有人都拥有该秘密文件,以便在本地构建他们的开发映像,我可以,但真的不想,做。
解决方案
我使用以下方法解决了它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
推荐阅读
- python - PermissionError: [WinError 5] 在 python 中运行时遇到访问被拒绝
- sparql - Wikidata获取链接项目的属性?
- python-3.x - Python3 cffi:有没有办法将两个独立的 ffi 合并为一个?
- javascript - 错误请求:open-elevation api 上的 json 无效
- windows - 从批处理变量中删除多个不必要字符的最简单方法
- serilog - 如何配置 Serilog sink wrapper 和 Wrapped sinks
- c++ - 虚幻引擎 4 蓝图如何禁用 ESC 键?
- python - 管理站点的主要目的是什么?
- ethereum - 如何使用 Web3.js 库将服务器连接到币安智能链?
- oauth-2.0 - 在 Azure API 管理 Oauth2 服务中指定受众参数