99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

什么是CI/CD?基本的gitlab CI/CD流程詳解

馬哥Linux運(yùn)維 ? 來(lái)源:馬哥Linux運(yùn)維 ? 2023-12-08 09:50 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

CI/CD原理、yaml語(yǔ)法、.gitlab-ci.yml配置、runner流程等文章也許你已經(jīng)看了不少,但是還沒(méi)實(shí)際操作過(guò)的同學(xué)相信也很多。下面帶你實(shí)際操作一把CI/CD,串一串學(xué)過(guò)的知識(shí)點(diǎn)。

什么是CI/CD

通俗來(lái)說(shuō)就是啟動(dòng)一個(gè)服務(wù),能夠監(jiān)聽(tīng)代碼變化,然后自動(dòng)執(zhí)行打包,發(fā)布等流程;

拿最簡(jiǎn)單的靜態(tài)頁(yè)項(xiàng)目部署流程舉例:首先需要手動(dòng)npm run build后,再將dist文件夾通過(guò)工具上傳到服務(wù)器的某個(gè)目錄下,再啟動(dòng)配置好的nginx等服務(wù)器程序;有時(shí)為了調(diào)試,不得不頻繁發(fā)布測(cè)試......

“懶是促進(jìn)技術(shù)進(jìn)步的原動(dòng)力”

如果我們修改代碼后,能夠自動(dòng)完成后續(xù)的那一堆任務(wù)那該多好,CI/CD的概念發(fā)展了起來(lái)。

可見(jiàn)要實(shí)現(xiàn)自動(dòng)化,我們最起碼需要兩個(gè)關(guān)鍵步驟:

1. 監(jiān)聽(tīng)代碼變化;

2. 執(zhí)行后續(xù)的各種任務(wù);

而gitlab為我們提供了現(xiàn)成的工具gitlab-runner,能夠幫助我們實(shí)現(xiàn)上面所述的步驟;我們只需要按照官方說(shuō)明,在自己的服務(wù)器上安裝gitlab-runner,并在項(xiàng)目倉(cāng)庫(kù)里注冊(cè)其相應(yīng)的信息即可。

gitlab-runner的主要作用

1. 監(jiān)聽(tīng)來(lái)自gitlab的各種消息(如:代碼push);

2. 執(zhí)行.gitlab-ci.yml文件(GitLab CI/CD的配置文件)中的任務(wù);

如何自動(dòng)化構(gòu)建、自動(dòng)化測(cè)試、自動(dòng)化部署?那都是.gitlab-ci.yml中的Job,后面會(huì)介紹。

也就是說(shuō),自動(dòng)化流程都可以通過(guò).gitlab-ci.yml中的Job的Shell指令來(lái)實(shí)現(xiàn)。下面進(jìn)入正題,我們先來(lái)搭建CI/CD所需的環(huán)境。

搭建gitlab CI/CD

1. 創(chuàng)建gitlab倉(cāng)庫(kù)

首先創(chuàng)建一個(gè)gitlab倉(cāng)庫(kù)(本示例里叫做testCI,是用vue-cli創(chuàng)建的一個(gè)樸實(shí)無(wú)華的項(xiàng)目)。進(jìn)入項(xiàng)目后看到界面如下:

1cf1bf5c-94a1-11ee-939d-92fbcf53809c.png

打開(kāi)左側(cè)菜單Settings > CI/CD項(xiàng),可以看到Runners項(xiàng),點(diǎn)擊右側(cè)按鈕Expand:

1cf6d3de-94a1-11ee-939d-92fbcf53809c.png

gitlab CI/CD需要我們自己的服務(wù)端啟動(dòng)gitlab-runner,而gitlab-runner啟動(dòng)后得到的服務(wù)進(jìn)程就叫做Runner;每個(gè)gitlab項(xiàng)目都可以綁定多個(gè)Runner。

下面創(chuàng)建Runner的索引,用來(lái)關(guān)聯(lián)當(dāng)前項(xiàng)目倉(cāng)庫(kù)與后面的**Runner**進(jìn)程

1d15baa6-94a1-11ee-939d-92fbcf53809c.png

2. 創(chuàng)建Runner索引

這里我們點(diǎn)擊New project runner按鈕去新建一個(gè)Runner索引,界面入下:

1d229226-94a1-11ee-939d-92fbcf53809c.png

然后按照以下步驟操作:

1. 選擇Runner服務(wù)器的操作系統(tǒng)

