日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Gitlab-CI持续集成之Runner配置和CI脚本

發布時間:2024/6/21 30 生活家
生活随笔 收集整理的這篇文章主要介紹了 Gitlab-CI持续集成之Runner配置和CI脚本 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

@font-face { font-family: Wingdings }
@font-face { font-family: 宋體 }
@font-face { font-family: "Cambria Math" }
@font-face { font-family: 微軟雅黑 }
@font-face { font-family: "@微軟雅黑" }
@font-face { font-family: "@宋體" }
p.MsoNormal, li.MsoNormal, div.MsoNormal { mso-style-unhide: no; mso-style-qformat: yes; mso-style-parent: ""; margin: 0 0 0.0001pt; text-align: justify; text-justify: inter-ideograph; mso-pagination: none; font-size: 10.5pt; mso-bidi-font-size: 12.0pt; font-family: "Times New Roman", serif; mso-fareast-font-family: 宋體; mso-font-kerning: 1.0pt }
a:link, span.MsoHyperlink { mso-style-unhide: no; color: rgba(5, 99, 193, 1); mso-themecolor: hyperlink; text-decoration: underline; text-underline: single }
a:visited, span.MsoHyperlinkFollowed { mso-style-unhide: no; color: rgba(149, 79, 114, 1); mso-themecolor: followedhyperlink; text-decoration: underline; text-underline: single }
code { mso-style-priority: 99; mso-ansi-font-size: 12.0pt; mso-bidi-font-size: 12.0pt; font-family: 宋體; mso-ascii-font-family: 宋體; mso-fareast-font-family: 宋體; mso-hansi-font-family: 宋體; mso-bidi-font-family: 宋體 }
pre { mso-style-priority: 99; mso-style-link: "HTML 預設格式 字符"; margin: 0 0 0.0001pt; mso-pagination: widow-orphan; font-size: 12pt; font-family: 宋體; mso-bidi-font-family: 宋體 }
span.HTML { mso-style-name: "HTML 預設格式 字符"; mso-style-priority: 99; mso-style-unhide: no; mso-style-locked: yes; mso-style-link: "HTML 預設格式"; mso-ansi-font-size: 12.0pt; mso-bidi-font-size: 12.0pt; font-family: 宋體; mso-ascii-font-family: 宋體; mso-hansi-font-family: 宋體; mso-bidi-font-family: 宋體 }
span.nt { mso-style-name: nt; mso-style-unhide: no }
span.nb { mso-style-name: nb; mso-style-unhide: no }
.MsoChpDefault { mso-style-type: export-only; mso-default-props: yes; font-size: 10pt; mso-ansi-font-size: 10.0pt; mso-bidi-font-size: 10.0pt; mso-ascii-font-family: "Times New Roman"; mso-fareast-font-family: 宋體; mso-hansi-font-family: "Times New Roman"; mso-font-kerning: 0pt }
@page { mso-page-border-surround-header: no mso-page-border-surround-footer: no }
@page WordSection1 { size: 595.3pt 841.9pt margin-top: 72pt margin-right: 59.55pt margin-bottom: 72pt margin-left: 59.55pt mso-header-margin: 42.55pt mso-footer-margin: 49.6pt mso-paper-source: 0 layout-grid: 15.6pt }
div.WordSection1 { page: WordSection1 }

Gitlab-CI持續集成之Runner配置和CI腳本

一、簡介

1. 為實現持續集成,需為該項目準備以下兩樣東西:

1)軟件集成腳本.(gitlab-ci.yml)

2)一臺Runner服務器

當然,考慮到集成環境的配置,還需要docker鏡像作為載體。

2. 基本流程如下:

1)安裝Runner服務器,注冊和項目對應的Runner Service(后續再說Shared Runner),編寫集成腳本;

2) 每當push代碼, 自動觸發腳本,Gitlab將變動告知Gitlab-CI,CI連接Runner服務器,找到關聯的Runner Service,Runner負責更新代碼到本地,并執行集成腳本。

二、安裝Runner

1. Centos7使用yum安裝

1)添加yum源

a.官方源


1 curl –L https://package.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.rpm.sh | sudo bash

b.國內源

cat << EOF >> /etc/yum.repos.d/gitlab-ci-multirunner.repo

[gitlab-ci-multi-runner]

name=gitlab-ci-multi-runner

baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ci-multi-runner/yum/el7

repo_gpgcheck=0

gpgcheck=0

enabled=1

gpgkey=https://packages.gitlab.com/gpg.key

EOF
sudo yum makecache

2)安裝1.11.2版本

sudo yum install gitlab-ci-multi-runner-1.11.2-1

由于公司Gitlab版本目前是8.X,官方Gitlab最新是9.0,Runner最新版不支持9.0以下版本的Gitlab,因此只能安裝該版本。視Gitlab服務器的版本而定。

3)Runner用戶權限

Runner默認會在服務器上創建gitlab-runner用戶, 所有的Runner Service則默認通過該用戶執行集成腳本,因此該用戶需要較高的權限。尤其是使用Docker鏡像時,必須加入docker組。

