安裝部署Jenkins從Git獲取程式碼
一:持續整合的概念:
1.1:總體的概括
持續整合Continuous Integration
持續交付Continuous Delivery
持續部署Continuous Deployment
1.2:什麼是持續整合:
持續整合是指開發者在程式碼的開發過程中,可以頻繁的將程式碼部署整合到主幹,並進程自動化測試
1.3:什麼是持續交付:
持續交付指的是在持續整合的環境基礎之上,將程式碼部署到預生產環境
1.4:持續部署:
在持續交付的基礎上,把部署到生產環境的過程自動化,持續部署和持續交付的區別就是最終部署到生產環境是自動化的。
1.5:關於安全:OWASP:每年釋出top 10web漏洞:
top1:注入攻擊漏洞,例如SQL,OS 以及 LDAP注入。這些攻擊發生在當不可信的資料作為命令或者查詢語句的一部分,被髮送給直譯器的時候。攻擊者傳送的惡意資料可以欺騙直譯器,以執行計劃外的命令或者在未被恰當授權時訪問資料。
top2:失效的身份認證和會話管理:與身份認證和會話管理相關的應用程式功能往往得不到正確的實現,這就導致了攻擊者破壞密碼、密匙、會話令牌或攻擊其他的漏洞去冒充其他使用者的身份。
top3:跨站指令碼(XSS):當應用程式收到含有不可信的資料,在沒有進行適當的驗證和轉義的情況下,就將它傳送給一個網頁瀏覽器,這就會產生跨站指令碼攻擊(簡稱XSS)。XSS允許攻擊者在受害者的瀏覽器上執行指令碼,從而劫持使用者會話、危害網站、或者將使用者轉向至惡意網站。
相關資料:http://www.owasp.org.cn/owasp-project/download/mobile-top-10-2013-2
二:安裝部署持續整合工具jenkins:
2.1:安裝部分:
2.1.1:執行安裝:
下載jdk-8u111-linux-x64.rpm
# rpm -ivh jdk-8u111-linux-x64.rpm # vim /etc/profile export JAVA_HOME=/usr/java/jdk1.8.0_111 export PATH=$JAVA_HOME/bin:$PATH
安裝jenkins
方法①yum方式安裝
方法②通過war包的方式安裝下載地址:http://updates.jenkins-ci.org/download/war/2.60.1/jenkins.war
unzip apache-tomcat-8.0.37.zipmv apache-tomcat-8.0.37 /usr/local/
cd /usr/local
ln -s /usr/local/apache-tomcat-8.0.37 /usr/local/tomcat
useradd jenkins
# 將jenkins.war放到/usr/local/tomcat/webapps目錄下,解壓
unzip -d jenkins jenkins.war
chown -R jenkins.jenkins /usr/local/apache-tomcat-8.0.37
bin/startup.sh
2.1.2:開啟web介面:第一次開啟要輸入隨機生成的密碼:
http://192.168.3.199:8080/jenkins
檢視密碼
$ cat /home/jenkins/.jenkins/secrets/initialAdminPassword
8743f91ff1474a85a0abcd841fc74eb6
輸入密碼點下確認之後選擇外掛,選擇預設安裝外掛即可,此過程需要一段時間,而且根據網路不同有些外掛安裝不成功,但是之後可以自己再安裝即可
報錯:
An error occurred
An error occurred during installation: No such plugin: cloudbees-folder
解決辦法:
下載cloudbees-folder.hpi放在目錄/usr/local/tomcat/webapps/jenkins/WEB-INF/detached-plugins/下,重啟tomcat即可
設定使用者名稱密碼
3.1配置郵件通知,系統管理–系統設定
新增管理員郵箱,新增郵件
點選儲存或測試郵件,系統會給目標郵箱傳送一封測試郵件:
安裝gitlab外掛,系統管理–管理外掛–可選外掛
外掛安裝介面,會額外安裝一些依賴關係的外掛,jenkins基於ruby開發,所以會有ruby環境:
在gitlab管理介面將使用者新增到一個專案,下一步要用此使用者拉取專案程式碼
三:使用jenkins:
3.1:新增一個認證使用者,拉取git程式碼的時候使用:
建立任務 --> 構建一個自由風格的軟體專案
專案描述資訊:
配置git專案地址,我們先進行其他配置,等會再繼續配置git相關的選項
系統管理 --> Global Tool Configuration
配置deploy-key
如下配置,jenkins伺服器上root使用者生成金鑰對
[[email protected] ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
bf:1e:4d:b3:0f:fb:8b:71:cd:ef:d3:70:69:a4:46:ff [email protected]
The key's randomart image is:
+--[ RSA 2048]----+
| |
| |
| |
| . . |
| S + + .|
| . o =.*.|
| o * oo=|
| o B .E|
| .o o.+o+|
+-----------------+
[[email protected] ~]# cat .ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3vhfbA4NdkP8g1WVyYkw93f1PZ04nWoyFnoerC9b40jIY5px+tkugdy/RZ3/bp4hMC5yNgV1S25Tm8RpzBJMp7pbJz8dO+LCKqUnXq9Eh0QhsZE0xlQN+J4awy9YIGiD2nFg7k/ZzeAtQRzNryrrPnKaWpXtg7tMGGTWBjeyLAVuqCOMU7euY94G26UmVfjDLIJkcJqB+8dwvodW3wpmUER32qVPKZLnSYSOCfoNed+P4Eujs5PBCLuzFvGyiDhY2Pwrk/4S11jWUa7TJItfoPXzeGc/ujaJi/o24dt8VXeFa/Rm4wywYLNW3TRjXy1mPpdVlob3701MMQ0bf3qPv [email protected]
gitlab上配置web-demo專案設定private deploy key
把key複製進去,同時title起一個簡單明瞭的名字
在jenkins伺服器192.168.3.199上測試下是否能夠正常獲取程式碼
[[email protected] tmp]# git clone [email protected]:web/web-demo.git
Cloning into 'web-demo'...
The authenticity of host '192.168.3.198 (192.168.3.198)' can't be established.
ECDSA key fingerprint is 9d:60:c3:8e:49:72:e8:9c:c0:d6:c8:d2:f1:b6:3a:74.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.3.198' (ECDSA) to the list of known hosts.
remote: Counting objects: 79, done.
remote: Compressing objects: 100% (79/79), done.
remote: Total 79 (delta 17), reused 0 (delta 0)
Receiving objects: 100% (79/79), 1.18 MiB | 0 bytes/s, done.
Resolving deltas: 100% (17/17), done.
jenkins拉取程式碼沒問題,繼續配置jenkins的認證,這裡應該輸入私鑰
複製jenkins拉取git程式碼伺服器root的私鑰
[[email protected] ~]# cat .ssh/id_rsa
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAt74X2wODXZD/INVlcmJMPd39T2dOJ1qMhZ6HqwvW+NIyGOac
frZLoHcv0Wd/26eITAucjYFdUtuU5vEacwSTKe6Wyc/HTviwiqlJ16vRIdEIbGRN
MZUDfieGsMvWCBog9pxYO5P2c3gLUEcza8q6z5ymlqV7YO7TBhk1gY3siwFbqgjj
FO3rmPeBtulJlX4wyyCZHCagfvHcL6HVt8KZlBEd9qlTymS50mEjgn6DXnfj+BLo
7OTwQi7sxbxsog4WNj8K5P+EtdY1lGu0ySLX6D183hnP7o2iYv6NuHbfFV3hWv0Z
uMMsGCzVt00Y18tZj6XVZaG9+9NTDENG396j7wIDAQABAoIBAEHMfCR9HJTsMMDk
SmDs3JqnHWhK+UzUe0/6VmEla0VNmI0cQFyMEYcUR3Z41uulEgURf22ZLv9WDPuq
yar4r26rtynsE1avbiEpwHzQVaMDhT2zqYUg9NA/fVdgl3PtT3KgyGQFd5MgIQUN
ileGkOF6GpoGBqnOvJkJfAS5+0RHi8EZ8RcufNExgan5QF42dtKNWOEdgZIp0+WY
jmI73YEpIadQzKxjL6PCOUmFAjfuNllw3It5QLePvYYlQeWKkl8QdROOADzOxgoj
6zCdzGo6ZqP4vK8gGioT7UybH1WJoN8of1ZBenKyT4+TagQYwqV0LXIpVBkHKgdD
5bxZIPkCgYEA4giWHweLYxmkZIXDx5VrOjIPmzTFqSfDMI9rDFQt57AbIr0hM4BW
6qmViWwuc9t28cLSXv+0FtycIfs4co8RvMinIMLykWddX8x3sniCr2+Pgn/G+RgQ
FK36wN0dVZwwr/6oPeIDCJlr4AqhDAJLJkcbRjc5i8kR9OPHIvkPJjsCgYEA0Bou
cmeOGYtrCW6t88xnmR26Sk8ybNWUdpju9SpEeCdz4jJnZC29AJ3qg8LilG0sDS/y
0cNT/iMP8x6FPeFqJnhI/l4C1H5WEqult/thMl1bZ+RFEO92EUcKEXZep0yu5Txr
6bHZzCnp9cYe56z9qsGk064LR2N9TR16xAzeud0CgYEArx0B2NZKeaNDBhHPxI8Q
/IwOJSs0O0Gv6a4iu/F3gviffUFTOIgkTjbFwCqMrnuHYfOSccDeb5vIZlcvuyj2
D/DP8gS2UknnQDGzRhQxAuOGJg8CQrcOtka3brWfZVTVL3Q2OYMg4Iej2HXDoP8h
42zRR4u/THmhLL1O6NxVjUMCgYBslKyVbuja9T61HjXPVmDbqIIyEZ6a4NnlA6jy
7Mnq85LofCosQB00vDDH7SCyF0B75P/KaSNjH8JLtSoKfpoXVn2nkz/gxcZ9WWhP
Ve+CCuoNjDJpQriVDT74m42Jt14uJ9eaiPy+JUR4w5YOhdmZhg5NkKs75XJUkUQk
FR8FVQKBgQDOWXJYF3VEYdCD1qIy/CsY3s4ARD9kery+5aOCu6TNd6auYEfqxsev
ie1jD+cvAgVR1aZ5aP3C8jEYhZa4xgn1+hxfRLWs79uMYnXXNGJ+FxKftDyhuV+m
efEQrUf8jh4MofW9Ee6Z7YjitIRY7SQ+kZl2Xms+QZlJotBzTG2DSA==
-----END RSA PRIVATE KEY-----
新增描述,點選OK
繼續編輯配置
這樣就不報錯了,下面還可以指定從哪個分支拉取,預設從master拉取,有些公司使用release分支
原始碼瀏覽器,去gitlab上找到http的url:http://192.168.3.198/web/web-demo.git
找出gitlab的版本,輸入url和版本,版本只支援2位,拉到最下面儲存
[[email protected] ~]# rpm -qa|grep gitlab
gitlab-ce-8.10.5-ce.0.el7.x86_64
點選立即構建,檢視控制檯,可以看到構建的詳細輸出