栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在项目之间共享gitlab-ci.yml

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在项目之间共享gitlab-ci.yml

首先让我开始说:谢谢您提出这个问题!在经常想知道自己是否有可能之后,它再次激发了我寻找解决方案的机会。我们也有20-30个项目,它们完全相同,并且包含

.gitlab-ci.yml
大约400-500个loc文件,如果一件事情发生变化,则每个文件都必须更改。

所以我找到了一个可行的解决方案:

受Gitlab自身创建的Auto DevOps .gitlab-ci.yml模板的启发,它们在其中使用一个模板作业来定义所使用的所有函数并调用每个函数

before_script
来加载它们,我提出了以下设置。

  • 多个项目仓库(project-1,project-2)需要一组共享的CI作业/功能
  • 功能脚本包含单独回购中的所有共享功能

档案

因此,使用共享的ci jobs scipt:

#!/bin/bashfunction list_files {  ls -lah}function current_job_info {  echo "Running job $CI_JOB_ID on runner $CI_RUNNER_ID ($CI_RUNNER_DEscriptION) for pipeline $CI_PIPELINE_ID"}

通用和通用

.gitlab-ci.yml

image: ubuntu:latestbefore_script:  # Install curl  - apt-get update -qqq && apt-get install -qqqy curl  # Get shared functions script  - curl -s -o functions.sh https://gitlab.com/giix/demo-shared-ci-functions/raw/master/functions.sh  # Set permissions  - chmod +x functions.sh  # Run script and load functions  - . ./functions.shjob1:  script:    - current_job_info    - list_files

您可以将文件从project-1复制粘贴到project-2,并且使用相同的共享Gitlab CI函数。

这些示例出于示例目的而非常冗长,可以按照自己喜欢的任何方式对其进行优化。

得到教训

因此,在将上述构造大规模应用(超过40个项目)之后,我想分享一些经验教训,因此您不必找出困难的方法:

  • 版本(标记/发布)您共享的ci函数脚本。现在,更改一件事可能会使所有管道失败。
  • 使用不同的Docker映像可能会导致要求bash加载功能的问题(例如,我将一些基于Alpine的映像用于
    sh
    默认情况下基于CLI工具的作业)
  • 使用基于项目的CI / CD机密变量来个性化项目的构建作业。像环境网址等。


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/608924.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号