一. jenkins 的配置
1.前提條件安裝了GitLab Plugin (源碼管理使用),GitLab Hook(gitlab webhook須要)
Manage Jenkins--->Manage Plugin ---->Available 去找到安裝。php
2. 建立 job ,選擇 自由風格的項目,點擊ok
3. 源碼管理
描述配置html
源碼管理:要想鏈接 gitlab服務器,有兩種選擇,用http協議或者 ssh協議,這裏咱們使用sshgit
首先填寫 gitlab 的urlweb
配置到gilab 的認證: Credentials ,點擊ADD,複製 gitlab ssh密鑰對的私鑰到下圖.shell
認證成功以下圖:沒有任何報錯了安全
說明: 若是 gitlab 配置了ssh 密鑰對,jenkins這邊也添加了 包含私鑰的憑證仍是沒法正常鏈接的話,參考: https://www.cnblogs.com/yitianyouyitian/p/10027552.html服務器
4. 構建觸發器設置
勾選以下, 下面的url是回調地址, gitlab webhook 那邊的設置會用上.ssh
區分分支 觸發構建 設置以下: 只用master分分支變化後纔會觸發構建.ide
5. 構建
選擇 Execute shellgitlab
shell腳本編寫,將 代碼同步到web服務器目錄,重啓服務。
注意: shell命令的執行 是在 jenkins 的job 的workspace 目錄進行的. 這裏是項目 php1的工做目錄 /root/.jenkins/workspace/php1 。jenkins從gitlab pull的代碼就是放置在這裏.
注意: 在這踩坑了,執行 rsync 老是失敗,提示permission deny。問題是ssh 無密碼訪問的問題。這裏的jenkins 訪問 遠程主機 使用的不是默認名字(id_rsa等)的密鑰。解決方法以下.
#在 /etc/ssh/ssh_config 添加以下內容 #指明命令中 須要ssh 遠程的主機鎖使用的用戶和密鑰。 Host 172.10.30.228 user root IdentityFile ~/.ssh/id_rsa1 #防止彈出判斷選擇 StrictHostKeyChecking no
二. gitlab 配置
1. gitlab webhook 設置
進入 project .點擊 setting-----> integrations設置。注意不是 管理區域的 系統鉤子.
填寫 上面 構建觸發器中的 url. 安全令牌有無均可以(令牌來自jenkins構建觸發器中選中的Build When a change is pushed右下角的高級選項,有一個Secret token,點擊 Generate,會生成一個安全代碼).
點擊 test來測試是否能夠成功觸發.
出現的問題: test 的時候 出現403 anonymous is missing the Job/Build permission 錯誤。參考: https://blog.csdn.net/u011662047/article/details/80525503
兩步解決問題 (測試了,其實只須要第一步就ok了。)
1. 系統管理 -> 插件管理 -> 安裝插件gitlab hook
2. 系統管理 -> 系統設置 -> 去掉 Enable authentication for ‘/project’ end-point
其餘朋友總結的錯誤:
https://www.cnblogs.com/zblade/p/9480366.html
再記錄一個坑: gitlab 這邊 test web hook 成功。可是push後不觸發jenkins的構建.找了半天是gitlab 的服務sidekiq 和unicorn沒有啓動,吐血了。。。