不少同窗可能第一次瞭解什麼是ci-cd,什麼是Jenkins,首先會介紹下cicd的概念及應用場景,以後再詳細介紹下Jenkins的概念、安裝及使用。java
CI:可持續集成(簡單將就是經過公用代碼倉庫將開發人員的代碼進行統一集成管理,與集中測試)shell
CD:可持續部署(將集成測試後的代碼自動部署到你須要的地方)windows
注意:這裏說的額可持續的意思不是說一直運行,而是能夠隨意執行的意思。centos
簡單瞭解完CICD,你確定在想這個技術卻是應用於什麼場景?優點是什麼?tomcat
cicd主要是將開發工做與測試工做兩個部分進行了無縫銜接,開發人員只須要將代碼提交公用倉庫,代碼就會自動進行編譯,檢測,部署到客戶端等操做。好比頻繁須要開發部署的應用程序。安全
1.項目上線時間大大縮減,不只提升發佈速度及代碼質量,還能夠以增量方式連續添加新功能,是產品具備更少的缺陷。服務器
2.整個交付流水線全部階段都是對團隊公開的,全部成員均可以檢測、改進及驗證。
1.開發人員將代碼經過git/svn上傳到公有倉庫(GitLab/Svn/Gogs/Github)。
2.公有倉庫經過WebHook將公有倉庫的代碼推送到Jenkins(cicd工具,下面會詳細介紹)。
3.Jenkins工具擁有將代碼構建、編譯、分析、單元測試、鏡像的功能(須要自行配置)。
4.能夠將結果存儲到鏡像管理倉庫Harbor,將服務跟新到K8s。(這裏咱們是與HKDAS進行結合)
5.最後用戶經過電腦進行訪問,就能夠看到已經部署完成的程序。
Jenkins介紹及使用:http://jenkins-ci.org/
Jenkins是一個CD/CD的軟件,容許持續集成與持續交付項目(就是集成測試與程序部署),支持分佈式,最主要是開源免費。
產品設計-->開發者提交代碼-->自動測試功能-->自動上線
1.官網下載一個jenkins.war包(推薦使用war是使用比較方便)
2.Centos(也支持windows,這裏以Linux爲主)中直接運行 Java -Jar Jenkins.war 能夠直接啓動
3.啓動完成後直接訪問ip:8080進入web界面,能夠在啓動時指定端口
4.第一次運行登錄web界面須要進行解密,在服務器中輸入 cat /root/.jenkins/secrets/initialAdminPassword 查看密碼
------------------------------------------------------------------------------------------------------------------
#!/bin/bash ###主要目的用於開機啓動服務,否則 啓動jenkins.war包沒有java -jar的權限 JAVA_HOME=/usr/local/jdk1.8 #pid用於判斷jenkins是否已經啓動 pid=`ps -ef | grep jenkins.war | grep -v 'grep'| awk '{print $2}'| wc -l` if [ "$1" = "start" ];then if [ $pid -gt 0 ];then echo 'jenkins is running...' else ### java啓動服務 配置java安裝根路徑,和啓動war包存的根路徑配置端口 nohup $JAVA_HOME/bin/java -jar /usr/local/jenkins/jenkins.war --httpPort=8081 2>&1 & fi elif [ "$1" = "stop" ];then exec ps -ef | grep jenkins | grep -v grep | awk '{print $2}'| xargs kill -9 echo 'jenkins is stop..' else echo "Please input like this:"./jenkins.sh start" or "./jenkins stop"" fi
-------------------------------------------------------------------------------------------------------------------
Jenkins+gogs(也是一種代碼倉庫,想了解能夠自行百度):
1.插件條件:gogs集成須要安裝gogs插件(在插件管理中的直接搜索gogs直接安裝),安裝插件後配置全局工具配置(jdk,maven,git)。
2.安全條件:配置密鑰(創建Jenkins與gogs的鏈接)
查看centos下.ssh/.pub的公鑰複製到gogs中(生成公鑰的方式略,百度上不少),將其添加到gogs的密鑰配置中。
3.新建maven(這裏以maven項目爲主)工程,對項目簡單配置,在源碼管理選擇git(由於gogs支持git工具)管理,輸入gogs中的url鏈接(須要配置第2步的密鑰,不然報錯)
4.構建測試,看是否拉取到了代碼,也能夠查看 /root/.jenkins/workspace下是否有項目war(這裏包的方式是你maven中配置的打包方式 clean package )。
5.推送工程(自動同步):gogs進入倉庫中設置web鉤子,將新增的數據經過訂閱的方式傳輸到Jenkins(能夠自定義推送的觸發條件)。
推送地址爲:http(s)://<你的Jenkins地址>/gogs-webhook/?job=<你的Jenkins任務名>
也能夠經過Token_name配置鉤子,http://username:password@ip:port/
同時Jenkins須要在構建觸發器中選中Build when a change is pushed to Gogs的選擇(當gogs中代碼改變會從新構建)。
參考文章:https://blog.csdn.net/gongxsh00/article/details/80861214
6.接下來使用Deploy to container Plugin 插件(沒有須要安裝)來管理war包自動部署到Tomcat中。須要配置build(配置打包goals:clean package -Dmaven.test.skip=ture)與構建後操做(配置war包地址與Tomcat地址與訪問權限,注意須要先去配置Tomcat,在構建是tomcat須要開啓)。
6.1 若是須要使用jar包部署,可使用shell腳本的方式。
1.安裝其餘插件重啓Jenkins後,又出現了部分中文簡體不翻譯的狀況。
嘗試一下方法,能夠完美修復。 1. 將語言設定爲zh_US,Jenkins切換爲英文。 2. 調用restart重啓Jenkins:http://域名/restart。 3. 再次語言設定爲zh_CN,刷新便可。
yum install rng-tools # 安裝rngd服務(熵服務,增大熵池) systemctl start rngd # 啓動服務
Tomcat修改端口?在conf/server.xml中修改