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用户管理....
原文地址:https://www.cnblogs.com/nidey/p/8387597.html