为了能够在Google平台上创建我的资源,我使用了shell脚本。
看起来是这样的:
REGION=us-east1
# Create buckets
FILES_SOURCE=${DEVSHELL_PROJECT_ID}-source-$(date +%s)
gsutil mb -c regional -l ${REGION} gs://${FILES_SOURCE}
FUNCTIONS_BUCKET=${DEVSHELL_PROJECT_ID}-functions-$(date +%s)
gsutil mb -c regional -l ${REGION} gs://${FUNCTIONS_BUCKET}
我还为我的项目启用了一个云构建,其中定义了一个触发器。我的替换变量的一些值应该等于上面脚本中的、FILES_SOURCE、和。如果在执行shell脚本之前启用了云构建,是否可以从shell脚本中以某种方式分配这些值(及其键)?
我可以看到,我们有gcloud构建接口,但它似乎没有这样的选择。
发布于 2021-01-05 18:58:45
您必须引用用户定义的替换变量,因为默认替换是由云构建自动为您定义的。关于gcloud builds
接口,您可以设置--substitutions
标志来指定您的用户定义的变量,但是从您的示例来看,这些变量似乎不是固定的。
不幸的是,如果值来自shell脚本,您将无法指定用户定义的替换变量。但是,有一个解决办法,通过将值保存在文件上,然后根据需要读取shell脚本变量,从而将整个构建步骤持久化。
您还没有指定打算如何使用这些变量,但下面是一个示例:
build.sh
REGION=us-east1
DEVSHELL_PROJECT_ID=sample-proj
FUNCTIONS_BUCKET=${DEVSHELL_PROJECT_ID}-functions-$(date +%s)
FILES_SOURCE=${DEVSHELL_PROJECT_ID}-source-$(date +%s)
# Store variables on a file
echo $FUNCTIONS_BUCKET > /workspace/functions-bucket &&
echo $FILES_SOURCE > /workspace/files-source
echo "Saved values."
cloudbuild.yaml
steps:
- id: "Read script and store values"
name: 'gcr.io/cloud-builders/gcloud'
entrypoint: 'bash'
args: ['./build.sh']
- id: "Read Values"
name: gcr.io/cloud-builders/gcloud
entrypoint: 'bash'
args:
- -c
- |
# Read from "/workspace"
echo "First we saved " $(cat /workspace/functions-bucket) &&
echo "Then we saved " $(cat /workspace/files-source)
注意:我们使用
/workspace
,因为Cloud默认使用它作为工作目录。
参考资料:https://medium.com/google-cloud/how-to-pass-data-between-cloud-build-steps-de5c9ebc4cdd
https://stackoverflow.com/questions/65585489
复制相似问题