问题描述
我正在尝试在 bitbucket 管道中设置持续部署管道。以下是管道代码:
export GCLOUD_API_KEY_FILE=~/.gcloud-api-key.json
echo $GOOGLE_CONTAINER_REGISTRY_KEY | base64 -d > $GCLOUD_API_KEY_FILE
gcloud auth activate-service-account --key-file $GCLOUD_API_KEY_FILE
gcloud auth configure-docker --quiet
export DOCKER_IMAGE_NAME=eu.gcr.io/project-name/image-name:$BITBUCKET_COMMIT
docker build -t $DOCKER_IMAGE_NAME -f docker/beta/Dockerfile .
docker push $DOCKER_IMAGE_NAME
gcloud config set project project-name
gcloud config set compute/zone europe-west3-a
gcloud compute instances update-container instance-name --container-image $DOCKER_IMAGE_NAME
/bin/bash ./scripts/deploy/beta/test.sh
在 test.sh 中,我检查 gcloud 实例 ssh 是否已启动,如果已启动,则执行部署后脚本:
test.sh
COUNTER=12
POST_DEPLOY="docker exec klt-container-vgpx /application/scripts/deploy/beta/post-deploy.sh"
while [ $COUNTER -gt 0 ]
do
gcloud compute ssh --verbosity=error --zone="europe-west3-a" "container-registry-and-compute@instance-name" --command="echo instance Now up"
if [ $? -eq 0 ]
then
gcloud compute ssh container-registry-and-compute@instance-name --verbosity=info --command="$POST_DEPLOY"
exit 0
fi
sleep 10s
COUNTER=$((COUNTER-1))
done
echo "ERROR: VM instance SSH service is not available"
exit 1
部署后.sh
#!/bin/sh
#Creates database,loads migrations and fixtures
/application/bin/console doctrine:database:drop --if-exists --force --env=dev
/application/bin/console doctrine:database:create --env=dev
/application/bin/console doctrine:schema:create --env=dev
/application/bin/console doctrine:migrations:migrate --no-interaction --env=dev --quiet
/application/bin/console doctrine:fixtures:load --no-interaction --append --env=dev
问题是没有加载迁移和夹具。 Bitbucket 管道成功运行,但没有执行脚本的所有命令。它只是创建数据库和架构。
如果我在没有 gcloud compute instances update-container 命令的情况下启动管道,post-deploy.sh 脚本会成功执行每个命令。
如果我在 gcloud compute instances update-container 命令之后添加 120s 睡眠也能成功,所以我认为在执行脚本时可能所有服务都没有加载,但问题是是,为什么要创建数据库和模式?我可以在 bitbucket 管道中看到以下日志:
Dropped database `name-db` for connection named default
Created database `name-db` for connection named default
! [CAUTION] This operation should not be executed in a production environment!
Creating database schema...
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)