我正在使用Google cloud functions
yaml文件部署gitlab.ci
(python)。
我的目标是更新现有的云功能(通过删除和重新部署它)或基于云功能(和区域)的名称作为输入参数来部署新功能。
下面是我写的脚本:
#!/usr/bin/env bash
FUNCTION_NAME=$1
REGION=$2
touch functionslist.txt
gcloud beta functions list >> functionslist.txt
isInFile=$(cat functionslist.txt | grep -c FUNCTION_NAME)
if [ $isInFile -eq 0 ]; then
echo "New Cloud Function Name, hence it shall be deployed "
else
echo "Cloud Function Updated, hence it shall be deleted and redeployed"
gcloud beta functions delete ${FUNCTION_NAME} --region${REGION}
fi
此脚本在以下阶段部署中调用:
deploy:
stage: deploy
image: google/cloud-sdk
script:
- apt-get update && apt-get --only-upgrade install kubectl google-cloud-sdk
- gcloud config set project $GCP_PROJECT_ID
- chmod +x delete_function.sh
- ./delete_function.sh ${FUNCTION_NAME} ${REGION}
- gcloud beta functions deploy ${FUNCTION_NAME} --memory ${MEMORY} --stage-bucket ${STAGE_BUCKET} --region ${REGION} --runtime ${RUNTIME} --trigger-http
我面临的问题是,每次我启动更新的云功能的管道时,总是考虑第一种情况,因此即使云功能已经存在,也会显示“新的云功能名称,因此将被部署”。我应该看到以下消息:“云功能已更新,因此应将其删除并重新部署”。
我编写的shell脚本可能是错误的。解决这个问题的任何想法。