GitLab + Jenkins + Webhook 實現Push代碼後自動更新| 8月更文挑戰

1、介紹

一般是開發後的代碼先推到Gitlab上管理,而後在Jenkins裏經過腳本構建代碼發佈。這種方式每次在發版的時候,須要人工去執行jenkins上的構建動做,有時顯得過於繁瑣。html

Gitlab的Webhook功能,經過Webhook的相關設置,能夠實現代碼Push後,自動去觸發jenkins上的構建動做,這樣就不須要人工干預去執行操做了。git

2、環境信息

主機名 IP地址 功能
GitLab 172.20.6.11 GitLab-ce 8.8.0
Jenkins 172.20.6.12 Jenkins 2.150.1
Web 172.20.2.10 Nginx

3、環境搭建

3.1 Jenkins部署

On 172.20.6.12web

導入 yum 源vim

wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
複製代碼

安裝及啓動服務bash

yum install jenkins
systemctl start jenkins
systemctl status jenkins
複製代碼

web訪問服務器

3.2 GitLab本地化部署

On 172.20.6.11markdown

wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-8.8.0-ce.0.el7.x86_64.rpm
rpm -i gitlab-ce-8.8.0-ce.0.el7.x86_64.rpm 
vim /etc/gitlab/gitlab.rb 
external_url 'http://172.20.6.11'
gitlab-ctl reconfigure
複製代碼

web訪問app

3.3 在GitLab新建項目,並上傳代碼

3.4 配置 Jenkins

3.4.1 安裝插件

登陸 Jenkins 後臺,依次點擊「系統管理」-「插件管理」-「Avaliable」ssh

必須安裝的插件以下:ide

GitLab Plugin
Publish Over SSH
複製代碼

3.4.2 配置 web 機器

登陸 Jenkins 後臺,依次點擊「系統管理」-「系統設置」

只有 Publish over SSH插件安裝成功,即出現下方配置項,填寫 web 的服務器信息便可

3.4.3 新建構建任務

通用部分配置

設置工做空間目錄爲:/data,並修改目錄權限爲 jenkins

[root@jenkins /]# ll -d /data/
drwxr-xr-x. 7 jenkins jenkins 111 Jan  2 10:52 /data/
複製代碼

3.4.4 源代碼配置

在 Jenkins 服務器上:

ssh-keygen -t rsa -C "jenkins"
# 一路回車, 默認路徑和文件名, 不要密碼
複製代碼

在gitlab的項目下, 點擊右側配置菜單 -> Deploy Keys, 用剛纔建立的 id_rsa_tho.pub 的內容, 建立一個key, 名稱爲 Readonly Key for Jenkins, 若是有多個項目都須要這個私鑰, 則在每一個項目的deploy keys下enable這個key便可。

選擇 Git, 填入gitlab中給的項目地址, 在下面add new credential,

Username: git,

Private Key Enter Directly, 輸入剛纔建立的 id_rsa 的內容, 注意這個是私鑰

3.4.5 構建觸發器配置(Build Triggers)

只有 GitLab 插件安裝成功,此處會顯示該項,後面提供的 URL 地址即爲 webhook 的地址

3.4.6 構建環境(Build Environment)

選擇 步驟2 中添加的 web 機器,保存便可

4、配置 webhook

進入 GitLab,項目,編輯項目,選擇」Webhooks」

gitlab 的 webhooks url 是根據 jenkins 構建權限鏈接設置的,若是必須登陸才能構建就必須獲取 jenkins 的用戶名及 token,能夠在 jenkins 用戶-設置裏面查看到 ,url格式:

http://:@/

因此,若是你出現以下錯誤提示:

點擊 Test,出現如下即表示已經成功

5、測試

5.1 當前頁面內容

GitLab

5.2 本地 Pycharm 編寫修改 html 代碼,並 push

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    測試代碼-V2
</body>
</html>
複製代碼

5.3 查看 Jenkins

GitLab

5.4 查看網站

相關文章
相關標籤/搜索