gitlab-ci中执行shell脚本报
ERROR: Job failed: exit status 1
的错误,首先看一下shell脚本
.auto_devops: &auto_devops |
function deploy_production(){
echo '部署production'
SERVICE_NAME=$(docker service ls |grep $PROJECT_NAME| awk '{print $2}')
if [ "$SERVICE_NAME" = "$PROJECT_NAME" ]
then
docker service update --image $REGISTRY_URL/$PROJECT_NAME:$CI_PIPELINE_ID $PROJECT_NAME
else
docker stack deploy -c deploy.dev.yml Youruncle
fi
}
在devops的时候我们首先判断一下swarm中是否存在当前服务,如果存在需要执行update,如果不存在执行deploy,问题就出现在这句
SERVICE_NAME=$(docker service ls |grep $PROJECT_NAME| awk '{print $2}')
这句代码当没有查找到内容的时候gitlab-ci会返回一个code 1造成shell退出,网上查到貌似是gitlab的一个问题,所以代码做如下改造即可
.auto_devops: &auto_devops |
function deploy_production(){
echo '部署production'
SERVICE_NAME=$(docker service ls |grep $PROJECT_NAME| awk '{print $2}') && true=0 || false=1
if [ "$SERVICE_NAME" = "$PROJECT_NAME" ]
then
docker service update --image $REGISTRY_URL/$PROJECT_NAME:$CI_PIPELINE_ID $PROJECT_NAME
else
docker stack deploy -c deploy.dev.yml Youruncle
fi
}
网友评论