我有平常的
library(dplyr)
data <- data %>%
mutate(parameter = droplevels(factor(parameter,
levels = c(v1, sort(setdiff(parameter, v1))))))
工作正常
现在我需要做一些完全不相关的事情——每半夜下载一堆东西 我设置了预定的作业,但它强制需要一个阶段
但如果我添加一个阶段“download_stuff”,它显然将成为该管道的一部分,意味着一些连续的步骤
我不想这些,下载完全不相关,不应该是该序列的一部分
基本上我想要这个
stages:
- build
- test
- deploy
有什么办法可以做到这一点,其他人想要强行将其添加到阶段,然后到处pipeline_a:
stages:
- build
- test
- deploy
pipeline_b:
stages:
- "download_stuff"
?似乎是一个很大的设计缺陷,除非我愚蠢地遗漏了一些明显的东西
答案 0 :(得分:1)
目前无法定义两个单独的管道。您可以包含来自其他管道定义的阶段和作业,但在运行时它仍被视为一个管道。阻止某些作业按计划运行的唯一方法是使用您提到的 only
或更新的语法 rules
。
使用 only
,您可以使某些作业仅在预定时运行:
download_job:
stage: downloads
only: schedules
..
对于构建/测试/部署作业,反之亦然:
build_job
stage: build
except: schedules
rules
关键字比 only
/except
新,可让您在需要时编写更复杂的条件。
download_job:
stage: downloads
when: never
rules:
- if: "$CI_PIPELINE_SOURCE == 'schedules'"
when: always
allow_failure: true
start_in: 3 hours
- if: "$CI_COMMIT_REF_NAME == 'main'"
when: manual
当有多个 if
时,它们会被 OR 运算在一起,但您可以使用 ||
和 &&
内联来制定更复杂的规则:
...
rules:
- if: "$CI_PIPELINE_SOURCE == 'schedule' && $GITLAB_USER_EMAIL == 'myemail@me.com'
when: manual
..