gitlab-ci - gitlab-ci,从跑步者推动时如何防止另一个触发器
问题描述
这是管道的工作原理
- 当推主时(按预期工作):构建项目 && 将 jar 推到开发
创建标签时(无法按预期工作):
- 构建项目
- 增加 pom.xml 版本并将 pom.xml 推送到
- 将 jar 推送到服务器
但是当我执行第 2 步时,它会重新触发 CI 中的另一个构建。
在这种情况下,我如何推动并避免触发工作?
这是完整的 gitlab-ci.yml:
image: maven:3.6.0-jdk-10
variables:
APP_NAME: demo
MAVEN_OPTS: -Dmaven.repo.local=/cache/maven.repository
stages:
- build
- deploy_dev
- deploy_prod
build:
stage: build
script:
- mvn package -P build
- mv target/*.jar target/$APP_NAME.jar
artifacts:
untracked: true
deploy_dev:
before_script:
- 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
- eval $(ssh-agent -s)
- ssh-add <(echo "$SSH_PRIVATE_KEY")
- '[[ -f /.dockerenv ]] && mkdir -p ~/.ssh && echo "$KNOWN_HOST" > ~/.ssh/known_hosts'
- mkdir -p ~/.ssh
- '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
stage: deploy_dev
environment:
name: dev
url: http://devsb01:9999
dependencies:
- build
only:
- master
except:
- tags
script:
- ssh root@devsb01 "service $APP_NAME stop"
- scp target/$APP_NAME.jar root@devsb01:/var/apps/$APP_NAME/
- ssh root@devsb01 "service $APP_NAME start"
deploy_prod:
before_script:
- 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
- eval $(ssh-agent -s)
- ssh-add <(echo "$SSH_PRIVATE_KEY")
- '[[ -f /.dockerenv ]] && mkdir -p ~/.ssh && echo "$KNOWN_HOST" > ~/.ssh/known_hosts'
- mkdir -p ~/.ssh
- '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
stage: deploy_prod
environment:
name: production
dependencies:
- build
only:
- tags
except:
- branches
script:
- mvn versions:set -DnewVersion=$CI_COMMIT_REF_NAME
- git config --global user.name "gitlab-ci"
- git config --global user.email "gitlab-ci@unc.nc"
- git --version
- git status
- git add pom.xml
- git commit -m "increment pom version"
- git push http://gitlab-ci:${GITLABCI_PWD}@gitlab.unc.nc/dsi-infogestion/demo.git HEAD:master
- git status
- ssh root@prodsb01 "service $APP_NAME stop"
- scp target/$APP_NAME.jar root@prodsb01:/var/apps/$APP_NAME/
- ssh root@prodsb01 "service $APP_NAME start"
解决方案
我在提交消息中有字符串'[ci skip]',它可以工作:
- git commit -m "增加 pom 版本 [ci 跳过]"
推荐阅读
- apache - 使用 Cloudflare 代理通过 htaccess 允许 IP
- curl - 如何在 Lambda for Node 12.x (Amazon2) 中获取 curl
- android - 带有滑动手势的运动布局 + SwipeRefreshLayout + RecyclerView 错误向上滚动的错误行为
- python - 使用 OpenCV 将图像元素的大小调整为其他图像上类似对象的大小
- node.js - 在谷歌云上的 nodejs 上使用导入
- plotly - Dash Plotly 中的烛台和折线图,随回调更新,但消失
- java - 我在使用 java 中的扫描仪读取字符串输入时遇到问题
- javascript - 允许在反应元素中的孩子
- python - 使用 Python 获取 json 对象的名称
- java - 如何使用 Java 在字符串中多次转义特定字符