1. 程式人生 > >GitLab 自動觸發 Jenkins 構建

GitLab 自動觸發 Jenkins 構建

GitLab 是當前應用非常廣泛的 Git Hosting 工具,Jenkins 是非常牛逼的持續整合工具。儘管 GitLab 有內建的 GitLab CI,但它遠沒有 Jenkins 那麼強大好用。Jenkins 和 GitLab 在兩者的結合上,都提供了非常方便的工具。在我們向 GitLab push 程式碼,或執行其它一些操作時,GitLab 可以將這些時間通知給 Jenkins,trigger Jenkins 工程的構建自動執行。

要實現在向 GitLab push 程式碼時,自動 trigger Jenkins 工程執行構建動作,需要在 GitLab 和 Jenkins 的多個地方做配置:(1)、在 Jenkins 中安裝外掛;(2)、配置 GitLab 使用者;(3)、配置 Jenkins 伺服器;(4)、配置 Jenkins 工程;(5)、配置 GitLab 工程。

在 Jenkins 中安裝外掛

選擇 系統管理 -> 管理外掛 開啟外掛管理也頁面,如下圖:

6f6248e7b49db0affbceacf0c50642db.jpg

建立測試工程

為了便於測試,這裡分別先在 Jenkins 和 GitLab 上建立測試工程。在 Jenkins Dashboard 主頁點選 新建任務,進入新建任務頁面:

在輸入框中輸入工程名,選擇 構建一個自由風格的軟體專案,然後點選左下角的 確定按鈕,進入工程配置頁面。

在工程配置頁面的 原始碼管理部分,輸入 GitLab repo 的 URL,如下圖:

如果是 https 形式的 URL,記得配置登入 GitLab 的使用者名稱和密碼,通過點選 Credentials

行最後面的 Add -> Jenkins 按鈕,在彈出的如下對話方塊中輸入使用者名稱和密碼:

ee7240393baf265df54971f0b7cd9a07.jpg

Add 之後,在 Credentials 的下拉框中選擇這組使用者名稱和密碼。沒有新增 GitLab 的使用者密碼的話,Jenkins 報錯 —— 無法訪問 repo,如下圖:

3b1c8e41cdcd605986399938e54cf9d0.jpg

隨後點選左下角的 儲存 按鈕,完成 Jenkins 工程的建立,並將它與 GitLab 的工程關聯起來。

配置 GitLab 使用者

建立一個使用者或選擇一個已有使用者,用來讓 Jenkins 和 GitLab API 互動。這個使用者將需要是全域性的管理員或新增進每個組/工程,並作為成員。需要開發者許可權來報告構建狀態。這是由於,當使用了 ‘Merge when pipeline succeeds’ 功能時,成功的構建狀態可以觸發合併。GitLab Plugin 的一些功能可能需要其它的一些許可權。比如,有一個選項用於在構建成功時,接受 merge request。使用這一功能需要 developer,master 或 owner 級的許可權。

選擇 Settings -> Account

e4b9e012af44f73d5a3d36f2c9d56c67.jpg

拷貝其中的 Private token,稍後在配置 Jenkins 伺服器時會用到。

配置 Jenkins 伺服器

需要配置 Jenkins 伺服器來與 GitLab 伺服器通訊。

在 Jenkins 中,選擇 系統管理 -> 系統設定,在系統設定中找到 GitLab 的部分:

8a402df3d976f58ecd58f2025e785f9e.jpg

Connection name 後的輸入框中輸入連線名稱,在 Gitlab host URL 後的輸入框中輸入 GitLab 伺服器的 URL 地址。點選 Credentials 行最後面的 Add -> Jenkins 按鈕,彈出如下對話方塊,在 * Kind* 後的下拉列表中選擇 GitLab API token,並把上一步拷貝的 Private token 貼上到 API token 後面的輸入框中。隨後在 Credentials 的下拉框中選擇 GitLab API token

配置 Jenkins 工程

開啟 Jenkins 工程的配置頁面,找到 構建觸發器 的部分,勾選 Build when a change is pushed to GitLab 那一行:

需要記下 Build when a change is pushed to GitLab 那一行中,GitLab CI Service URL: 後面的 URL,後面在配置 GitLab 工程時需要用到。

還要點開右下角的 高階

隨後點選右下角的 Generate 按鈕,生成 Secret token,儲存這裡生成的 Secret token,它同樣將用於後面 GitLab 的配置。隨後點選左下角的 儲存 按鈕,儲存前面所做的配置。

配置 GitLab 工程

建立一個新的或選擇一個已有的 GitLab 工程。然後選擇 Settings -> * Integrations*,在 URL 一欄中輸入前面儲存的 GitLab CI Service URL,在 Secret Token 一欄中輸入前面儲存的 Secret token,然後選擇需要 trigger Jenkins 工程執行構建的事件:

