wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
yum install -y jenkinsjava
systemctl enable jenkins.service #設置jenkins服務爲自啓動服務
systemctl start jenkins.service #啓動jenkins服務git
vi /etc/sysconfig/jenkins
service jenkins start/stop/restart web
或者也能夠下載jenkins.war,而後啓動 -jar 啓動。api
啓動好以後,能夠經過 ip:8080 進行訪問 http://192.168.11.222:8080, 端口默認是8080。 第一次訪問須要進行一些插件的安裝,會比較慢。安裝好以後就能夠使用了:瀏覽器
推薦使用 service jenkins start/stop/restart 方式進行啓停。安全
咱們的項目是基於Maven的,因此須要安裝Maven,app
yum install -y mavenssh
安裝好以後,須要修改一下settings文件配置,主要是兩個地方:maven
「默認 settings 提供」 、 「默認全局 settings 提供」, 所有使用 文件路徑 /var/lib/jenkins/settings.xml:微服務
settings.xml文件以下(主要是須要配置私服地址,加快下載速度,其中的地址, 能夠按照須要進行修改):
JDK和Git 按狀況進行配置:
yum install -y java
yum install -y git
Jenkins URL 是當前Jenkins的地址,是第一次登陸的時候設置的, 也能夠此處進行修改。系統管理員郵件地址也是,可寫管理員郵件地址:
SMTP server 填 smtp.qq.com,Default user E-mail suffix填 @qq.com,Default Content Type選HTML,Default Recipients填默認收件人,如 gaolong@lkk.cn,luokai2@lkk.cn。
Default Subject 填 $PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS!
Default Content填:
$PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS:
Check console output at $BUILD_URL to view the results.
Jenkins會默認安裝一些插件,可是可能還不夠,咱們須要另外安裝一些; 咱們須要 確保下面的插件都已經安裝,後面須要用到:
Ant Plugin、Build Authorization Token Root Plugin、 Email Extension Plugin、 Generic Webhook Trigger Plugin、 GitHub Branch Source GitHub plugin 、Gitlab Authentication plugin 、Gitlab Hook Plugin、 HTML Publisher 、
Publish Over SSH 、SonarQube Scanner for Jenkins
Publish over SSH是一款進行遠程部署的插件,能夠簡化一些配置,有了他,就不要再去寫sh腳本了。
安裝Publish over SSH插件好後,配置一下:
咱們能夠添加多個SSH Servers,每個SSH Server 能夠使用默認值,或進行單獨的配置:
Name、Hostname填ip地址,Username填root,Remote Directory填須要發佈的遠程目錄,點擊高級,進行一些高級配置。咱們用的比較多的是 修改認證方式,首先勾選「Use password authentication, or use a different key」, 而後有兩個選擇,一是密碼,而是使用SSH Key。
採用密碼認證的話,Passphrase / Password 填root的密碼;
採用SSH key認證的話,Passphrase / Password 不填,Key填 Jenkins安裝機器上執行 ssh-keygen生成的公鑰,cat /root/.ssh/id_rsa.pub, 而後將/root/.ssh/id_rsa.pub 的內容複製過來粘貼便可:
主要2個地方須要設置:
安裝參考 http://www.javashuo.com/article/p-cmqnwdfp-hw.html
Sonar目前還不須要作什麼配置,但目前咱們須要記錄一個token。
web訪問地址是http://192.168.11.200:19000/projects:(默認端口是9000, 由於有衝突,我這裏改爲了19000),首次登陸會生成一個token,須要提供一個name,咱們填erdp:
這個token 頗有用,須要記下來。
先安裝 SonarQube servers插件,主要是SonarQube Scanner for Jenkins插件
而後,在系統配置中找到SonarQube servers,而後點擊Add
而後填寫相關信息:
Name隨便寫,Server URL 填Sonar的web地址:
Server authentication token須要添加一下:
注意類型選 Secret text,Secret、ID 都填Sonar首次登陸提供的token
而後就行了!
進入: Jenkins → 憑據 → 系統 → 全局憑據 (unrestricted),而後「添加憑據」
name 填 jenkins,
類型選 SSH Username with private key
Private Key 填 從在Jenkins機器 經過ssh-kengen 生成的 /root/.ssh/id_rsa.pub 的內容。
須要注意的是,這個憑據是用來拉取git代碼的,因此須要 gitlab 的一些配置:
對於每一個微服務,咱們須要 Integrations-Webhook配置,從而每當代碼有push的時候,可以自動觸發構建:
關鍵有3個地方須要設置:
URL填 http://120.78.204.40:1200/job/cad/build?token=c1f3458469a2895740fac134, 其中的ip 120.78.204.40:1200 是Jenkins的地址,這裏須要一個外網地址,由於咱們的gitlab 也位於阿里雲之上。
經過在Jenkins機器上執行 下面的sh命令生成:
openssl rand -hex 12
Trigger 選 Push events
而後能夠進行測試,點擊「Test」→ "Push events":
出現了Successfully,即表示成功。 而後點擊「Save changes」 以完成設置。
輸入名稱,而後選擇「自由風格」
而後進行配置。配置主要是進行 源碼管理,構建觸發器,構建,構建後操做
源碼管理選擇Git,Repository URL 填微服務工程的git地址:git@gitlab.lkk.cn:erdp/erdp_doc.git,Credentials選以前配置的憑據(或者也能夠點擊「添加」進行新增),Branches to build 填develop。源碼庫瀏覽器選gitiles,URL填git地址。
構建觸發器勾選
身份驗證令牌填 上面設置Integrations-Webhook→ Secret Token的時候生成的那個(經過openssl rand -hex 12),必定要和Secret Token相同:
構建選擇「添加構建步驟」→ 調研頂層Maven目標:
目標 填 clean -DskipTests=true package
而後 再選擇「添加構建步驟」→ Execute SonarQube Scanner:
Analysis properties填
sonar.projectKey=erdp_doc
sonar.projectName=erdp_doc
sonar.projectVersion=1.0sonar.language=java
sonar.sourceEncoding=UTF-8sonar.sources=$WORKSPACE
sonar.java.binaries=$WORKSPACE
構建設置後就是設置 構建後操做,
Name 選擇以前建立的SSH Server,表示須要部署的機器
Source files 填 **/erdp_*.war,表示將 *.war的文件部署
Remove prefix 填 ${JOB_NAME}_app/target ,表示不會建立的目錄
Exec command 填
cd /app/java
./kill.sh $JOB_NAME
sleep 1
./run.sh $JOB_NAME
表示部署後須要執行的腳本:
./kill.sh $JOB_NAME 表示殺死微服務
./run.sh $JOB_NAME 表示啓動微服務
點擊「應用」或「保持」,完成一個任務的建立!至此,咱們完成了代碼自動部署、代碼安全掃描。自動化接口測試 ERDP2.0.0_Interface_Test 。
以後其餘的微服務都經過相似的方法建立。 須要注意的是,咱們建立的任務,任務名必定是gitlab的微服務名。由於咱們用到了微服務名這個變量$JOB_NAME。