2. 創(chuàng)建Runner的tags,也可以勾選Run unstagged jobs(用途后面講解);

3. 點(diǎn)擊創(chuàng)建按鈕Create runner進(jìn)入Runner注冊(cè)指令頁(yè)面

1d2e5188-94a1-11ee-939d-92fbcf53809c.png

到這里,需要在gitlab完成的操作已經(jīng)結(jié)束,下面開(kāi)始服務(wù)器端的配置流程。

對(duì)于只想試試看的同學(xué)可以在自己電腦上進(jìn)行下面的操作,也就是把自己的電腦作為服務(wù)器。

3. 創(chuàng)建Runner服務(wù)

正如開(kāi)頭我們介紹過(guò),我們的服務(wù)器要監(jiān)聽(tīng)gitlab的push消息就需要安裝gitlab-runner軟件,啟動(dòng)后就創(chuàng)建了Runner服務(wù)。

可根據(jù)上圖所示的官方鏈接,查看安裝指令;下面是macOs系統(tǒng)的安裝步驟。

1. 按照上圖所示的指令安裝gitlab-runner;含義如下所示:


sudocurl--output/usr/local/bin/gitlab-runnerhttps://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-darwin-amd64


sudochmod+x/usr/local/bin/gitlab-runner


cd~


gitlab-runnerinstall


gitlab-runner start

當(dāng)這5步執(zhí)行完畢后,終端輸入gitlab-runner status查看gitlab-runner運(yùn)行狀況:

1d3cec84-94a1-11ee-939d-92fbcf53809c.png

Runner服務(wù)啟動(dòng)成功。

2. 執(zhí)行Step1指令進(jìn)行注冊(cè):

gitlab-runner register --url https:


該指令用于將當(dāng)前的Runner注冊(cè)到gitlab并與我們的前面創(chuàng)建的Runner索引信息綁定在一起。

輸入該指令后會(huì)有3步交互式輸入:

a. 設(shè)置gitlab地址;直接點(diǎn)擊回車(chē)即可。

b. 設(shè)置Runner的名字;隨便寫(xiě),這里是test-ci

c. 設(shè)置Runner的執(zhí)行器類(lèi)型;這里選擇shell類(lèi)型。

最終效果如下圖所示,這就完成了Step2:

1d49fb22-94a1-11ee-939d-92fbcf53809c.png

3. 執(zhí)行Step3指令:gitlab-runner run,可以看到終端顯示如下:

1d524476-94a1-11ee-939d-92fbcf53809c.png

到這里,gitlab CI所需的環(huán)境算是搭建完成了!

1d65cfe6-94a1-11ee-939d-92fbcf53809c.png

回到gitlab開(kāi)始的CI/CD頁(yè)面,就可以看到新建的Runner服務(wù)可以使用了。

4. 編寫(xiě).gitlab-ci.yml文件(后續(xù)補(bǔ)一篇配置項(xiàng)解析文章)

Runner會(huì)讀取項(xiàng)目根目錄下的.gitlab-ci.yml文件,執(zhí)行其中的任務(wù),我們?cè)陧?xiàng)目根目錄下添加.gitlab-ci.yml文件:

1d6a7e74-94a1-11ee-939d-92fbcf53809c.png

內(nèi)容如下:


stages:
  - dev
  - test


測(cè)試dev:
  stage: dev
  tags:
     - test
  script:
    - npm i
    - npm run dev


測(cè)試test:
  stage: test
  tags:
     - test
  script:
    - echo "Running test..."

這里規(guī)定了兩個(gè)任務(wù)階段:dev與test,同時(shí)創(chuàng)建了兩個(gè)Job:測(cè)試dev與測(cè)試test,并將測(cè)試dev掛載在了dev階段,將測(cè)試test掛載在了test階段;

這兩個(gè)Job要注意tags需要與gitlab上創(chuàng)建的Runner索引的tags相同,不然不會(huì)執(zhí)行!

5. push代碼試一下

將代碼修改push到git倉(cāng)庫(kù),就能看到Runner終端有反饋了!同時(shí)可以看一下gitlab倉(cāng)庫(kù)的Pipelines頁(yè)面:

1d70006a-94a1-11ee-939d-92fbcf53809c.png

可以看到dev階段正在執(zhí)行中(上圖所示的“狀態(tài)圖標(biāo)”為“進(jìn)行中”)。