點選綠色的 Add webhook 按鈕,完成 webhook 的建立。

建立好了 webhook 之後,點選 Test 下拉框中的 Push events,如下圖:

截圖_2018-03-27_16-04-52.png

可以手動產生事件,觸發 Jenkins 工程。點選 Edit,在 webhook 的編輯頁面,拉到頁面底部,還可以看到,該 webhook 最近的呼叫情況,如下圖:

點開特定呼叫的 View details,還可以看到這次呼叫的詳細情況,如下圖:

截圖_2018-03-27_16-14-30.png

由此不難理解,GitLab trigger Jenkins 工程,主要是通過向 Jenkins 伺服器傳送一個 POST 請求實現的。

驗證測試

修改我們的 GitLab 測試工程中的檔案,並 push 到 GitLab 伺服器上:

➜  test_for_gerrit git:(master) echo "Hello, world" >> read2.md

➜  test_for_gerrit git:(master) ✗ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   read2.md

no changes added to commit (use "git add" and/or "git commit -a")
➜  test_for_gerrit git:(master) ✗ git add .
➜  test_for_gerrit git:(master) ✗ git commit -m "Add test data."
➜  test_for_gerrit git:(master) git push
warning: push.default is unset; its implicit value has changed in
Git 2.0 from 'matching' to 'simple'. To squelch this message
and maintain the traditional behavior, use:

  git config --global push.default matching

To squelch this message and adopt the new behavior now, use:

  git config --global push.default simple

When push.default is set to 'matching', git will push local branches
to the remote branches that already exist with the same name.

Since Git 2.0, Git defaults to the more conservative 'simple'
behavior, which only pushes the current branch to the corresponding
remote branch that 'git pull' uses to update the current branch.

See 'git help config' and search for 'push.default' for further information.
(the 'simple' mode was introduced in Git 1.7.11. Use the similar mode
'current' instead of 'simple' if you sometimes use older versions of Git)

Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 312 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 0 (delta 0)
To ssh://[email protected]:22222/cloudgame/test_for_gerrit.git
   23660c1..e86152a  master -> master
➜  test_for_gerrit git:(master) 

隨後迅速地就能在 Jenkins 中,測試工程主頁面的左下方,看到由 GitLab push 所 trigger 起來的構建任務:

b71d56e3e77859f966d8ceac1738a89a.jpg

在由 GitLab push 所 trigger 起來的構建任務的下方,會顯示構建任務是由誰 push 的程式碼所 trigger 起來的。開啟特定構建任務的 控制檯輸出 可以看到構建的詳細過程:

參考文件:

Done.

相關推薦

Gitlab自動觸發Jenkins構建打包

一、目的 在部門的測試環境中,開發人員一旦向gitlab倉庫提交成功程式碼,gitlab就會自動觸發jenkins構建專案。當然在構建後還可以新增專案部署或者自動化測試的指令碼。這裡只針對測試環境。 二、Jenkins配置 2.1 安裝Gitlab Hook Plugi

GitLab 自動觸發 Jenkins 構建

GitLab 是當前應用非常廣泛的 Git Hosting 工具,Jenkins 是非常牛逼的持續整合工具。儘管 GitLab 有內建的 GitLab CI,但它遠沒有 Jenkins 那麼強大好用。Jenkins 和 GitLab 在兩者的結合上,都提供了非

gitlab push程式碼通過webhooks自動觸發jenkins構建設定

1、環境設定:jenkins及gitlab安裝好 3、配置jenkins job,如下: 4.登入gitlab找到相應專案,編輯新增webhooks: 點選test,提示201, 5、其他提示: gitlab的webhooks url 是根據jenkins構建許可權

GitLab提交程式碼之後自動觸發Jenkins構建

GitLab伺服器和Jenkins伺服器可以通過Web Hook的方式進行通訊。 1)在Jenkins伺服器中,安裝GitLab

Gitlab 自動化觸發 Jenkins 構建項目

一個 gitlab image 提交 自動 重新 ces 技術 block 一、整體流程 二、Jenkins 安裝插件 要實現 gitlab 自動觸發的功能,我們需要安裝一個插件Gitlab Hook Plugin。 三、重新配置任務 在之前的任務裏面,在構建觸發器多了

webhook實現提交程式碼自動觸發Jenkins構建任務(三)

來源:https://www.cnblogs.com/xiao-fy/p/7537984.html 通過前面兩篇文章,搭建Jenkins實現了下面這些功能: 1.從Gitlab中拉取原始碼 2.通過maven進行編譯並打包 3.把打好的war包傳送到目標主機 4.執行部署指令碼。 如果能

gitlab自動化觸發jenkins構建專案

