GitLab CI流水线报错‘jobs变量配置需实现script/trigger’求修复(Laravel)
问题解决:GitLab CI报错“jobs variables config should implement a script: or a trigger: keyword”
错误根源
你配置文件里的全局变量块用了大写的Variables,GitLab CI会把它识别成一个job,但这个“job”没有定义script或trigger字段,因此触发该报错。GitLab CI的全局变量关键字必须是小写的variables。
额外需要修正的细节
除了关键字大小写问题,配置里还有几个拼写/格式错误会导致后续执行失败:
- 变量
TAG_LATEST和TAG_COMMIT里的环境变量引用不完整,漏了$符号 DOCKER DRIVER变量名包含空格,需改为下划线分隔的DOCKER_DRIVERdocker login命令里的CI_BUILD-TOKEN是错误变量名,正确为CI_BUILD_TOKENID_RSA需用变量引用$ID_RSA,且该变量要在GitLab项目的保密变量中配置- 生产环境的
url字段需填写实际访问地址
修正后的完整配置
before_script: - echo "$ENV_CONTENT" >> .env stages: - build - prod_deployment variables: TAG_LATEST: $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_NAME:latest TAG_COMMIT: $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_NAME:$CI_COMMIT_SHORT_SHA ENV_CONTENT: $prodenv DOCKER_DRIVER: overlay2 DOCKER_TLS_CERTDIR: "/certs" build: image: docker:latest stage: build services: - docker:19.03.0-dind script: - docker build -t $TAG_COMMIT -t $TAG_LATEST . - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY - docker push $TAG_COMMIT - docker push $TAG_LATEST prod_deployment: image: alpine:latest stage: prod_deployment tags: - prod_deployment script: - chmod og= $ID_RSA - apk update && apk add openssh-client - ssh -i $ID_RSA -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP "docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY" - ssh -i $ID_RSA -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP "docker pull $TAG_COMMIT" - ssh -i $ID_RSA -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP "docker container rm -f laravel_cicd || true" - ssh -i $ID_RSA -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP "docker run -d -p 8080:80 --name laravel_cicd $TAG_COMMIT" environment: name: production url: http://$SERVER_IP:8080 rules: - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH when: manual
内容的提问来源于stack exchange,提问作者hassan
相关产品推荐
相关产品推荐

