无论项目分支等于开发时,我都试图强制管道跳过正在运行的作业。我创建了自定义变量名称$CURRENT_BRANCH
,该名称是从预定义变量$CI_COMMIT_REF_NAME
- export CURRENT_BRANCH=`echo ${CI_COMMIT_REF_NAME} | awk -F '/' '{print $1}'`
$CURRENT_BRANCH
将通过第一阶段,并将保存在工件中
- >
if [ ${CURRENT_BRANCH} == 'feature' ]; then
export CURRENT_BRANCH="feature"
export FEATURE_NAME=`echo ${CI_COMMIT_REF_NAME} | awk -F '/' '{print $2}'`
echo "FEATURE_NAME=${FEATURE_NAME}" >> info.env
echo "PROJECT_NAME=${FEATURE_NAME}" >> info.env
else
export CURRENT_BRANCH=${CURRENT_BRANCH}
echo "PROJECT_NAME=${CURRENT_BRANCH}" >> info.env
fi
- echo "CURRENT_BRANCH=${CURRENT_BRANCH}" >> info.env
artifacts:
reports:
dotenv: info.env
然后在下一阶段到最后阶段,例如,我尝试跳过使用only/except
和rules/when
运行管道,
build_image:
image: docker:19.03
services:
- docker:dind
stage: release
only:
variables:
- $CURRENT_BRANCH != "develop"
以及使用rules
和条件
build_image:
image: docker:19.03
services:
- docker:dind
stage: release
rules:
- if: '$CURRENT_BRANCH == "develop"'
when: never
管道仍在运行。我想念什么吗?
答案 0 :(得分:0)
您提供作业build_image
的完整代码吗?
build_image
作业需要您第一份作业的info.env工件。您可以尝试添加吗?
needs:
- job: '<first-job-name>'
artifacts: true