jenkins(8): 實戰jenkins+gitlab持續集成發布php項目(代碼不需要編譯)


一. jenkins 的配置

1.前提條件安裝了GitLab Plugin (源碼管理使用),GitLab Hook(gitlab webhook需要)

Manage Jenkins--->Manage Plugin ---->Available 去找到安裝。

 

2.  創建 job ,選擇 自由風格的項目,點擊ok

 

 

3. 源碼管理

 

  描述配置

 

 源碼管理:要想連接 gitlab服務器,有兩種選擇,用http協議或者 ssh協議,這里我們使用ssh

首先填寫  gitlab 的url

 

配置到gilab 的認證: Credentials ,點擊ADD,復制 gitlab ssh密鑰對的私鑰到下圖.

 

 

認證成功如下圖:沒有任何報錯了

 

  說明:  如果 gitlab 配置了ssh 密鑰對,jenkins這邊也添加了 包含私鑰的憑證還是無法正常連接的話,參考: https://www.cnblogs.com/yitianyouyitian/p/10027552.html

 

4. 構建觸發器設置

  勾選如下, 下面的url是回調地址, gitlab webhook 那邊的設置會用上.

 

區分分支 觸發構建 設置如下: 只用master分分支變化后才會觸發構建.

 

5. 構建

選擇  Execute shell

 

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沒有啟動,吐血了。。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM