如何解决如何在合并请求的 gitlab CI 中应用 if else 条件?
我正在尝试使用 gitlab CI 实现以下流程。因为我将拥有多个分支,例如 (dev-*,release- *,feature- *) 并愿意管理它们。最初我只想知道我是否可以实现这个流程。我尝试在 gitlabCI 中使用“if”语句,但由于我刚刚开始使用它,我无法创建和理解 gitlab 提供的功能。 gitlabCI 中的欲望流:
if (MR from feature* to Dev OR MR from feature* to release)
{
echo "Unit Testing";
echo "Code quality analysis";
}
if (feature* MERGE to Dev)
{
echo "Build Docker image with tag $Build_ID";
}
if (feature* MERGE to Release:<release_version>)
{
echo "Build docker image with $release_version"
}
MR
指合并请求。
feature
、dev
、release
是分支。
解决方法
我在another post上写了一个完整的答案,您可以查看。但总而言之,您可以使用 workflow
和 rules
来控制管道和阶段的执行流程。您可以在 Gitlab CI workflow 和 Gitlab CI rules 页阅读更多关于它们的信息。
在这种情况下,您可以像以下示例一样使用 rules
。仅当以下 test
语句之一评估为真时,运行程序才会触发 if
阶段。
test:
stage: test
script:
- echo "Unit Testing";
- echo "Code quality analysis";
rules:
if: '$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME =~ /^feature/ && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == dev' # Merge request from feature to dev
if: '$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME =~ /^feature/ && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == release' # Merge request from feature to release
...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。