gitlab動態流水線

文章目錄

    • 1. 說明
    • 2. 官方樣例
      • 2.1 在作業中生成配置文件,保存為產物
      • 2.2 將觸發器作業配置為在生成配置文件的作業之后運行。
    • 3. 實戰應用
      • 3.1 背景介紹
      • 3.2 項目介紹
      • 3.3 公共項目配置
      • 3.4 測試項目配置
      • 3.5 測試
    • 4. 總結

1. 說明

顧名思義,動態流水線就是一種動態生成的流水線,主要在于其具有強大的靈活性,可以在特殊的場景下基于我們的一個預期生成我們想要的流水線,從而來執行某個作業任務。

既然是動態生成的流水線,那肯定就需要額外的觸發操作來運行流水線,這里我們可以通過trigger:include: artifact的方式,具體就是使用trigger關鍵字將 include: artifact 設置為生成的產物并通過 include: job 設置為創建產物的作業。

2. 官方樣例

2.1 在作業中生成配置文件,保存為產物

generate-config:stage: buildscript: generate-ci-config > generated-config.ymlartifacts:paths:- generated-config.yml

2.2 將觸發器作業配置為在生成配置文件的作業之后運行。

child-pipeline:stage: testtrigger:include:- artifact: generated-config.ymljob: generate-config

在此示例中,GitLab 檢索 generated-config.yml 并使用該文件中的 CI/CD 配置觸發子流水線。

產物路徑由GitLab 而非 runner 解析,因此該路徑必須與運行GitLab 的操作系統的語法相匹配。如果GitLab 在 Linux 上運行但使用 Windows runner 進行測試,則觸發作業的路徑分隔符為 /。使用 Windows runner 的作業的其他 CI/CD 配置,如腳本,使用 \

3. 實戰應用

3.1 背景介紹

  • 我們希望如果研發在提交代碼的時候,如果commit message中有x86_64關鍵字,則創建一個Release_x86_64的job,如果commit message中有aarch64關鍵字,則創建一個Release_aarch64的job。
  • 該案例使用了include的嵌套方式,也是另類的一種高級用法。

3.2 項目介紹

  • ci-test 是公共項目
    • variables.yml 里面存放了群組級下的所有的常用的變量
    • template.yml 里面是公共的job,里面也通過include 嵌套了variables.yml
  • ci-test-1 是測試項目

3.3 公共項目配置

在這里插入圖片描述
gitlab-ci/vars/variables.yml

variables:DOCKER_VERSION: "Docker version 20.10.17, build 100c701"BUILD_TYPE: ReleaseREGION: BJTAG: dc

gitlab-ci/common_job/template.yml

##set default retry
default:retry: max: 1when: runner_system_failure##set image & gitlab-runner
.image@image:image:name: alpine:latest.tags@tag:tags:- $TAG##include variables
include:- project: "ops/ci-test"ref: devfile: "gitlab-ci/vars/variables.yml"###set job
.build@build:script:- envextends: - .image@image- .tags@tagrules:- when: always

3.4 測試項目配置

ci文件

stages:- test- buildinclude:- project: "ops/ci-test"ref: "dev"file:- "gitlab-ci/vars/variables.yml"generate-config:stage: testimage: alpine:latestscript: - env- chmod +x generate.sh- bash -x generate.sh- cat generated-config.ymlartifacts:paths:- generated-config.ymlbefore_script:- apk update- apk add bashchild-pipeline:stage: buildtrigger:include:- artifact: generated-config.ymljob: generate-config

generate.sh

#!/bin/bash
echo $CI_COMMIT_MESSAGEif [[ $CI_COMMIT_MESSAGE == *x86_64* ]];then
cat <<EOF > generated-config.yml
include:- project: "ops/ci-test"ref: "dev"file:- "gitlab-ci/common_job/template.yml"
stages:- generate_jobs
Release_x86_64:stage: generate_jobsimage: alpine:latestextends:- .build@build
variables:DOCKER_VERSION: $DOCKER_VERSIONBUILD_TYPE: $BUILD_TYPEPLATFORM: x86_64REGION: $REGION
EOF
elif [[ $CI_COMMIT_MESSAGE == *aarch64* ]]; then
cat <<EOF > generated-config.yml
include:- project: "ops/ci-test"ref: "dev"file:- "gitlab-ci/common_job/template.yml"
stages:- generate_jobs
Release_aarch64:stage: generate_jobsimage: alpine:latestextends:- .build@build
variables:DOCKER_VERSION: $DOCKER_VERSIONBUILD_TYPE: $BUILD_TYPEPLATFORM: aarch64REGION: $REGION
EOF
fi

