CentOS 7.2安裝Jenkins自動構建Git項目
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項目