Continuous integration GitLab CI/CD:仅当特定扩展添加到文件夹和合并请求时触发管道
在我的gitlab repo上,只有当特定文件夹发生更改时,我才需要触发管道,而当它是合并请求时(两种情况都需要)。特别是在Continuous integration GitLab CI/CD:仅当特定扩展添加到文件夹和合并请求时触发管道,continuous-integration,gitlab,zip,gitlab-ci,gitlab-ci-trigger,Continuous Integration,Gitlab,Zip,Gitlab Ci,Gitlab Ci Trigger,在我的gitlab repo上,只有当特定文件夹发生更改时,我才需要触发管道,而当它是合并请求时(两种情况都需要)。特别是在.zip文件扩展名上,即在该文件夹中添加一个新的zip文件,创建一个合并请求,然后运行管道 这是我的初始管道yaml代码: trigger-ci-zip-file-only: stage: prebuild extends: - .prebuild - .preprod-tags variables: PROJECT_FOLDER: &q
.zip
文件扩展名上,即在该文件夹中添加一个新的zip文件,创建一个合并请求,然后运行管道
这是我的初始管道yaml代码:
trigger-ci-zip-file-only:
stage: prebuild
extends:
- .prebuild
- .preprod-tags
variables:
PROJECT_FOLDER: "my-specific-folder"
before_script:
- echo "Job currently run in $CI_JOB_STAGE"
- touch ${CI_PROJECT_DIR}/$PROJECT_FOLDER/prebuild.env
- cd $PROJECT_FOLDER
only:
refs:
- merge_requests
changes:
- ${PROJECT_FOLDER}/*.zip
artifacts:
reports:
dotenv: ${CI_PROJECT_DIR}/${PROJECT_FOLDER}/prebuild.env
allow_failure: false
如您所见,只有在zip文件和MR上的特定文件夹发生更改时,才会触发我的管道。但在这种状态下,创建MR或推送现有MR时,管道始终运行,即使特定文件夹中没有更改或添加
我还尝试对管道yaml代码进行如下更改:
only:
refs:
- merge_requests
changes:
- ${PROJECT_FOLDER}/**/*.zip
但管道一直在运行
我也试过这个:
trigger-ci-zip-file-only:
stage: prebuild
extends:
- .prebuild
- .preprod-tags
variables:
PROJECT_FOLDER: "my-specific-folder"
before_script:
- echo "Job currently run in $CI_JOB_STAGE"
- touch ${CI_PROJECT_DIR}/$PROJECT_FOLDER/prebuild.env
- cd $PROJECT_FOLDER
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
- changes:
- ${PROJECT_FOLDER}/**/*.zip
when: always
artifacts:
reports:
dotenv: ${CI_PROJECT_DIR}/${PROJECT_FOLDER}/prebuild.env
allow_failure: false
但管道也一直在运行
如何确保管道仅在合并请求时运行,并且仅在将.zip文件添加到特定文件夹时运行?是否正在尝试将上述管道合并到主文件夹中?这将不起作用,因为合并请求管道仅为合并请求创建,并且当zip文件夹处于打开状态时才创建changed@danielnelz实际上,管道的目的是在测试环境中创建第一个部署,该部署仅链接到合并请求,然后将合并到主分支中以在生产中部署。创建新的合并请求时,管道必须仅在添加新的.zip文件时启动,因为链接到此管道的作业必须只考虑此.zip文件