1. 程式人生 > >CentOS 7.2安裝Jenkins自動構建Git項目

CentOS 7.2安裝Jenkins自動構建Git項目

瀏覽器 註冊 mod pwa 下載 之前 add 服務器端 pkg

1.環境

本文使用VMWare虛擬機進行實驗。

最終實現目標,在Jenkins服務器上新建構建任務,從Git服務器上拉取master HEAD(不編譯,僅演示),部署到"目標服務器",再執行一個腳本。

Jenkins服務器

  • 2核CPU,4GB內存,20GB硬盤,IP:192.168.118.145(要求能上網,裝插件)
  • CentOS 7.2最小安裝(CentOS-7-x86_64-Minimal-1511.iso)

Git遠程庫服務器

  • IP: 192.168.118.148
  • 已經存在一個git repo: hello-jenkins.git

目標服務器

  • IP: 192.168.118.147

2.需求

  • Jenkins 2.89
  • JRE 8u162
  • Git 1.8.3.1
  • Supervisor 3.1.4

3.安裝

3.1安裝軟件

yum -y install git supervisor

3.2安裝JRE

從官網下載Java SE Runtime Environment 8u162 Linux x64

jre-8u162-linux-x64.tar

tar zxvf jre-8u162-linux-x64.tar -C /opt
export JAVA_HOME=/opt/jre1.8.0_162
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/toos.jar

3.3安裝Jenkins

官網下載Jenkins,安裝

rpm -ivh jenkins-2.89.3-1.1.noarch.rpm

得到war包 /usr/lib/jenkins/jenkins.war

其實到現在已經可以運行Jenkins服務了,但我們先來配置下開機自動啟動(利用supervisor)

3.4配置Jenkins開機自啟

為jenkins創建supervisor配置文件

vi /etc/supervisord.d/jenkins.ini

添加如下內容,藍色加粗的是有用的,分號開頭的已經被註釋掉了,需要的話自己開、自己配

[program:jenkins]
;command
=/bin/cat command=/opt/jre1.8.0_162/bin/java -jar /usr/lib/jenkins/jenkins.war ; the program (relative uses PATH, can take args) ;process_name=%(program_name)s ; process_name expr (default %(program_name)s) ;numprocs=1 ; number of processes copies to start (def 1) ;directory=/tmp ; directory to cwd to before exec (def no cwd) ;umask=022 ; umask for process (default None) ;priority=999 ; the relative start priority (default 999) autostart=true ; start at supervisord start (default: true) autorestart=true ; retstart at unexpected quit (default: true) startsecs=10 ; number of secs prog must stay running (def. 1) ;startretries=3 ; max # of serial start failures (default 3) ;exitcodes=0,2 ; expected exit codes for process (default 0,2) ;stopsignal=QUIT ; signal used to kill process (default TERM) ;stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10) ;user=chrism ; setuid to this UNIX account to run the program ;redirect_stderr=true ; redirect proc stderr to stdout (default false) ;stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO ;stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB) ;stdout_logfile_backups=10 ; # of stdout logfile backups (default 10) ;stdout_capture_maxbytes=1MB ; number of bytes in capturemode (default 0) ;stdout_events_enabled=false ; emit events on stdout writes (default false) ;stderr_logfile=/a/path ; stderr log path, NONE for none; default AUTO ;stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB) ;stderr_logfile_backups=10 ; # of stderr logfile backups (default 10) ;stderr_capture_maxbytes=1MB ; number of bytes in capturemode (default 0) ;stderr_events_enabled=false ; emit events on stderr writes (default false) ;environment=JAVA_HOME=/opt/jre1.8.0_162,CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/toos.jar ; process environment additions (def no adds)

添加supervisor開機自啟,註意現在不要啟動(start),一會兒我們手動啟動

systemctl enable supervisord

4.運行

java -jar /usr/lib/jenkins/jenkins.war

初次運行Jenkins會開始安裝、配置,註意控制臺會輸出admin的密碼(類似下面藍色粗體),密碼要記住,新建用戶後這密碼就找不到了...

