在 gitlab 计划管道中运行特定作业

S7H*_*S7H 4 gitlab gitlab-ci

我编写了一个 gitlab-ci.yml 文件,其中包含多个 gitlab 作业和阶段。当代码合并到特定的 git 分支并且安排一些作业时,某些作业会在该分支上运行。

我想在 Gitlab 中创建一个计划的 CI/CD 管道,它只包含特定的计划作业,而不包含所有计划的作业。那可能吗?

例如,这是我的 gitlab-ci.yml 文件。

stages:
  build
  test
  deploy
  scheduled-test-1
  scheduled-test-2
  scheduled-test-3

build:
  script:
  - echo $Service_Version
  only:
  - develop
  except:
  - schedules

test:
  script:
  - echo $Service_Version
  only:
  - develop
  except:
  - schedules

deploy:
  script:
  - echo $Service_Version
  only:
  - develop
  except:
  - schedules

scheduled-test-1:
  script:
  - echo $Service_Version
  only:
  - schedules

scheduled-test-2:
  script:
  - echo $Service_Version
  only:
  - schedules

scheduled-test-3:
  script:
  - echo $Service_Version
  only:
  - schedules
Run Code Online (Sandbox Code Playgroud)

现在,当我创建计划时,所有三个计划测试都会在管道上看到。我想创建三个计划,分别包含scheduled-test-1、scheduled-test-2和scheduled-test-3。这怎么可能?

syt*_*ech 6

使用only:variables:(或等效的rules:)并在您的计划中设置这些变量。

例如,如果您设置以下内容:

job_x:
  only:
    variables:
      - $SCHEDULE_VARIABLE_X
Run Code Online (Sandbox Code Playgroud)

然后,当您创建计划时,您可以在该单独的计划中设置变量SCHEDULE_VARIABLE_X,这将允许您控制是否job_x运行该计划。

您可以相应地设置only:variables:每个作业和每个计划的变量以获得所需的控制。