如果任務(wù)一直處于等待狀態(tài),可能是gitlab訪問(wèn)不到本地Runner服務(wù)的IP地址,或者網(wǎng)絡(luò)有問(wèn)題,如圖:

1d7d828a-94a1-11ee-939d-92fbcf53809c.png

可以點(diǎn)擊“狀態(tài)圖標(biāo)”看下日志頁(yè)面:

1d816ad0-94a1-11ee-939d-92fbcf53809c.png

發(fā)現(xiàn)npm run dev熟悉的輸出,可以在服務(wù)端(這里是本地開(kāi)發(fā)環(huán)境)打開(kāi)該鏈接看一下:

1d8fd714-94a1-11ee-939d-92fbcf53809c.png

最終,我們成功利用gitlab CI的能力,運(yùn)行了本地的npm run dev命令......

總結(jié)

到這里,其實(shí)主要目的已經(jīng)達(dá)到了:

1. 我們成功搭建了gitlab CI/CD所需的環(huán)境;

2. 實(shí)現(xiàn)了服務(wù)端監(jiān)聽(tīng)git的push行為;

3. 服務(wù)端Runner執(zhí)行了.gitlab-ci.yml文件上的Job。

若要實(shí)現(xiàn)更復(fù)雜的流程,只需要完善.gitlab-ci.yml文件中的配置。

后續(xù)改進(jìn)

上面我們搭建了gitlab CI/CD所需的環(huán)境,并成功執(zhí)行了本地的npm run dev。由于npm run dev指令是持續(xù)性的任務(wù),導(dǎo)致測(cè)試dev是無(wú)法完成的Job,進(jìn)而導(dǎo)致dev階段一直處于運(yùn)行狀態(tài),而test階段無(wú)法開(kāi)始;我們修改下配置(npm run dev -> npm run build):


stages:
  - dev
  - test


測(cè)試dev:
  stage: dev
  tags:
     - test
  script:
    - npm i
    - npm run build 
    - pwd 
    - ls 
測(cè)試test:
  stage: test
  tags:
     - test
  script:
    - echo "Running test..."

最終運(yùn)行結(jié)果如圖:

1d9f81e6-94a1-11ee-939d-92fbcf53809c.png

全部Job順利執(zhí)行完畢:

1dadde6c-94a1-11ee-939d-92fbcf53809c.png

這樣我們就完成了基本的CI/CD流程的創(chuàng)建,如果還需要deploy、test等后續(xù)功能,只需要繼續(xù)完善.gitlab-ci.yml 文件,例如:通過(guò)shell命令將dist移動(dòng)到想要的位置,啟動(dòng)nginx等;或者通過(guò)執(zhí)行*.sh文件來(lái)完成更復(fù)雜的操作。

結(jié)束

gitlab CI/CD大致的工作流程:

1. 我們將修改的代碼push到gitlab倉(cāng)庫(kù);

2. gitlab將push消息發(fā)送到我們的服務(wù)器,服務(wù)器Runner接收到消息;

3. 服務(wù)器Runner將倉(cāng)庫(kù)代碼pull下來(lái),按照.gitlab-ci.yml 文件執(zhí)行Job;

4. 服務(wù)器Runner將構(gòu)建信息(例如測(cè)試報(bào)告,終端輸出等)上傳到 GitLab 。

GitLab 服務(wù)器根據(jù) Runner執(zhí)行結(jié)果,更新項(xiàng)目的 CI/CD 狀態(tài)和日志,并通知相關(guān)的用戶(hù)或團(tuán)隊(duì)。

6.如果.gitlab-ci.yml 文件不增加其他配置(如:artifacts字段等),Runner將在執(zhí)行完Job后清理構(gòu)建產(chǎn)物(如dist文件夾);

1dbb93e0-94a1-11ee-939d-92fbcf53809c.png

通過(guò)上面的演示,我們完成了一個(gè)前端項(xiàng)目最基本的gitlab CI/CD流程,功能很簡(jiǎn)單,但是相信沒(méi)上手實(shí)踐過(guò)的同學(xué)對(duì)其基本原理與流程能有一定的了解,今后在看相關(guān)文章時(shí)也能有一個(gè)基本的概念(版權(quán)歸掘金硬毛巾原作者所有,侵刪)

審核編輯:黃飛

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    13

    文章

    9795

    瀏覽量

    87999
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    7152

    瀏覽量

    125595
  • 指令
    +關(guān)注

    關(guān)注

    1

    文章

    616

    瀏覽量

    36469
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4900

    瀏覽量

    70751

