gitlab-ci ERROR: Job failed: exit status 1

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
    }

你可能感兴趣的:(gitlab-ci ERROR: Job failed: exit status 1)