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

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

相關文章
相關標籤/搜索