lin*_*lin 10 continuous-integration gitlab gitlab-ci
我们正面临一个问题,我们需要在gitlab CI中运行一个特定的工作.我们目前还不知道如何解决这个问题.我们在我们中定义了多个作业,.gitlab-ci.yml但我们只需要在管道中运行一个作业.我们怎么能只运行一份工作,job1或者job2?我们不能在我们的环境中使用tags或branches作为软件开关.
before_script:
- docker info
job1:
script:
- do something
job2:
script:
- do something
Run Code Online (Sandbox Code Playgroud)
我们过去遇到了同样的问题,我正在与您分享我们的解决方案.
when: manual将始终显示您的所有作业.job 1,job 2而job 4但不是job3.job 3在特定情况下运行,或者仅在您决定运行它时运行.helloTag.1,helloTag.2,helloTag.3...等等.如果我们在develop或master(或其他分支),我们将有3个阶段(阶段1,阶段2,阶段4)
请注意管道中不存在第三个作业
转到"存储库" - >"标签" - >"新标签"
为标记指定一个与正则表达式相同的名称
如果我们的标签名称以"helloTag"开头,我们将有1个阶段(第3阶段)
请注意这里没有其他阶段
.gitlab-ci文件示例stages:
- myStage1
- myStage2
- myStage3
- myStage4
This is my first stage:
stage: myStage1
before_script:
- echo "my stage 1 before script"
script:
- echo "my stage 1 script"
except:
- /^helloTag.*$/
This is my second stage:
stage: myStage2
before_script:
- echo "my stage 2 before script"
script:
- echo "my stage 2 script"
except:
- /^helloTag.*$/
This is my third stage:
stage: myStage3
before_script:
- echo "my stage 3 before script"
script:
- echo "my stage 3 script"
only:
- /^helloTag.*$/
This is my fourth stage:
stage: myStage4
before_script:
- echo "my stage 4 before script"
script:
- echo "my stage 4 script"
except:
- /^helloTag.*$/
Run Code Online (Sandbox Code Playgroud)
希望这对你有所帮助.
只需添加一个when: manual您不想运行的作业.
这些作业仍将出现在您的管道中,但不会运行,除非有人通过Web界面"手动"启动它们,因此名称.
以下是有关此内容的更多信息:https://docs.gitlab.com/ce/ci/yaml/README.html#when
如果你正在寻找更多"可编程"的东西,让我们说运行job1或者job2根据分支名称或标签运行,那么你应该看一下only和except关键字:https://docs.gitlab.com/ce/ci /yaml/README.html#only-and-except
您可以将gitlab变量表达式与only / except一起使用,如下所示,然后根据需要将变量传递到管道执行中。
此示例默认情况下同时运行两个作业,但是如果为“ firstJobOnly”传递“ true”,则它仅运行第一个作业。
variables:
firstJobOnly: 'false'
before_script:
- docker info
job1:
script:
- do something
job2:
script:
- do something
except:
variables:
- $firstJobOnly =~ /true/i
Run Code Online (Sandbox Code Playgroud)
tags开关branches。由于 GitLab CI 的限制太多,我们最终切换到了另一个“真正的”CI。如果您想在不同的过程中运行一些自定义作业,GitLab CI 是不可行的。我真的很欣赏这里的两个答案。我确信他们会帮助其他用户管理这些东西。不幸的是,在我们的例子中,我们无法使用tags,commit messages或branches作为软件开关。
我们仍在寻找这个问题的答案。请随意提供其他方法来解决此问题。一旦正确答案出现,我就会标记它。此外,对这个问题的赏金并没有得到正确的答案。
| 归档时间: |
|
| 查看次数: |
7728 次 |
| 最近记录: |