成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

在 GitLab 上構建 CI 流水線

系統(tǒng) Linux
連續(xù)集成(CI)是指代碼變更會被自動構建和測試。以下是我為自己的 C++ 項目構建 CI 流水線的過程。

本文介紹如何在 GitLab 上配置 CI 流水線。我在前面的文章中介紹了 基于 CMake 和 VSCodium 的構建系統(tǒng) 和 基于 GoogleTest 和 CTest 的單元測試。本文將在此基礎上進一步配置 CI 流水線。我會先演示如何布設和運行 CI 流水線,然后再介紹如何配置它。

CI 是指提交到代碼倉庫的代碼變更會被自動構建和測試。在開源領域,GitLab 是一個流行的 CI 流水線平臺。除了作為中心 Git 倉庫外,GitLab 還提供 CI/CD 流水線、問題跟蹤issue tracking 和 容器注冊表container registry功能。

相關術語

在進入正題之前,我先介紹在本文和 GitLab 文檔 中會遇到的常見術語。

  • 持續(xù)交付continuous delivery(CD):自動化供應軟件,以供隨時交付
  • 持續(xù)部署continuous deployment(CD):自動化軟件發(fā)布
  • 流水線pipeline: CI/CD 的直接構件,它由階段和作業(yè)構成
  • 階段stage:一組作業(yè)
  • 作業(yè)job:某項需要執(zhí)行的具體任務,比如編譯、單元測試等
  • 執(zhí)行器runner:實際執(zhí)行作業(yè)的服務

布設 CI 流水線

在下面的章節(jié)中,我將復用以前的 示例工程。點擊 GitLab 倉庫頁面右上角的 復刻Fork

Fork the projectFork the project

設置執(zhí)行器

為了讓你對整個流程有所了解,我們先從在本地安裝執(zhí)行器講起。

參照執(zhí)行器服務 安裝指南 安裝好服務,然后注冊執(zhí)行器。

1、選擇 GitLab 項目頁面左側的 設置Settings,再選擇 CI/CD。

Select CI/CD in SettingsSelect CI/CD in Settings

2、展開 執(zhí)行器Runners 區(qū)域,關閉 共享的執(zhí)行器Shared runners

Configure runnerConfigure runner

3、在終端中運行 gitlab-runner register,根據(jù)提示輸入以下注冊信息:

  • GitLab 實例: https://gitlab.com/ (如上圖)
  • 注冊令牌:從執(zhí)行器區(qū)域中獲取 (如上圖)
  • 描述:按需自由填寫
  • 標簽:可以不填
  • 執(zhí)行環(huán)境:選 Shell

如果有需要,你可以在 ~/.gitlab-runner/config.toml 中修改這些配置。

4、用命令 gitlab-runner run 啟動執(zhí)行器。你可以在 GitLab 的項目設置界面執(zhí)行器區(qū)域看到執(zhí)行器的狀態(tài):

Available specific runnersAvailable specific runners

運行流水線

前面已經(jīng)提過,流水線就是一組由執(zhí)行器執(zhí)行的作業(yè)。每個推送到 GitLab 的提交都會生成一個附加到該提交的流水線。如果多個提交被一起推送,那么只會為最后一個提交生成流水線。為了演示,我直接在 GitLab 在線編輯器中提交和推送修改。

打開 README.md 文件,添加一行數(shù)據(jù):

Web editorWeb editor

現(xiàn)在提交修改。

這里注意默認的行為是為提交新建一個分支,為了簡便起見,我們擇提交到主分支。

Commit changesCommit changes

提交后一會兒后,你就應該改能看到 GitLab 執(zhí)行器執(zhí)行的控制臺中有輸出消息:

Checking for jobs... received job=1975932998 repo_url=<https://gitlab.com/hANSIc99/cpp\_testing\_sample.git> runner=Z7MyQsA6
Job succeeded duration_s=3.866619798 job=1975932998 project=32818130 runner=Z7MyQsA6

在 GitLab 項目概覽界面左側選擇 CI/CD --> 管道Pipelines,查看最近執(zhí)行的流水線:

Pipeline overviewPipeline overview

選中流水線可以在詳情界面看到哪些作業(yè)失敗了,并能查看各個作業(yè)的輸出。

當遇到非零返回值是就認為作業(yè)執(zhí)行失敗了。在下面的例子中我通過調(diào)用 exit 1 強制讓作業(yè)執(zhí)行失?。?/p>

Job overviewJob overview

CI 配置

階段、流水線和作業(yè)的配置都在倉庫根目錄的 .gitlab-ci.yml 文件中。我建議使用 GitLab 內(nèi)置的流水線編輯器,它會自動對配置進行檢查。

stages:
- build
- test
build:
  stage: build
  script:
    - cmake -B build -S .
    - cmake --build build --target Producer
  artifacts:
    paths:
      - build/Producer
RunGTest:
  stage: test
  script:
    - cmake -B build -S .
    - cmake --build build --target GeneratorTest
    - build/Generator/GeneratorTest
