continuous-integration - 如何定期运行 gitlab stage?

标签 continuous-integration gitlab

如何定期运行 gitlab 阶段?我知道此处记录的管道计划:https://docs.gitlab.com/ee/ci/pipelines/schedules.html .我只对运行分支的特定测试阶段感兴趣。问题是我想要定位的分支涉及很多其他阶段。一种选择可能是在脚本部分引入一个变量,表示如果为真,则执行脚本。但是,这可能很麻烦,并且需要对所考虑的特定分支的 ci 文件的所有阶段进行大量更改。

最佳答案

您可以使用 only/except 控制作业何时运行关键字,或更高级的 rules关键字以及管道源变量。
示例与 only :

scheduled_test:
  stage: tests
  image: my_image:latest
  only:
    - schedules
  script:
    - ./run_some_things.sh
only关键字允许您定义一些条件,表示“只有在这些条件为真时才运行此作业”,并提供了检查管道源的速记。 schedules意味着管道是从计划启动的,而不是从推送、触发器等开始的。except关键字正好相反。如果它有 except: schedules除非已安排,否则该作业将始终运行。您可以查看 only/except 的完整文档。这里的关键词:https://docs.gitlab.com/ee/ci/yaml/#onlyexcept-basic
从 Gitlab 12.3 版开始,rules关键字扩展了 only/except 的可能性选项。我们可以从上面的例子中得到相同的结果,如下所示:
scheduled_test:
  stage: tests
  image: my_image:latest
  rules:
    - if: '$CI_PIPELINE_SOURCE == "schedule"'
      when: always
    - if: '$CI_PIPELINE_SOURCE == "push"'
      when: never
在这个例子中,我们检查预定义的变量 $CI_PIPELINE_SOURCE看看是什么启动了这条管道。如果是"dispatch",我们总是运行这个工作。例如,如果源是“push”(因此管道是由 git push 命令启动的),则此作业将永远不会运行。与 rules关键字,所有 if语句被 OR 运算在一起,所以上面的例子是,if the source is schedule, always run OR if the source is a push, never run .但是,如果出现以下情况,您可以将多个条件 AND 放在一起:
rules:
  - if: '$CI_PIPELINE_SOURCE == "push" && $MY_CUSTOM_VARIABLE == true'
    when: manual
您可以阅读 rules 的完整文档。这里的关键词:https://docs.gitlab.com/ee/ci/yaml/#rules

关于continuous-integration - 如何定期运行 gitlab stage?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65910754/

相关文章:

git - 应该使用 Git 来存储持续集成构建吗?

c++ - Sonar 无法读取我的 CPPUnit 报告

.net - 编写自己的持续集成服务器时要考虑的事项?

git - 如何确定一个分支是否是 jenkins 文件中的默认分支?

从远程仓库 pull 时,GitLab 镜像功能不起作用

亚搏体育应用程序 CI/CD : Run jobs only when files in a specific directory have changed

macos - 无法在 Mac 上运行 Jenkins

Gitlab-runner 更改 builds_dir

gitlab - 使用 access_token 推送到存储库

git - HTTP 基本 : Access denied fatal: Authentication failed