使用 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 语法:

  1. 首先我们检查 $CI_PIPELINE_SOURCE Predefined Variable 是否为“push”。这可以是文档中定义的此变量的任何其他值,或者您可以完全跳过它:
rules:
  changes: 
    - Dockerfile
  when: on_success
  1. 规则中的 changes 语法表示在最新提交中“如果数组中的一个或多个文件发生更改,则评估为 true”。
  2. when: on_success 的意思是“只有 运行 此作业如果所有先前的作业都成功通过”。这也可以是 when: manualwhen: always,或者完全不使用,因为默认值为 on_success。如果我们的一个规则未评估为 true,则它等于 when: never,因此作业不会 运行.
  3. script 部分与您当前使用的一样。