Jenkins
Jenkins是一款由Java編寫的開源的持續整合工具。在與Oracle發生爭執後,專案從Hudson專案復刻。
Jenkins提供了軟體開發的持續整合服務。它執行在Servlet容器中(例如Apache Tomcat)。它支援軟體配置管理(SCM)工具(包括AccuRev SCM、CVS、Subversion、Git、Perforce、Clearcase和RTC),可以執行基於Apache Ant和Apache Maven的專案,以及任意的Shell指令碼和Windows批次處理命令。Jenkins的主要開發者是川口耕介。[3]Jenkins是在MIT許可證下發布的自由軟體。[4]
可以通過各種手段觸發構建。例如提交給版本控制系統時被觸發,也可以通過類似Cron的機制排程,也可以在其他的構建已經完成時,還可以通過一個特定的URL進行請求。
安裝Jenkins in Centos 7
安裝 Java
yum install java
安裝 Jenkins
sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
sudo rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
sudo yum install jenkins
啟動 Jenkins
systemctl restart jenkins
systemctl enable jenkins
設定防火牆
firewall-cmd --permanent --new-service=jenkins
firewall-cmd --permanent --service=jenkins --set-short="Jenkins Service Ports"
firewall-cmd --permanent --service=jenkins --set-description="Jenkins service firewalld port exceptions"
firewall-cmd --permanent --service=jenkins --add-port=8080/tcp
firewall-cmd --permanent --add-service=jenkins
firewall-cmd --zone=public --add-service=http --permanent
firewall-cmd --reload
查看防火牆設定
firewall-cmd --list-all
第一次登入
cat /var/lib/jenkins/secrets/initialAdminPassword
安裝插件
GCP 部署
部署
Jenkins Bitbucket Webhook
安全性設定
[管理 Jenkins] / [設定全域安全性] / [授權] / 修改設定為「矩陣型安全性」,如下圖示:
授權給 admin (您的管理者帳號) 之後,請記得要勾選 Administer 權限
注意:基於安全考量,請盡量不要授權給「匿名使用者」任何權限。
授權給 admin (您的管理者帳號) 之後,請記得要勾選 Administer 權限
注意:基於安全考量,請盡量不要授權給「匿名使用者」任何權限。
使用者權限
Job
Bitbucket Webhook
URL: http://[User]:[User-API-Token]@domain/job/[Project_Name]/build?token=[遠端觸發驗證Token]
User: Jenkins 的使用者
User-API-Token: Jenkins Api Token
Project_Name:專案名稱
遠端觸發驗證Token:建置觸發程序/遠端觸發建置/驗證Token(自己輸入)
User: Jenkins 的使用者
User-API-Token: Jenkins Api Token
Project_Name:專案名稱
遠端觸發驗證Token:建置觸發程序/遠端觸發建置/驗證Token(自己輸入)
設定 SSH key for jenkins and Bitbucket
Jenkins create ssh
ssh jenkins.jk666.me
sudo su - jenkins
ssh-keygen
Jenkins Add Credentials
取得私鑰
cat ~/.ssh/id_rsa
取得公鑰
cat ~/.ssh/id_rsp.pub
Bitbucket SSH Key
設定 Jenkins 登入到 server ,使用 ssh key
複製 Jenkins ssh key,到主機端設定
ssh server_domain.com #登入服務主機
ssh-keygen #創建 ssh 設定檔
vim ~/.ssh/authorized_keys #貼上Jenkins ssh key #設定驗證 Key
chmod 700 ~/.ssh #設定 ssh 資料夾權限
chmod 640 ~/.ssh/authorized_keys #設定驗證key 檔案權限
最後測試登入是否正常
實作
範例一
- 程式編寫者 提交 原始碼 到 bitbucket 版本控管雲端
- Bitbucket Webhook 通知 Jenkins 主機
- Jenkins 主機設定腳本通知 服務主機更新
- 服務主機到 bitbucket 更新最新版本,並且重啟服務
常見問題
Jenkins 忘記密碼
修改 使用者的 config.xml
vim /var/lib/jenkins/users/admin/config.xml
修改欄位
<passwordHash>#jbcrypt:$2a$10$J0KJjYsQEBE5vZyEt2prouZPVREG4J3VuKOgYltiYTrk6A5icSTVC</passwordHash>
修改後重新開啟 jenkins
systemctl restart jenkins
帳號:admin
密碼:111111
密碼:111111
403 No valid crumb was included in the request
最後直接關閉 CSRF 驗證,就可以了,但是這個好像不是好作法,需要再研究.
沒有留言:
張貼留言