如何在gitlab ci中使用规则
我正在尝试构建一个可以有条件执行的作业,这取决于如何在gitlab ci中使用规则,gitlab,gitlab-ci,pipeline,gitlab-ci-runner,Gitlab,Gitlab Ci,Pipeline,Gitlab Ci Runner,我正在尝试构建一个可以有条件执行的作业,这取决于WebClient中的文件或子目录是否在develope分支中使用规则进行了修改。如果仅在开发分支中发现更改,则将构建管道 目前,我在.gitlab ci.yml中得到的是 deploy_dev_client: stage: client tags: - my tags script: - '& cd WebClient' - 'npm rebuild node-sass' - 'npm inst
WebClient
中的文件或子目录是否在develope
分支中使用规则进行了修改。如果仅在开发分支中发现更改,则将构建管道
目前,我在.gitlab ci.yml
中得到的是
deploy_dev_client:
stage: client
tags:
- my tags
script:
- '& cd WebClient'
- 'npm rebuild node-sass'
- 'npm install @angular/cli@7.0.3'
- '& npm run build-release --max_old_space_size=$NODE_MEMORY_SIZE'
rules:
- changes:
- WebClient/**/*
when: always
- when: never
然而,在测试之后,我意识到每当我将本地回购协议中的内容推送到gitlab时,甚至在另一边的分支上,管道都会被执行
我曾尝试过仅使用:develope'
,但它会导致yaml invalid
错误,可能是因为如果已使用规则,则无法仅使用。我是否仍然可以使用规则
仅针对开发
分支机构?在此链接中:
他们写道,规则:更改
的工作方式应与仅/除
外完全相同。如果您只阅读了/除了,它有一些奇怪的地方:
将新分支或新标记推送到GitLab时,策略的计算结果始终为true
为了避免这种情况,并且只在开发分支上运行作业,您应该能够将if
与更改相结合:
deploy_dev_client:
stage: client
tags:
- my tags
script:
- '& cd WebClient'
- 'npm rebuild node-sass'
- 'npm install @angular/cli@7.0.3'
- '& npm run build-release --max_old_space_size=$NODE_MEMORY_SIZE'
rules:
- if: '$CI_COMMIT_REF_NAME== "development"'
changes:
- WebClient/**/*
when: always
(我还没有测试过这段代码,所以如果完全错误,请告诉我!)