sudo usermod -aG docker gitlab-runner

2.Ubuntu使用apt-get安裝

1)添加apt源


curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.deb.sh | sudo bash

2)安裝1.11.2版本

sudo yum install gitlab-ci-multi-runner-1.11.2-1

3)Runner用戶權限(同上)

3.安裝包安裝

下載二進制文件或相應系統的安裝包安裝即可,gitlab-ci-multi-runner-1.11.2安裝包。

三、注冊Runner

1.進入自己的Project—>設置Runners


2.查看Specific Runners里面的url和token


3.在Runner服務器執行注冊命令

gitlab-runner register --non-interactive 

    --url http://gitlab.xxxxx.com/ci 

    --registration-token GWGGXZNxbxabcdMaXZhj9 

    --name Crowd_Job_CI 

    --tag-list 172.17.3.126 

    --run-untagged=true 

    --executor shell 

    --builds-dir /home/gitlab-runner 

   --config "/etc/gitlab-runner/config.toml"

上述命令選項含義(*為必選項):

--url 項目CI地址*

-- registration-token 項目里剛才看到的token,互相關聯的標志*

--name 該Special Runner服務名,便于后臺管理(查看、刪除、調用)*

--tag-list 該Special Runner標簽,集成腳本中可以通過指定tag關聯

--run-untagged 是否運行無標簽的集成腳本,必須用等號

--excutor 規定集成腳本執行的環境,還可以是docker等*

-- builds-dir 默認該文件夾,可以自定義項目集成初始化的位置

--config 默認配置文件,存儲注冊信息,可以自定義不同的配置文件

刷新頁面看到已經注冊成功,可以使用了。

四、運行Runner

假設集成腳本已就緒,那么就需要運行Runner

1.使用Specific Runner

1)run-single

gitlab-ci-multi-runner run-single 

--url http://gitlab.sensenets.com/ci

--token 37fe0fa59e3475e20e24b6e6afc7c3

--executor shell

當然這里也可以指定注冊時的大部分參數,不過無論如何url、token(Runner的token,而非注冊時項目的token)、executor這三個參數是必須的。

run-single命令很簡單的把我們剛才注冊的Runner運行起來了,如果這個Runner對應的項目有更新,這個運行的服務就會去執行腳本內容。

即便我們不運行run-single命令,默認會有一個已經運行狀態的Runner Service,名稱就是gitlab-runner,會自動執行所有注冊過的Runner,但同時只能執行一個任務。

2)run 、install、start

上圖說明了Runner的原理:

安裝gitlab-ci-multi-runner服務器,相當于一個勞務公司的創辦,它管理Runner工人,外包各種項目Project。

注冊的目的是把項目和Runner連接起來,因為部分項目的Runner可能需要定制。Runner好比是一個工人,在勞務中心(gitlab-ci-multi-runner)登記合同,供職于我們的Project(但是當他比較閑的時候,也可以去其他公司兼職)。

但是對應的RunnerService相當于Runner工人的管理層,一個管理層可以管理一個甚至多個工人。勞務公司默認有一個公用的管理層,服務名就是上面所說的gitlab-runner,如果我們不指定管理層,那么勞務公司所有工人都被gitlab-runner管理運行。這個管理人員比較弱,一次只能管理一個項目,其他項目會等待。

run、run-sigle相當于一次性的外包項目,非常具有針對性。

install則是把一個或者幾個runner包裝好,然后start,就是一個有著管理服務的工人體系,隨時待命。

當Project更新,觸發Runner服務器上的Runner Service(某管理隊伍),Runner Service根據自己的配置信息,和項目的需求(tag指定某個工人),派遣Runner工人去執行Project給予的任務(Job)。

配置信息相當于花名冊,不注冊僅僅寫一個花名冊是不行的,working_dir相當于辦公地點。

下面安裝兩個服務并啟動:

gitlab-runner install 

    -n  "jiukun_self_runner" 

    -d "/home/jiukunz" 

    -c "/etc/gitlab-runner/config_jiukun_test.toml" 

    -u gitlab-runner
gitlab-runner install 

    -n  "jiukun_self2_runner" 

    -d "/home/jiukunz" 

    -c "/etc/gitlab-runner/config_jiukun_test.toml" 

    -u gitlab-runner

1 gitlab-runner start -n jiukun_self_runner
2 gitlab-runner start -n jiukun_self2_runner

其中,-n為安裝的服務名稱,-d為工作路徑,-c為配置文件,-u為執行用戶(服務名稱和執行用戶必須指定,配置文件和工作路徑可以使用默認路徑)

其實,當我們執行上述安裝命令時,gitlab-ci-multi-runner后臺實際是將run命令寫入/etc/systemd/system/jiukun_self_runner.service文件,使之成為一個單獨的服務:

2.使用Shared Runner

使用share runner需要管理員權限,聯系公司gitlab管理員,獲取token。然后使用和Special Runner一樣的方法注冊成功。

