女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

馬哥Linux運維 ? 來源:馬哥Linux運維 ? 2023-12-08 09:50 ? 次閱讀

CI/CD原理、yaml語法、.gitlab-ci.yml配置、runner流程等文章也許你已經看了不少,但是還沒實際操作過的同學相信也很多。下面帶你實際操作一把CI/CD,串一串學過的知識點。

什么是CI/CD

通俗來說就是啟動一個服務,能夠監聽代碼變化,然后自動執行打包,發布等流程;

拿最簡單的靜態頁項目部署流程舉例:首先需要手動npm run build后,再將dist文件夾通過工具上傳到服務器的某個目錄下,再啟動配置好的nginx等服務器程序;有時為了調試,不得不頻繁發布測試......

“懶是促進技術進步的原動力”

如果我們修改代碼后,能夠自動完成后續的那一堆任務那該多好,CI/CD的概念發展了起來。

可見要實現自動化,我們最起碼需要兩個關鍵步驟:

1. 監聽代碼變化;

2. 執行后續的各種任務;

而gitlab為我們提供了現成的工具gitlab-runner,能夠幫助我們實現上面所述的步驟;我們只需要按照官方說明,在自己的服務器上安裝gitlab-runner,并在項目倉庫里注冊其相應的信息即可。

gitlab-runner的主要作用

1. 監聽來自gitlab的各種消息(如:代碼push);

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

如何自動化構建、自動化測試、自動化部署?那都是.gitlab-ci.yml中的Job,后面會介紹。

也就是說,自動化流程都可以通過.gitlab-ci.yml中的Job的Shell指令來實現。下面進入正題,我們先來搭建CI/CD所需的環境。

搭建gitlab CI/CD

1. 創建gitlab倉庫

首先創建一個gitlab倉庫(本示例里叫做testCI,是用vue-cli創建的一個樸實無華的項目)。進入項目后看到界面如下:

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

打開左側菜單Settings > CI/CD項,可以看到Runners項,點擊右側按鈕Expand:

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

gitlab CI/CD需要我們自己的服務端啟動gitlab-runner,而gitlab-runner啟動后得到的服務進程就叫做Runner;每個gitlab項目都可以綁定多個Runner。

下面創建Runner的索引,用來關聯當前項目倉庫與后面的**Runner**進程

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

2. 創建Runner索引

這里我們點擊New project runner按鈕去新建一個Runner索引,界面入下:

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

然后按照以下步驟操作:

1. 選擇Runner服務器的操作系統

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

3. 點擊創建按鈕Create runner進入Runner注冊指令頁面

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

到這里,需要在gitlab完成的操作已經結束,下面開始服務器端的配置流程。

對于只想試試看的同學可以在自己電腦上進行下面的操作,也就是把自己的電腦作為服務器。

3. 創建Runner服務

正如開頭我們介紹過,我們的服務器要監聽gitlab的push消息就需要安裝gitlab-runner軟件,啟動后就創建了Runner服務。

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

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

當這5步執行完畢后,終端輸入gitlab-runner status查看gitlab-runner運行狀況:

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

Runner服務啟動成功。

2. 執行Step1指令進行注冊:

gitlab-runner register --url https:


該指令用于將當前的Runner注冊到gitlab并與我們的前面創建的Runner索引信息綁定在一起。

輸入該指令后會有3步交互式輸入:

a. 設置gitlab地址;直接點擊回車即可。

b. 設置Runner的名字;隨便寫,這里是test-ci

c. 設置Runner的執行器類型;這里選擇shell類型。

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

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

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

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

到這里,gitlab CI所需的環境算是搭建完成了!

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

回到gitlab開始的CI/CD頁面,就可以看到新建的Runner服務可以使用了。

4. 編寫.gitlab-ci.yml文件(后續補一篇配置項解析文章)

Runner會讀取項目根目錄下的.gitlab-ci.yml文件,執行其中的任務,我們在項目根目錄下添加.gitlab-ci.yml文件:

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

