1

我正在尝试使用 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是分支。

4

1 回答 1

0

我在另一个帖子上写了一个完整的答案,您可以查看。但总而言之,您可以使用workflowandrules来控制管道和阶段的执行流程。你可以阅读更多关于他们的 Gitlab CI 工作流程Gitlab CI 规则页面。

在这种情况下,您可以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
...
于 2021-06-04T08:08:36.057 回答