1. 程式人生 > >GitLab-CI持續整合(CI)的介紹與執行機制

GitLab-CI持續整合(CI)的介紹與執行機制

 GitLab持續整合(CI)的介紹與執行機制

GitLab-CI

GitLab-CI就是一套配合GitLab使用的持續整合系統(當然,還有其它的持續整合系統,同樣可以配合GitLab使用,比如Jenkins)。而且GitLab8.0以後的版本是預設集成了GitLab-CI並且預設啟用的。

首先要明白它的組成. 它有兩個東西來支撐:

  1. gitlab-ci server
  2. gitlab-ci-runner

gitlab-ci server負責排程、觸發Runner,以及獲取返回結果.

而gitlab-ci-runner則是主要負責來跑自動化CI的一個宿主機子.

那麼我們總結一下流程,其實是這個樣子的

:

GitLab-Runner

GitLab 8.0+提供了持續整合的功能,在GitLab中有個Runners的概念。runner可以想象成一個守護程序,來守護你註冊好的servicegitlab-ci繫結. 一個宿主機裡的runner可以維護多個不同的service. gitlab-ci在收到需要build的請求時,會通知service執行你在.gitlab-ci.yml裡面指定好的指令碼,然後根據命令列的返回結果來決定這次build的成功還是失敗.

在瞭解完了這些概念以後我們就可以很輕鬆的搭建一個runner.

Runner一共有三種類型

1) 本地Runner

2) 普通的伺服器上的

Runner

3) 基於DockerRunner

Runner可以分佈在不同的主機上,同一個主機上也可以有多個Runner。

Runner型別

GitLab-Runner可以分類兩種型別:Shared Runner(共享型)Specific Runner(指定型)

Shared Runner:這種Runner(工人)是所有工程都能夠用的。只有系統管理員能夠建立Shared Runner。

Specific Runner:這種Runner(工人)只能為指定的工程服務。擁有該工程訪問許可權的人都能夠為該工程建立Shared Runner。

GitLab-CI與GitLab-Runner的關係示意圖

那GitLab-Runner又是什麼東東呢?與GitLab-CI有什麼關係呢?

GitLab-Runner是配合GitLab-CI進行使用的。一般地,GitLab裡面的每一個工程都會定義一個屬於這個工程的軟體整合指令碼,用來自動化地完成一些軟體整合工作。當這個工程的倉庫程式碼發生變動時,比如有人push了程式碼,GitLab就會將這個變動通知GitLab-CI。這時GitLab-CI會找出與這個工程相關聯的Runner,並通知這些Runner把程式碼更新到本地並執行預定義好的執行指令碼。

所以,GitLab-Runner就是一個用來執行軟體整合指令碼的東西。你可以想象一下:Runner就像一個個的工人,而GitLab-CI就是這些工人的一個管理中心,所有工人都要在GitLab-CI裡面登記註冊,並且表明自己是為哪個工程服務的。當相應的工程發生變化時,GitLab-CI就會通知相應的工人執行軟體整合指令碼。如下圖所示:

GitLab CI-CD流程圖

相關推薦

GitLab-CI持續整合CI介紹執行機制

 GitLab持續整合(CI)的介紹與執行機制 GitLab-CI GitLab-CI就是一套配合GitLab使用的持續整合系統(當然,還有其它的持續整合系統,同樣可以配合GitLab使用,比如Jenkins)。而且GitLab8.0以後的版本是預設集成了GitLab-C

CI-持續整合1-軟體工業“流水線”概述

3   持續整合實踐 持續整合的典型的工具就是開源系統 Jenkins。通過對 Jenkins 工具的應用的研究,繪製了一個全流水線的軟體開發圖,如下: 前期 CI 環境準備: 開發人員都開發好相應的程式碼 功能開發人員開發好產品特性程式碼 釋出人員開發好自動化構建和釋出程式碼 測

CI-持續整合2-軟體工業“流水線”技術實現

# coding:utf-8 """ jenkins相關的工具函式及配置 """ from dtlib.dtlog import dlog import jenkins __author__ = 'harmo' jenkins_url = 'http://jenkins.xxxx

持續整合CI – Continuous Integration

持續整合(CI – Continuous Integration)   在傳統的軟體開發中,整合過程通常在每個人完成工作之後、在專案結束階段進行。整合過程通常需要數週乃至數月的時間,可能會非常痛苦。持續整合是一種在開發週期的早期階段進行整合的實踐,以便構建、測試、整合程式碼可以更經常的進行。 CI意味著一

持續整合CI解決測試環境難題

整合測試是用來驗證所提交的系統的地方,也是企業可以實際檢視應用程式並確認已構建的開發是否是其所需要的開發的地方。隨著軟體系統變得越來越元件化,而且由越來越多的服務組成,從程式碼更改到整合測試的延遲時間成為了產品投入市場和開發人員生產力的一個關鍵指標。 理想的過程很簡單。每次開發人員更改程式碼,就

Jenkins是什麼:持續整合CI流程、特點、應用場景

那什麼是持續整合?Jenkins具體用來做什麼,對軟體開發有什麼益處呢? 總得來說,這兩者主要是涉及一個軟體質量的主題,特別是團隊開發軟體專案。下面就來介紹介紹下這兩者。 持續整合 持續整合,Continuous integration ,簡稱CI。 隨著軟體開發複雜度

