使用 docker 和 GitLab 在 CI/CD 管道中检测添加的包
Detect added packages in CI/CD pipeline using docker and GitLab
我目前正致力于通过 CI/CD 管道部署 R 应用程序。现在我有一个 DockerfileBase,它构建到一个包含项目所需的所有 R 库的图像。现在我想以某种方式集成在将库添加到 DockerfileBase 时以某种方式检测到的功能,然后才重建此图像。有人知道如何做这样的事情吗?
感谢您的帮助!
要运行一个特定文件(或多个文件)发生变化时的作业,我们可以使用rule:changes
关键字:
Build Docker Image:
stage: build
rules:
- if: $CI_PIPELINE_SOURCE == "push"
changes:
- Dockerfile
when: on_success
script:
- ./docker_build_script.sh # just an example that represents the steps you run in the job
让我们来看看 rules
语法:
- 首先我们检查
$CI_PIPELINE_SOURCE
Predefined Variable 是否为“push”。这可以是文档中定义的此变量的任何其他值,或者您可以完全跳过它:
rules:
changes:
- Dockerfile
when: on_success
- 规则中的
changes
语法表示在最新提交中“如果数组中的一个或多个文件发生更改,则评估为 true
”。
when: on_success
的意思是“只有 运行 此作业如果所有先前的作业都成功通过”。这也可以是 when: manual
、when: always
,或者完全不使用,因为默认值为 on_success
。如果我们的一个规则未评估为 true
,则它等于 when: never
,因此作业不会 运行.
script
部分与您当前使用的一样。
我目前正致力于通过 CI/CD 管道部署 R 应用程序。现在我有一个 DockerfileBase,它构建到一个包含项目所需的所有 R 库的图像。现在我想以某种方式集成在将库添加到 DockerfileBase 时以某种方式检测到的功能,然后才重建此图像。有人知道如何做这样的事情吗?
感谢您的帮助!
要运行一个特定文件(或多个文件)发生变化时的作业,我们可以使用rule:changes
关键字:
Build Docker Image:
stage: build
rules:
- if: $CI_PIPELINE_SOURCE == "push"
changes:
- Dockerfile
when: on_success
script:
- ./docker_build_script.sh # just an example that represents the steps you run in the job
让我们来看看 rules
语法:
- 首先我们检查
$CI_PIPELINE_SOURCE
Predefined Variable 是否为“push”。这可以是文档中定义的此变量的任何其他值,或者您可以完全跳过它:
rules:
changes:
- Dockerfile
when: on_success
- 规则中的
changes
语法表示在最新提交中“如果数组中的一个或多个文件发生更改,则评估为true
”。 when: on_success
的意思是“只有 运行 此作业如果所有先前的作业都成功通过”。这也可以是when: manual
、when: always
,或者完全不使用,因为默认值为on_success
。如果我们的一个规则未评估为true
,则它等于when: never
,因此作业不会 运行.script
部分与您当前使用的一样。