3.5 測試

本地項目提交 - 提交commit包含x86_64
在這里插入圖片描述
在這里插入圖片描述
本地項目提交 - 提交commit包含aarch64
在這里插入圖片描述
在這里插入圖片描述

4. 總結

其實這個案例相對比較簡單,主要想表達的一個思想是,在某個業務場景下,我們可以通過通過腳本動態的生成gitlab的流水線,從而達到我們想要的效果。
此外,這里也給大家推薦下gitlab官方項目的測試用例。

  • 使用 Jsonnet 的動態子流水線
  • Dynamic child pipeline creation via artifact includes

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/215984.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/215984.shtml
英文地址,請注明出處:http://en.pswp.cn/news/215984.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Shell函數數組練習

1、編寫函數&#xff0c;實現打印綠色OK和紅色FAILED&#xff0c;判斷是否有參數&#xff0c;存在為Ok&#xff0c;不存在為FAILED [rootshell ~]# vim ok.sh #!/bin/bash read -p "請輸入一個參數:" i function ok…

mac 安裝nvm以及切換node版本詳細步驟

1、nvm介紹&#xff08;node版本管理工具&#xff09; nvm 可以讓你通過命令行快速安裝和使用不同版本的node 有時候項目太老&#xff0c;node版本太高,執行npm install命令會報錯,可以借助nvm切換低版本的node。 2、安裝nvm 在終端執行安裝命令 curl -o- https://raw.gith…

后端只打印了info等級的日志?-SpringBoot日志打印-Slf4j

在調用log變量的方法來輸出日志時&#xff0c;有以上5個級別對應的方法&#xff0c;從不太重要&#xff0c;到非常重要 調用不同的方法&#xff0c;就會輸出不同級別的日志。 trace&#xff1a;跟蹤信息debug&#xff1a;調試信息info&#xff1a;一般信息warn&#xff1a;警告…

1、混合方式UI設計

1、混合方式UI設計 新建項目添加靜態資源添加資源添加action添加菜單菜單欄工具欄中間編輯區域 代碼添加其他組件字體和大小狀態欄 添加槽函數UI設置的轉到槽的手寫的設置應用程序圖標 代碼 新建項目 MainWindow代碼文件夾主窗口為 (QMainWindow) 添加靜態資源 AppIcon.icoi…

scikit-learn-feature_selection

參考&#xff1a; Feature selection 1. 移除低方差的特征 方差低&#xff0c;說明變化不大。 將特征方差值小于一定值的特征移除 單變量特征分析 通過單特征分析&#xff0c;選擇最好的&#xff08;前k個&#xff09;的特征&#xff0c;scikit-learn 提供的方法有&#x…

LeetCode-1475. 商品折扣后的最終價格【棧 數組 單調棧】

LeetCode-1475. 商品折扣后的最終價格【棧 數組 單調棧】 題目描述&#xff1a;解題思路一&#xff1a;暴力解法。兩層for。解題思路二&#xff1a;單調棧&#xff0c;具體思路是反向遍歷數組prices。遇到棧頂元素小于當前元素的就出棧&#xff0c;目的是為了找到當前位置右邊的…

基于JAVA+SpringBoot+Vue的前后端分離的旅游網站

?全網粉絲20W,csdn特邀作者、博客專家、CSDN新星計劃導師、java領域優質創作者,博客之星、掘金/華為云/阿里云/InfoQ等平臺優質作者、專注于Java技術領域和畢業項目實戰? &#x1f345;文末獲取項目下載方式&#x1f345; 一、項目背景介紹&#xff1a; 近年來&#xff0c;隨…

區塊鏈的可拓展性研究【01】layer1

什么是一層網絡&#xff1f; 一層網絡是底層區塊鏈。以太坊和比特幣都是一層網絡區塊鏈&#xff0c;因為它們是基石&#xff0c;各種二層網絡都構建于其上。二層網絡項目的示例包括以太坊上的“卷疊”和基于比特幣的閃電網絡。所有這些二層網絡項目上的用戶交易活動最終都可以回…

IntelliJ IDEA 自帶的 HTTP Client接口調用插件,替代 Postman

文章目錄 引言建議目錄結構新建請求不同環境的變量配置添加環境http-client.env.jsonhttp-client.private.env.json引用變量 請求示例Get請求示例Post請求示例鑒權示例斷言示例Websocket請求示例 內置對象和動態變量內置對象&#xff1a;內置變量&#xff1a; 引言 在日常的 W…

關于引用unpkg.com的mars3d相關依賴文件報錯無法請求的說明