內容如下:


stages:
  - dev
  - test


測試dev:
  stage: dev
  tags:
     - test
  script:
    - npm i
    - npm run dev


測試test:
  stage: test
  tags:
     - test
  script:
    - echo "Running test..."

這里規定了兩個任務階段:dev與test,同時創建了兩個Job:測試dev與測試test,并將測試dev掛載在了dev階段,將測試test掛載在了test階段;

這兩個Job要注意tags需要與gitlab上創建的Runner索引的tags相同,不然不會執行!

5. push代碼試一下

將代碼修改push到git倉庫,就能看到Runner終端有反饋了!同時可以看一下gitlab倉庫的Pipelines頁面:

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

可以看到dev階段正在執行中(上圖所示的“狀態圖標”為“進行中”)。

如果任務一直處于等待狀態,可能是gitlab訪問不到本地Runner服務的IP地址,或者網絡有問題,如圖:

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

可以點擊“狀態圖標”看下日志頁面:

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

發現npm run dev熟悉的輸出,可以在服務端(這里是本地開發環境)打開該鏈接看一下:

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

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

總結

到這里,其實主要目的已經達到了:

1. 我們成功搭建了gitlab CI/CD所需的環境;

2. 實現了服務端監聽git的push行為;

3. 服務端Runner執行了.gitlab-ci.yml文件上的Job。

若要實現更復雜的流程,只需要完善.gitlab-ci.yml文件中的配置。

后續改進

上面我們搭建了gitlab CI/CD所需的環境,并成功執行了本地的npm run dev。由于npm run dev指令是持續性的任務,導致測試dev是無法完成的Job,進而導致dev階段一直處于運行狀態,而test階段無法開始;我們修改下配置(npm run dev -> npm run build):


stages:
  - dev
  - test


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

最終運行結果如圖:

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

全部Job順利執行完畢:

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

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

結束

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

1. 我們將修改的代碼push到gitlab倉庫;

2. gitlab將push消息發送到我們的服務器,服務器Runner接收到消息;

3. 服務器Runner將倉庫代碼pull下來,按照.gitlab-ci.yml 文件執行Job;

4. 服務器Runner將構建信息(例如測試報告,終端輸出等)上傳到 GitLab 。

GitLab 服務器根據 Runner執行結果,更新項目的 CI/CD 狀態和日志,并通知相關的用戶或團隊。

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

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

通過上面的演示,我們完成了一個前端項目最基本的gitlab CI/CD流程,功能很簡單,但是相信沒上手實踐過的同學對其基本原理與流程能有一定的了解,今后在看相關文章時也能有一個基本的概念(版權歸掘金硬毛巾原作者所有,侵刪)

審核編輯:黃飛

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 服務器
    +關注

    關注

    12

    文章

    9681

    瀏覽量

    87234
  • 操作系統
    +關注

    關注

    37

    文章

    7077

    瀏覽量

    124913
  • 指令
    +關注

    關注

    1

    文章

    614

    瀏覽量

    36213
  • 代碼
    +關注

    關注

    30

    文章

    4886

    瀏覽量

    70222

