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 "jenkins@admin.com"

生成的公钥文件/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用户管理....

 

posted @ 2018-01-30 23:00  nidey  阅读(1024)  评论(0编辑  收藏  举报