一般是開發後的代碼先推到Gitlab上管理,而後在Jenkins裏經過腳本構建代碼發佈。這種方式每次在發版的時候,須要人工去執行jenkins上的構建動做,有時顯得過於繁瑣。html
Gitlab的Webhook功能,經過Webhook的相關設置,能夠實現代碼Push後,自動去觸發jenkins上的構建動做,這樣就不須要人工干預去執行操做了。git
主機名 | 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 |
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訪問服務器
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
登陸 Jenkins 後臺,依次點擊「系統管理」-「插件管理」-「Avaliable」ssh
必須安裝的插件以下:ide
GitLab Plugin
Publish Over SSH
複製代碼
登陸 Jenkins 後臺,依次點擊「系統管理」-「系統設置」
只有 Publish over SSH插件安裝成功,即出現下方配置項,填寫 web 的服務器信息便可
通用部分配置
設置工做空間目錄爲:/data,並修改目錄權限爲 jenkins
[root@jenkins /]# ll -d /data/
drwxr-xr-x. 7 jenkins jenkins 111 Jan 2 10:52 /data/
複製代碼
在 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 的內容, 注意這個是私鑰
只有 GitLab 插件安裝成功,此處會顯示該項,後面提供的 URL 地址即爲 webhook 的地址
選擇 步驟2 中添加的 web 機器,保存便可
進入 GitLab,項目,編輯項目,選擇」Webhooks」
gitlab 的 webhooks url 是根據 jenkins 構建權限鏈接設置的,若是必須登陸才能構建就必須獲取 jenkins 的用戶名及 token,能夠在 jenkins 用戶-設置裏面查看到 ,url格式:
http://:@/
因此,若是你出現以下錯誤提示:
點擊 Test,出現如下即表示已經成功
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
測試代碼-V2
</body>
</html>
複製代碼