Configuration GitLab:从作业脚本影响作业配置

Configuration GitLab:从作业脚本影响作业配置,configuration,gitlab,gitlab-ci,Configuration,Gitlab,Gitlab Ci,我有一个GitLab CI配置,基本上如下所示: build: stage: build image: my_image:latest script: - /var/scripts/build_python_package.sh 它的设计非常简单——其思想是,我们组织中的任何人都可以创建一个包含Python包的新存储库,将这个最小的.gitlab ci.yml管道配置放在其中,这就支持了我们构建和测试Python包的“标准过程”,develope和master分支发布到我们

我有一个GitLab CI配置,基本上如下所示:

build:
  stage: build
  image: my_image:latest
  script:
    - /var/scripts/build_python_package.sh
它的设计非常简单——其思想是,我们组织中的任何人都可以创建一个包含Python包的新存储库,将这个最小的
.gitlab ci.yml
管道配置放在其中,这就支持了我们构建和测试Python包的“标准过程”,
develope
master
分支发布到我们的工件存储库(在Nexus中),等等

现在,我想在此设置中添加更多内容,例如

  • 缓存通过
    pip安装的包依赖项,或者为了更快的构建时间(实际上,这对Python来说不是什么大问题,但是我们也有使用类似设置的R包,R包总是从源代码构建的,因此构建时间非常长。)
  • 为工件指定目录(当不在
    develope
    master
    上,但您仍然希望使包工件可用时,使用起来很方便)
这似乎需要检查各种项目中的所有
.gitlab ci.yml
文件,以向ci配置添加或之类的条目-但这是不可取的,因为我们有几十个这样的项目,我们希望他们在每次改进标准构建过程时都能获得增强的行为,而不必更新每个项目

理想情况下,我们应该让
build\u python\u package.sh
脚本以某种方式告诉GitLab这些事实。例如,“我刚刚在此目录中创建了工件”或“我下载/构建了一些依赖项包,它们应该被缓存”。这可能吗


如果做不到这一点,是否有办法将公共配置“导入”到我们所有的包配置文件中,这样我们就可以集中维护配置,而不是将相同的配置分散到许多项目中?

我假设您使用的是GitLab Premium,在这种情况下,您可以使用公共存储库作为中央配置存储库,然后包括你需要的东西

我看到的唯一缺点是: -组织内任何人都可以读取的公共存储库 -如果公共存储库上的代码已损坏,则使用它的所有管道都将中断


查看一下

谢谢,这看起来是一个很好的解决方案。我们正在使用一个自我管理的实例,所以它看起来也对我们可用。