問題來源&#xff1a; 1.關于引用unpkg.com的mars3d相關依賴文件報錯無法請求的說明 說明&#xff1a; 1.最近npm、unpkeg都訪問異常&#xff0c;可能是unpkg.com等國外的服務器不穩定導致的請求未響應。 解決方案&#xff1a; 1.請切換靜態文件引入的方式請求相關資源。參…

LaTex:如何在數學環境下打出大的右括號“}“

一般來說多行公式打左大括號都知道使用語法"cases" \begin{cases} foo\\ foo\\ \end{cases}最近需要鍵入右邊大花括號括起來公式的時候犯難了&#xff0c;搜了很多用的都是"\left.array\right}"&#xff0c;看得我昏迷&#xff0c;屢屢報錯。 突然想起很久…

selenium自動化(中)

顯式等待與隱式等待 簡介 在實際工作中等待機制可以保證代碼的穩定性&#xff0c;保證代碼不會受網速、電腦性能等條件的約束。 等待就是當運行代碼時&#xff0c;如果頁面的渲染速度跟不上代碼的運行速度&#xff0c;就需要人為的去限制代碼執行的速度。 在做 Web 自動化時…

PS背景色替換

1.打開ps后右鍵圖層復制 2.隱藏復制的圖層&#xff0c;選擇魔術橡皮擦擦掉不用替換的顏色 3.選中圖層后選擇顏色疊加修改圖層顏色

機器學習-SVM(支持向量機)

推薦課程&#xff1a;【機器學習實戰】第5期 支持向量機 |數據分析|機器學習|算法|菊安醬_嗶哩嗶哩_bilibili 贊美菊神ヾ ( ゜ⅴ゜)&#xff89; 一、什么是支持向量機&#xff1f; 支持向量機&#xff08;Support Vector Machine, SVM&#xff09;是一類按監督學習&#xff0…

RAID(冗余獨立磁盤陣列)介紹(一種用于存儲數據的技術,通過將數據分布在多個硬盤驅動器上,以提高數據的可靠性和性能)

文章目錄 RAID介紹什么是RAID&#xff1f;RAID的歷史RAID的類型RAID 0RAID 1RAID 5RAID 6 RAID的選擇和配置RAID在安裝系統時的應用結論 RAID介紹 RAID&#xff08;冗余獨立磁盤陣列&#xff09;是一種用于存儲數據的技術&#xff0c;它通過將數據分布在多個硬盤驅動器上&…

【神行百里】pandas查詢加速之行索引篇

最近進行大數據處理的時候&#xff0c;發現我以前常用的pandas查詢方法太慢了&#xff0c;太慢了&#xff0c;真是太慢了&#xff0c;查閱資料&#xff0c;遂發現了一種新的加速方法&#xff0c;能助力我飛上天&#xff0c;和太陽肩并肩&#xff0c;所以記錄下來。 1. 場景說明…

跨境獨立站優勢包括哪些?是否值得做呢?

跨境獨立站的優勢主要包括&#xff1a; 自主品牌建設&#xff1a;獨立站可以更好地展示自主品牌形象&#xff0c;提高品牌知名度和美譽度。 獨立域名&#xff1a;獨立站可以擁有自己的域名&#xff0c;更加穩定和可信。 自主運營&#xff1a;獨立站可以自主運營&#xff0c;包…

低版本echarts的升級到新版5.4.0的echarts瀏覽器預警和報錯信息

新版5.4.0的echarts瀏覽器預警和報錯信息 [ECharts] DEPRECATED: ‘normal’ hierarchy in itemStyle has been removed since 4.0. All style properties are configured in itemStyle directly now. 因為normal層被移除&#xff0c;問題代碼如下圖所示 itemStyle: {normal:…

MBR30200FCT-ASEMI大電流肖特基MBR30200FCT

編輯&#xff1a;ll MBR30200FCT-ASEMI大電流肖特基MBR30200FCT 型號&#xff1a;MBR30200FCT 品牌&#xff1a;ASEMI 封裝&#xff1a;TO-220F 最大平均正向電流&#xff1a;30A 最大重復峰值反向電壓&#xff1a;200V 產品引線數量&#xff1a;3 產品內部芯片個數&am…

系統韌性研究(7)| 韌性系統的16大指導原則

不良事件和條件可能會中斷系統&#xff0c;導致系統無法提供必要的功能和服務。正如我在本系列的前幾篇文章中所概述的那樣&#xff0c;韌性是大多數系統的一個基本質量屬性&#xff0c;因為它們提供了關鍵的能力和服務&#xff0c;盡管存在著不可避免的困難&#xff0c;但這些…