避免持續整合CI成為一個安全隱患

背景 最近臨時交接了一個客戶測試環境和產品環境的維護工作。交接的客戶資產包含:程式碼庫、生產環境主機、測試環境主機、搭建在測試環境主機上的持續整合伺服器以及對應的賬號密碼。這個持續整合伺服器採用Jenkins搭建,並且可以用來部署測試環境和生產環境的應用。 不久,接到了客戶的一個維護請求:把最新的生產環境資

簡介持續整合CI以及相關工具推薦

雖然並非每個軟體專案都註定會獲得巨大成功,但一些軟體方法和最佳實踐可以提高成功機率,並讓開發工作更愉快。其中現在流行的一種做法是持續整合(CI,Continuous Integration)。 持續整合最初由Grady Booch在布區方法中提出,之後成為

部署:持續整合CI持續交付CD——《微服務設計》讀書筆記

一.CI(Continuous Integration)簡介    CI規則1:儘量頻繁地把程式碼簽入到分支中以進行整合   CI規則2:不光要對語法進行驗,也要提供一系列的自動化來驗證   CI

持續整合CI持續互動CD

一、持續整合(CI——Continuous Integration) 保證新提交的程式碼和已有的程式碼進行整合,使所有人的程式碼保持同步,編譯和測試簽入的程式碼是否通過。 CI過程中,每次產生的構建物(artifact)都放在倉儲(Repo)中。 優點: 快速得到程

使用 TeamCity 實現持續整合CI

持續整合(Continuous Integration),也就是我們經常說的 CI,是現代軟體開發技術的基礎。本文論述瞭如何使用 TeamCity 持續整合工具來實現專案的持續整合。 為我們什麼需要 CI 目前,CI 已在當前業界被許多軟體開發團隊所採用,是一種在整個軟體開發生命週期內保證程式碼質量的常見

.Net Core in Docker - 使用阿里雲Codepipeline及阿里雲容器映象服務實現持續整合CI

前面已經介紹過了 .Net Core 程式釋出到 Docker 容器的內容。但是每次通過 SSH 連結到伺服器敲命令,執行指令碼也是挺麻煩的一件事。程式設計師是最懶的,能讓電腦解決的問題絕不手動解決,如果當我們push一次程式碼後自動build程式碼,自動跑單元測試,如果測試通過,自動釋出程式,如果失敗就發郵

基於阿里雲的Jenkins+Maven+SVN+Tomcat的持續整合-jenkins整合

7、安裝jenkins jenkins的安裝就相對來說簡單的很,jenkins的安裝包本身就是一個專案的war包,我們只需要將jenkins的war包放置在tomcat的wabapp目錄下,並執

使用Jenkins進行持續整合-安裝篇

進行持續整合最流行的工具是Jenkins和CruiseControl,CC比較老牌,但現在Jenkins更流行,所以選用Jenkins。 Jenkins前身是Hudson,改名的原因僅僅是擺脫Oracle的操控(我一直非常討厭oracle這個公司),所以《Maven實戰》書

Ubuntu下的Jenkins 持續整合

Ubuntu下的Jenkins 持續整合 1、需要安裝JDK JDK分為OpenJDK和常用的oracle JDK,一般輸入java -version後出現SE字元的是Oracle公司的,也就是我們常用的JDK。如果是openJDK,請先解除安裝後在安裝oracle的JD

Jenkins持續整合-Jenkins部署Asp.Net網站自動釋出

環境:Windows 2008 R2、Jenkins2.235.1、Visual Studio 2017; 概要   前面寫過一篇文章,《自動釋出-asp.net自動釋出、IIS站點自動釋出(整合SLB、配置管理、Jenkins)》,這個主要是用於投產環境運維平臺自動釋出的整合,對於前面的環節使用Jenkin

[微信小程序直播平臺開發]___介紹流程

手機視頻 html5 pre har 性問題 瀏覽器 所在 頁面 直播 1.一個可以忽略的前言 最近在做的一個項目,客戶要做一個直播平臺,主播發起視頻直播,然後其他人進入房間觀看這樣子,跟其他直播平臺不同的是,主播可以打賞觀眾,噗,不過這些千奇百怪的想法我也見怪不怪了,而

GCC原始碼分析——介紹安裝

原文連結:http://blog.csdn.net/sonicling/article/details/6702031     上半年一直在做有關GCC和LD的專案,到現在還沒做完。最近幾天程式設計的那臺電腦壞了,所以趁此間隙寫一點相關的分析和

Flume中的攔截器Interceptor介紹使用

Flume中的攔截器(interceptor),使用者Source讀取events傳送到Sink的時候,在events header中加入一些有用的資訊,或者對events的內容進行過濾,完成初步的資料清洗。這在實際業務場景中非常有用,Flume-ng 1.6

IPFS介紹環境的搭建

IPFS(一)介紹與環境的搭建 1:What is IPFS 星際檔案系統(InterPlanetary File System). IPFS 是一個分散式的web, 點到點超媒體協議. 可以讓我們的網際網路速度更快, 更加安全, 並且更加開放 ps:這是官方的解釋 在我看來