*************************************************************
*************************************************************
*************************************************************

Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:

d4b41da7b70048c8b2a4eb5786100996

This may also be found at: /root/.jenkins/secrets/initialAdminPassword

*************************************************************
*************************************************************
*************************************************************

默認Jenkins服務器端口為8080

瀏覽器訪問 http://192.168.118.145:8080/,把密碼填進去,下一步

技術分享圖片

會讓你選擇安裝插件,其實安裝建議的就行,但這裏選擇自己安裝插件

技術分享圖片

註意Git要勾選,

技術分享圖片

另外勾選“Publish Over SSH”,部署的時候會用到

技術分享圖片

然後確定開始下載安裝插件,看網速...完了之後會進入賬戶設置,

技術分享圖片

設置完就進入主界面了

技術分享圖片

到這裏就Jenkins安裝好了,系統重啟會自動啟動Jenkins服務。

5.部署demo

最終實現目標,在Jenkins服務器上新建一個構建任務,這個任務從Git服務器上拉取master HEAD(不編譯,僅演示),部署到"目標服務器",再執行其中一個腳本。

5.1配置ssh key

這個Key用於訪問git、訪問“目標服務器”

在Jenkins服務器上,-C後面的註釋隨便寫,交互shell中不用管,一路回車就行

ssh-keygen -t rsa -C "[email protected]"

生成的公鑰文件/root/.ssh/id_rsa.pub、私鑰文件/root/.ssh/id_rsa.pub

為了ssh無密碼訪問(使用root用戶),我們要把公鑰註冊到目標上

在Git服務器上,把公鑰內容復制填進去,保存。

vi /root/.ssh/authorized_keys

在目標服務器(見環境一節介紹)上,把公鑰內容復制填進去,保存。

vi /root/.ssh/authorized_keys

5.2註冊Jenkins SSH Server

主界面---系統管理---系統設置---Publish over SSH(在最下面)

技術分享圖片

Path to key 填私鑰文件路徑(公鑰剛才已經傳到目標服務器上了)

SSH Server,Name起一個名字,hostname填“目標服務器”IP,root登錄,Remote Directory是部署的目錄(/表示部署到根目錄下),不懂的最右邊有個問號可以點,有幫助。

5.3新建一個Job

技術分享圖片

填一個名字,下面選第一項”構建一個自由風格的軟件項目“,點確定。

技術分享圖片

源碼管理一欄,添git路徑(就是一般git clone XXX中的XXX)

技術分享圖片

Credentials點右邊Add,配置秘鑰訪問git

技術分享圖片

Kind選 SSH Username with private key

Username填root

Private Key選 From the Jenkins master ~/.ssh (私鑰路徑/root/.ssh/id_rsa,公鑰剛才已經傳到git服務器上了)

Description隨便填,便於自己區分

填完之後回到之前的頁面,選擇使用這個憑證:root(sshKeyToGit)

構建後操作,選剛才添加的SSH Server

技術分享圖片

Source files填**,表示所有文件

Remote directory填first-ci,剛才配了部署目錄是/,綜合得到部署路徑 /first-ci

Exec command填的是文件傳輸完成後執行的命令,這裏執行的是git庫中一個腳本

保存,進入這個界面,點“立即構建”,左下區域是構建情況(圖上是構建了4次,藍色表示成功,黃色表示出了點問題)

技術分享圖片

點“#4”,點“Console Output”,可以查看整個構建過程的輸出,

技術分享圖片

一般構建出錯也是在這裏看錯在哪了,比如下面這圖#3

技術分享圖片

5.4驗證部署結果

在目標服務器上,

可以看到部署的文件(也是部署後執行的腳本)

技術分享圖片

以及執行腳本的結果(可見登錄後的目錄為用戶home目錄)

技術分享圖片

TODO:

Jenkins用戶管理....

CentOS 7.2安裝Jenkins自動構建Git項目