RunCTest:
  stage: test
  script:
    - cmake -B build -S .
    - cd build
    - ctest --output-on-failure -j6

文件中定義了兩個階段:build 和 test,以及三個作業(yè):buildRunGTest 和 RunCTest。其中作業(yè) build 屬于一個同名的階段,另外兩個作業(yè)屬于階段 test。

script 小節(jié)下的命令就是一般的 Shell 命令。你可以認為是將它們逐行輸入到 Shell 中。

我要特別提及 產(chǎn)物artifact 這個特性。在示例中我定義了二進制的 Producer 為作業(yè) build 的產(chǎn)物。產(chǎn)物會被上傳到 GitLab 服務器,并且可以從服務器的這個頁面上被下載:

Pipeline artifactsPipeline artifacts

默認情況下,后續(xù)階段的作業(yè)會自動下載先前階段作業(yè)生成的所有產(chǎn)物。

你可以在 docs.gitlab.com 上查看 gitlab-ci.yml 參考指南。

總結

上面只是一個最基本的例子,讓你對持續(xù)集成的一般原則有一個了解。再演示中我禁用了共享執(zhí)行器,然而這才是 GitLab 的優(yōu)勢所在。你可以在一個干凈的容器化的環(huán)境中構架、測試和部署程序。除了使用 GitLab 提供的免費執(zhí)行器,你也可以用自己的容器作為執(zhí)行器。當然還有更高階的用法:用 Kubernetes 來協(xié)調(diào)調(diào)度執(zhí)行者容器,讓流水線適應大規(guī)模使用的使用場景。如需進一步了解,可以查看 about.gitlab.com。

如果你使用的是 Fedora,需要注意的一點是目前 GitLab 執(zhí)行者還不支持用 Podman 作為容器引擎。(LCTT 譯注:Podman 是 Fedora 自帶的容器引擎。)根據(jù) 議題issue #27119,對 Podman 支持已將列上日程。(LCTT 譯注:Podman 4.2 及以上版本增加了對于 GitLab 執(zhí)行器的支持。)

把重復性的操作描述成作業(yè),并將作業(yè)合并成流水線和階段,可以讓你跟蹤它們的質(zhì)量而不增加額外工作。。特別是在大型社區(qū)項目中,適當配置的 CI 可以告訴你提交的代碼是否對項目有改善,為你接受或拒絕合并請求提供依據(jù)。

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2019-11-07 09:00:39

Jenkins流水線開源

2022-07-18 06:05:28

Gitlab流水線

2021-01-05 08:39:51

容器前端流水線

2017-03-02 14:12:13

流水線代碼Clojure

2025-05-08 07:36:57

DevOpsSpringCI/CD

2017-03-15 10:08:26

軟件開發(fā)流水線

2021-04-29 08:55:54

GitLabDevOps項目

2017-02-28 16:00:45

DevOpsMarkdownreST

2023-05-10 15:08:00

Pipeline設計模式

2017-02-28 15:40:30

Docker流水線Azure

2024-01-07 12:47:35

Golang流水線設計模式

2013-06-06 09:31:52

2021-11-08 07:41:16

Go流水線編程

2023-04-02 21:49:10

開源Tekton

2022-08-09 08:42:15

引擎方案

2021-06-26 14:22:34

Tekton流水線Kubernetes

2022-01-26 08:12:42

Jenkins開源流水線

2019-11-07 10:02:33

開源開源工具DevOps

2021-06-18 05:48:02

Tekton DevopsKubernetes

2023-09-27 08:24:49

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 美女国产 | 亚洲国产aⅴ成人精品无吗 欧美激情欧美激情在线五月 | 欧美日韩专区 | av一级| 中文字幕亚洲一区二区三区 | 超碰人人做| 国产成人精品免高潮在线观看 | 日本三级全黄三级三级三级口周 | 亚洲一区二区三区高清 | 91亚洲国产成人久久精品网站 | 日本不卡一区 | 亚洲综合视频 | 欧美一区二区三区 | 福利网址| 久久久久亚洲 | 超碰成人在线观看 | av网站免费看 | 亚洲最新网址 | 超碰精品在线 | 一a一片一级一片啪啪 | 国产日韩欧美精品一区二区三区 | 999免费观看视频 | 国产中的精品av涩差av | 亚洲天堂精品一区 | 欧美日韩亚洲一区 | 四虎影视一区二区 | 一级毛毛片 | 亚洲成人免费av | 亚洲成人精品在线观看 | 欧美在线一区二区三区 | 午夜在线观看免费 | 国产成人高清视频 | 日韩一区二区三区精品 | 中文字幕第一页在线 | 美女视频一区二区 | 亚洲欧美网站 | 国产一区二区激情视频 | 国偷自产av一区二区三区 | 国产人成精品一区二区三 | 黄色大片在线 | 欧美黑人体内she精在线观看 |