gpt4 book ai didi

gitlab - 如何在 gitlab-ci 中使用规则

转载 作者:行者123 更新时间:2023-12-03 16:37:43 24 4
gpt4 key购买 nike

我正在尝试构建一个可以有条件地执行的作业,这取决于 WebClient 中的文件还是子目录|修改于 develop分支,使用 rules .如果仅在开发分支中发现更改,则将构建管道。

目前我在我的 .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 推送某些内容时都会执行管道,即使在另一侧的分支上也是如此。

我试过使用 only:-develop' ,但结果是 yaml invalid错误,可能是由于无法使用 only如果 rules已经被使用。无论如何我仍然可以使用 rules仅针对 develop分支?

最佳答案

在这个链接中:

https://docs.gitlab.com/ee/ci/yaml/#ruleschanges

他们写道 rules: changes应该像 only/except 一样工作.如果你读到 only/except ,它有一些奇怪的事情:

https://docs.gitlab.com/ee/ci/yaml/#using-onlychanges-without-pipelines-for-merge-requests

When pushing a new branch or a new tag to GitLab, the policy always evaluates to true.



为了解决这个问题并且只在开发分支上运行你的工作,你应该能够结合 ifchanges :
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

(我还没有测试过这段代码,所以如果有错,请告诉我!)

关于gitlab - 如何在 gitlab-ci 中使用规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59748024/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com