1.安裝gitlab,官網說的很詳細,自行安裝 2.開啟jenkins配置勾選觸發器下的gitlab觸發器,後邊的url記下來。留著自動化使用 3.配置gitlab 建立gitlab專案,單擊右上角New Project,出現如下介面 單

gitlab hook觸發jenkins自動構建

意義,gitlab推送或合併程式碼後觸發jenkin自動構建釋出程式碼或者執行命令推送規則 1.安裝gitlab和hook外掛    有時需要重啟jenkins服務,可能相容性問題,安裝完之後構建中看不到hook外掛        

gitlab提交程式碼自動觸發webhook構建jenkins專案

1:環境配置     Debian 3.16.43     jenkins2.121.12:描述        前端開發人員想程式碼提交到gitlab然後自

【06】JenkinsGitlab 自動觸發構建以及釘釘通知

寫在前面的話   在某些時候,我們希望能夠實現這樣一個功能,當用戶提交東西到 gitlab 上的時候,希望它能夠自動觸發構建,釋出到我們需要的環境。 目前我們內部有做類似的需求:產品提交原型到 gitlab,然後 gitlab 分支變動觸發 Jenkins 構建,將最新的產品原型釋出到 ngi

持續整合之GitLab觸發Jenkins構建專案

一:目的為在公司的測試環境當中一旦開發向GitLab倉庫提交成功程式碼,GitLab通知Jenkins進行構建專案、程式碼質量測試然後部署至測試環境,注意這只是測試環境,而生產環境依然需要手動部署程式碼: 1.1:jenkins配置:1.1.1:安裝Gitlab Hook Plugin外掛:#系統管理-管理

【FAQ】如何在新打git tag入庫後自動觸發Jenkins任務?

原理: jenkins配置: 1,原始碼管理(Git): Refspec:+refs/tags/*:refs/remotes/origin/tags/* Branch Specifier (blank for 'any'):** 2,構建觸發器: Poll SCM:打

建立Jenkins構建觸發器,程式碼提交至gitLab自動觸發構建

  下載所需外掛,系統設定--》外掛管理,搜尋以下兩個外掛,選擇安裝 登入gitLab,生成一個Personal Access Tokens    進入Jenkins,新增api token,路徑:首頁--》憑據--》新增憑據 新增後再次開啟,如圖所

gitlab實現webhook觸發jenkins 自動,構建,測試,push webhook構子 總結

ref 安裝 harbor 14. 允許 安全管理 rbo 觸發器 代碼 最新一直在學習 工作 + 學習 去掉 90% 所以blog 一直沒更 真是很不好! exsi ceph gitlab jenkins harbor k8s docker-compose ap

自動化部署之jenkins自動觸發構建和發布

jenkins 自動觸發構建 一、下載gitlab pluginjenkins-->系統管理-->管理插件-->下載並安裝gitlab plugin二、配置gitlab認證路徑:Jenkins-->Credentials-->System-->Global cred

SVN怎麽觸發Jenkins自動構建

tps pat adding 403錯誤 啟用 html roc png body 通常,有幾種方式可以在SVN倉庫發生改變時觸發Jenkins進行構建。第一種是,Jenkins主動輪詢SVN倉庫;第二種是,在SVN客戶端(如TortoiseSVN)創建客戶端hooks來觸

利用GitLab webhook來實現觸發Jenkins自動操作

監聽 ab測試 匿名 jenkin 本機 事件 版本 strong host 本文針對如何設置GitLab以及Jenkins,實現每次GitLab上有提交事件的時候,都能觸發Jenkins執行相應的操作,主要分為以下幾個步驟: 1、新建GitLab測試用例 進入個人GitL

Jenkins持續集成 之 hook自動觸發構建

pre process 技術分享 term ges size 網址 推送 人員 一、場景描述 當開發人員把代碼推送到GitLab遠程倉庫時,觸發Jenkins把該倉庫的代碼,按要求自動發布到生產環 境的服務器上。 二、配置Jenkins服務器免密碼登陸生產服務器 參考網址:

安裝配置jenkisn是的gitlab上可以通過webhook自動觸發構建

Jenkins是開源的,使用Java編寫的持續整合的工具,在Centos上可以通過yum命令列直接安裝。記錄下安裝的過程,方便以後查詢。需要先安裝Java,如果已經Java可以跳過該步驟。 1.安裝Java   看到當前系統Java版本的命令:   java -ve

向GitHub提交程式碼時觸發Jenkins自動構建

當我們提交程式碼到GitHub後,可以在Jenkins上執行構建,但是每次都要動手去執行略顯麻煩,今天我們就來實戰Jenkins的自動構建功能,每次提交程式碼到GitHub後,Jenkins會進行自動構建; 前期準備工作 進行本章的實戰前,推薦您參照《docker下的