原文標題:寫給還沒玩過gitlab CI/CD的你,保證能學會

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    如何充分利用Heroku CI

    ci/cd heroku 持續集成和持續交付(CI / CD)是當今軟件工程開發過程中的最佳實踐。持續集成 (CI)允許開發人員針對在其項目
    發表于 09-15 08:43

    請問下哪些CI/CD工具是支持Arm 架構的

    我在為一個開源項目啟用 CI 管道,請問下哪些CI/CD工具是支持Arm 架構的?
    發表于 09-21 11:29

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

    一點補充:Circle CI可以自動清除GitHub上的冗余build。如果在同一分支上觸發了較新的build,則該工具會識別并取消正在運行或排隊的舊build——包括尚未完成的build。
    的頭像 發表于 09-08 09:17 ?9.4w次閱讀

    運營商該如何在內部和外部網絡中實施CI/CD實踐

    調查表明,有42%受訪企業希望在2019年底之前對NFV的內部業務實施CI/CD實踐,66%受訪CSP希望在2020年底之前實施CI/CD。
    發表于 12-19 10:56 ?1064次閱讀

    五個開發者必知的CI/CD工具

    一旦你選擇了最好的CI/CD工具,你將繼續你的DevOps生命周期。如果操作得當,它將能夠提高產品質量并鼓勵你的團隊充滿自信地進行發布游戲。
    的頭像 發表于 02-14 16:43 ?3496次閱讀

    提高CI/CD系統可觀察性的四種技術

    可觀察性是DevOps團隊的重要組成部分,它可以幫助組織從系統的輸出信息,推斷系統內部狀態。它是一個持續的過程,從你的CI/CD流水線開始,并貫穿于應用程序的整個生命周期。 可觀察的CI/CD
    的頭像 發表于 08-17 09:31 ?7282次閱讀

    基于Kubernetes實現CI/CD配置的流程

    基于 Kubernetes 實現 CI/CD 配置,其實和往常那些 CI/CD 配置并沒有太大區別。
    的頭像 發表于 02-08 16:51 ?1737次閱讀

    面對CI/CD分析的代碼靜態測試工具Klocwork 2023.1版本更新快訊

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

    DevOps的最佳CI/CD工具

    CI/CD是一種 DevOps 方法,它結合了持續集成和持續交付的概念,允許企業通過在軟件開發生命周期中集成自動化來始終如一地向客戶交付應用程序。
    的頭像 發表于 07-11 11:06 ?867次閱讀

    如何在DevOps環境中實施測試用例管理

    由于DevOps 工作流程使用CI/CD 方法進行軟件開發,因此您的測試管理工具還應該能夠與GitLab 和Jenkins 等CI/
    的頭像 發表于 01-29 09:30 ?1812次閱讀
    如何在DevOps環境中實施測試用例管理

    Perforce靜態分析工具2024.2新增功能:Helix QAC全新CI/CD集成支持、Klocwork分析引擎改進和安全增強

    實現持續合規性現代軟件開發實踐要求開發團隊具備適應性,在確保代碼質量和可靠性的同時,優先考慮靈活性和協作性。在軟件開發流程中實施持續集成(CI)和持續交付(CD)流
    的頭像 發表于 10-08 16:22 ?540次閱讀
    Perforce靜態分析工具2024.2新增功能:Helix QAC全新<b class='flag-5'>CI</b>/<b class='flag-5'>CD</b>集成支持、Klocwork分析引擎改進和安全增強

    CI/CD方案:推動智能汽車開發的高效利器

    (持續集成與持續交付/部署)方案為汽車行業帶來了巨大的變革契機。本文將聚焦CI/CD方案在智能汽車領域的核心價值,并探討如何通過標準化的CI/CD
    的頭像 發表于 12-18 10:03 ?938次閱讀
    <b class='flag-5'>CI</b>/<b class='flag-5'>CD</b>方案:推動智能汽車開發的高效利器

    【Android開發者必看】使用JetBrains TeamCity為Android項目構建CI/CD管道詳細指南

    CI/CD】定義明確的構建、測試和部署工作流對Android應用的開發至關重要。JetBrains TeamCity是一個用于構建可靠管道的CI/CD平臺,可與流行的Android開
    的頭像 發表于 03-21 15:42 ?444次閱讀
    【Android開發者必看】使用JetBrains TeamCity為Android項目構建<b class='flag-5'>CI</b>/<b class='flag-5'>CD</b>管道詳細指南

    模型測試全流程實戰沙盤,賦能CI/CD及SiL測試 ——TPT Workshop邀請函

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

    Jenkins和Docker自動化CI/CD流程

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