原文標(biāo)題:寫(xiě)給還沒(méi)玩過(guò)gitlab CI/CD的你,保證能學(xué)會(huì)

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    如何充分利用Heroku CI

    ci/cd heroku 持續(xù)集成和持續(xù)交付(CI / CD)是當(dāng)今軟件工程開(kāi)發(fā)過(guò)程中的最佳實(shí)踐。持續(xù)集成 (CI)允許開(kāi)發(fā)人員針對(duì)在其項(xiàng)目
    發(fā)表于 09-15 08:43

    請(qǐng)問(wèn)下哪些CI/CD工具是支持Arm 架構(gòu)的

    我在為一個(gè)開(kāi)源項(xiàng)目啟用 CI 管道,請(qǐng)問(wèn)下哪些CI/CD工具是支持Arm 架構(gòu)的?
    發(fā)表于 09-21 11:29

    什么是CI / CD?其意義何在?

    一點(diǎn)補(bǔ)充:Circle CI可以自動(dòng)清除GitHub上的冗余build。如果在同一分支上觸發(fā)了較新的build,則該工具會(huì)識(shí)別并取消正在運(yùn)行或排隊(duì)的舊build——包括尚未完成的build。
    的頭像 發(fā)表于 09-08 09:17 ?9.4w次閱讀

    運(yùn)營(yíng)商該如何在內(nèi)部和外部網(wǎng)絡(luò)中實(shí)施CI/CD實(shí)踐

    調(diào)查表明,有42%受訪企業(yè)希望在2019年底之前對(duì)NFV的內(nèi)部業(yè)務(wù)實(shí)施CI/CD實(shí)踐,66%受訪CSP希望在2020年底之前實(shí)施CI/CD。
    發(fā)表于 12-19 10:56 ?1116次閱讀

    五個(gè)開(kāi)發(fā)者必知的CI/CD工具

    一旦你選擇了最好的CI/CD工具,你將繼續(xù)你的DevOps生命周期。如果操作得當(dāng),它將能夠提高產(chǎn)品質(zhì)量并鼓勵(lì)你的團(tuán)隊(duì)充滿(mǎn)自信地進(jìn)行發(fā)布游戲。
    的頭像 發(fā)表于 02-14 16:43 ?3577次閱讀

    提高CI/CD系統(tǒng)可觀察性的四種技術(shù)

    可觀察性是DevOps團(tuán)隊(duì)的重要組成部分,它可以幫助組織從系統(tǒng)的輸出信息,推斷系統(tǒng)內(nèi)部狀態(tài)。它是一個(gè)持續(xù)的過(guò)程,從你的CI/CD流水線開(kāi)始,并貫穿于應(yīng)用程序的整個(gè)生命周期。 可觀察的CI/CD
    的頭像 發(fā)表于 08-17 09:31 ?7350次閱讀

    基于Kubernetes實(shí)現(xiàn)CI/CD配置的流程

    基于 Kubernetes 實(shí)現(xiàn) CI/CD 配置,其實(shí)和往常那些 CI/CD 配置并沒(méi)有太大區(qū)別。
    的頭像 發(fā)表于 02-08 16:51 ?1951次閱讀

    面對(duì)CI/CD分析的代碼靜態(tài)測(cè)試工具Klocwork 2023.1版本更新快訊

    Klocwork 2023.1為CI/CD分析pipeline引入靈活的管理選項(xiàng) 。使用差異分析加速靜態(tài)分析掃描, 在CI/CD管道構(gòu)建中提供上下文結(jié)果,并可以用和服務(wù)器端相同的方式管
    的頭像 發(fā)表于 04-17 12:03 ?1895次閱讀
    面對(duì)<b class='flag-5'>CI</b>/<b class='flag-5'>CD</b>分析的代碼靜態(tài)測(cè)試工具Klocwork 2023.1版本更新快訊

    DevOps的最佳CI/CD工具

    CI/CD是一種 DevOps 方法,它結(jié)合了持續(xù)集成和持續(xù)交付的概念,允許企業(yè)通過(guò)在軟件開(kāi)發(fā)生命周期中集成自動(dòng)化來(lái)始終如一地向客戶(hù)交付應(yīng)用程序。
    的頭像 發(fā)表于 07-11 11:06 ?924次閱讀

    如何在DevOps環(huán)境中實(shí)施測(cè)試用例管理

    由于DevOps 工作流程使用CI/CD 方法進(jìn)行軟件開(kāi)發(fā),因此您的測(cè)試管理工具還應(yīng)該能夠與GitLab 和Jenkins 等CI/
    的頭像 發(fā)表于 01-29 09:30 ?1917次閱讀
    如何在DevOps環(huán)境中實(shí)施測(cè)試用例管理

    Perforce靜態(tài)分析工具2024.2新增功能:Helix QAC全新CI/CD集成支持、Klocwork分析引擎改進(jìn)和安全增強(qiáng)

    實(shí)現(xiàn)持續(xù)合規(guī)性現(xiàn)代軟件開(kāi)發(fā)實(shí)踐要求開(kāi)發(fā)團(tuán)隊(duì)具備適應(yīng)性,在確保代碼質(zhì)量和可靠性的同時(shí),優(yōu)先考慮靈活性和協(xié)作性。在軟件開(kāi)發(fā)流程中實(shí)施持續(xù)集成(CI)和持續(xù)交付(CD)流
    的頭像 發(fā)表于 10-08 16:22 ?666次閱讀
    Perforce靜態(tài)分析工具2024.2新增功能:Helix QAC全新<b class='flag-5'>CI</b>/<b class='flag-5'>CD</b>集成支持、Klocwork分析引擎改進(jìn)和安全增強(qiáng)

    CI/CD方案:推動(dòng)智能汽車(chē)開(kāi)發(fā)的高效利器

    (持續(xù)集成與持續(xù)交付/部署)方案為汽車(chē)行業(yè)帶來(lái)了巨大的變革契機(jī)。本文將聚焦CI/CD方案在智能汽車(chē)領(lǐng)域的核心價(jià)值,并探討如何通過(guò)標(biāo)準(zhǔn)化的CI/CD
    的頭像 發(fā)表于 12-18 10:03 ?1063次閱讀
    <b class='flag-5'>CI</b>/<b class='flag-5'>CD</b>方案:推動(dòng)智能汽車(chē)開(kāi)發(fā)的高效利器

    【Android開(kāi)發(fā)者必看】使用JetBrains TeamCity為Android項(xiàng)目構(gòu)建CI/CD管道詳細(xì)指南

    CI/CD】定義明確的構(gòu)建、測(cè)試和部署工作流對(duì)Android應(yīng)用的開(kāi)發(fā)至關(guān)重要。JetBrains TeamCity是一個(gè)用于構(gòu)建可靠管道的CI/CD平臺(tái),可與流行的Android開(kāi)
    的頭像 發(fā)表于 03-21 15:42 ?586次閱讀
    【Android開(kāi)發(fā)者必看】使用JetBrains TeamCity為Android項(xiàng)目構(gòu)建<b class='flag-5'>CI</b>/<b class='flag-5'>CD</b>管道詳細(xì)指南

    模型測(cè)試全流程實(shí)戰(zhàn)沙盤(pán),賦能CI/CD及SiL測(cè)試 ——TPT Workshop邀請(qǐng)函

    北匯信息將于4月18日在上海市閔行區(qū)虹橋鎮(zhèn)紫秀路100號(hào)4幢3C室舉辦為期1天的“模型測(cè)試全流程實(shí)戰(zhàn)沙盤(pán),賦能CI/CD及SiL測(cè)試”相關(guān)內(nèi)容的交流探討,誠(chéng)邀各位新老客戶(hù)朋友參加!
    的頭像 發(fā)表于 03-26 15:44 ?259次閱讀
    模型測(cè)試全<b class='flag-5'>流程</b>實(shí)戰(zhàn)沙盤(pán),賦能<b class='flag-5'>CI</b>/<b class='flag-5'>CD</b>及SiL測(cè)試 ——TPT Workshop邀請(qǐng)函

    Jenkins和Docker自動(dòng)化CI/CD流程

    要想做到一個(gè)高效的CI/CD流程,需要有能力整合DevOps工具鏈及多環(huán)境適配,并且設(shè)計(jì)之初以自動(dòng)化為原則,如一鍵部署、一鍵升級(jí)。
    的頭像 發(fā)表于 05-14 11:50 ?291次閱讀
    Jenkins和Docker自動(dòng)化<b class='flag-5'>CI</b>/<b class='flag-5'>CD</b>全<b class='flag-5'>流程</b>