進入任意項目的Runner頁面,將看到以下內容:

這里我重復注冊了兩次,可以看到Runner無論是名字還是tag都可以重復,但是Runner的token卻不相同,實際上區分不同的Runner工人只需要兩樣東西就是url和token。當然并不建議進行相同命名,不便于管理。

公司所有的項目默認都可以使用Shared Runner,而不需要重復配置。

1)好處:對于大多數Runner的配置其實是完全相同的(同樣的executor,同樣的配置文件和工作路徑,同樣的依賴環境),如果每個項目都去一個個注冊不僅麻煩,而且不方便遷移,這時可以使用shared runner。

2)不足:如果一個項目的編譯所需的exector等其他配置(配置文件有更多可選配置),并且和其他項目需要單獨管理,這時最好使用Special Runner,并鎖定該Runner為項目本身使用,單獨管理。

五、管理Runner

1.注冊的runner列表

gitlab-runner list 
    --config "/etc/gitlab-runner/config_jiukun_test.toml"

2.查看runner連接狀態

gitlab-runner verify 
    --config "/etc/gitlab-runner/config_jiukun_test.toml"

3.取消注冊(移除)

gitlab-runner unregistry 
    --url http://gitlab.xxxxxx.com/ci 
    --token 9c1bb50065661ba766023016f6ebf2

不能直接在project的web端進行remove操作,否則這里會執行失敗

4管理gitlab-runner服務

gitlab-runner status 

    -n jiukun_self_runner.service

    不指定服務名,則默認為gitlab-runner服務

gitlab-runner stop 

    -n jiukun_self_runner.service

gitlab-runner restart 

    -n jiukun_self_runner.service

gitlab-runner uninstall 

    -n jiukun_self_runner.service
執行uninstall會卸載該服務,與之對應的runner將無法通過該服務運行,請確保對應的CI任務已停止。

六、集成腳本

將集成腳本命名為.gitlab-ci.yml或者.gitlab-ci.yaml,放置在對應項目倉庫分支的根目錄下。

1. yaml語法

大小寫敏感、使用縮進代表層級、不允許使用Tab縮進,只能使用空格,縮進并無統一限制,但同級關系內要保持對齊即可。#代表注釋。

語言格式里存在減號和冒號這些特殊字符,因此要注意千萬別寫成中文的字符格式。

減號對應的是數組,冒號對應的是鍵值對(對象)。

2. 關鍵詞

1)image

如果使用docker作為Runner的executor,并且沒有設置默認的鏡像,此處需要設置鏡像;不使用可以省略

2)sevices

如果使用docker集群服務,可以直接調用服務;不使用可以省略

3)stages

定義各個階段名稱,如果省略,CI默認為三個階段

每個job都必須定義其所屬的階段,如果不定義,默認均屬于build階段;同階段任務并行對待,上一階段所有任務執行成功,才會繼續執行下一階段;語句依次執行,如果某一語句執行失敗,將返回錯誤碼,并宣告CI失敗。

如果定義stages,則job中的stage必須與之相對應。

4)before_script

定義在所有腳本運行之前執行的語句

5)after_script

定義在所有腳本運行之后執行的語句

6)variables

定義環境變量

7)cache

定義下個job會使用到的文件或內容

3. Jobs

.gitlab-ci.yml腳本內容的主體為一個個job,沒有數量限制,每個Job名稱可以相同也可以不同(最好不要相同),可以大小寫;每個Job內部至少有一個關鍵詞。常用關鍵詞如下

1)stage

和腳本全局stages對應(如果全局未定義,可使用默認)

2)image、services、variables

同全局關鍵詞

3)only

規定該腳本響應分支(項目其他分支不會觸發該腳本;如果不定義,會檢測所有分支;與之相反的關鍵詞是except

4)before_script、after_script

同全局關鍵詞(注意,如果同時存在,會覆蓋全局關鍵詞對應列表內容

5)script

腳本主體,使用方法和在shell內一樣,將在對應executor內運行一個shell環境,執行腳本內容。每個Job的shell環境不同(Job結束,該環境自動關閉)。

6)tags

指定Runner的標簽(通常一個項目有很多Runner,依靠tag區分)

7)artifacts

指定Job的產出文件路徑,如果該關鍵詞設定,可以直接在pipeline頁面下載該文件

8)when

默認一個job只有在上一階段所有job成功才會執行,通過when可以改,通常用來清理環境使用,以免失敗后無法清理,有四種可選參數。

on_success(上一階段所有Job成功才執行)

on_failure(上一階段任意Job失敗就執行)

always(總是執行)

manual(此階段由UI界面交互執行)

備注:以上純屬原創,學習來源為gitlab-runner官方中文文檔、gitlab-runner英文文檔、gitlab-ci英文文檔。如需轉載請注明出處,后續繼續完善。

總結

以上是生活随笔為你收集整理的Gitlab-CI持续集成之Runner配置和CI脚本的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。