环境:
[root@jenkins ~]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
关闭防火墙及selinux
[root@jenkins local]# systemctl stop firewalld
[root@jenkins local]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@jenkins local]# sed -ri '/^SELINUX=/c\SELINUX=disabled' /etc/selinux/config
[root@jenkins local]# setenforce 0
1、部署git
安装依赖包:
[root@jenkins ~]# yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker -y
git官网:
https://mirrors.edge.kernel.org/pub/software/scm/git/
软件:git-2.9.5.tar.gz
git官网下载安装包,解压并编译安装
[root@jenkins /]# wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.9.5.tar.gz
[root@jenkins ~]# tar -xf git-2.9.5.tar.gz
[root@jenkins ~]# cd git-2.9.5
[root@jenkins git-2.9.5]# make prefix=/usr/local/git all
[root@jenkins git-2.9.5]# make prefix=/usr/local/git install
修改环境变量
[root@jenkins ~]# echo 'PATH=$PATH:$HOME/bin:/usr/local/git/bin' >>/etc/bashrc
[root@jenkins ~]# source /etc/bashrc
拓展积累:
关于bashrc和profile
/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次!!!登录!!!时,该文件被执行. 并从/etc/profile.d目录的配置文件中搜集shell的设置.
/etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.
测试是否安装成功
[root@jenkins ~]# git --version
git version 1.8.3.1
2、部署jdk环境
下载
jdk-8u151-linux-x64.tar.gz
注意:不能用jdk9和jdk10
如果系统中已安装java-1.8.0-openjdk请先卸载。
卸载openjdk:
[root@jenkins ~]# yum erase `rpm -qa | grep openjdk` -y
解压
[root@jenkins ~]# tar -xf jdk-8u151-linux-x64.tar.gz -C /usr/local/
[root@jenkins ~]# cd /usr/local/
[root@jenkins local]# mv jdk1.8.0_151 jdk
修改环境变量:(不要设置重复的环境变量)
[root@jenkins local]# echo 'JAVA_HOME=/usr/local/jdk' >>/etc/bashrc
[root@jenkins local]# echo 'export PATH=$PATH:$JAVA_HOME/bin' >>/etc/bashrc
[root@jenkins local]# source /etc/bashrc
测试是否安装成功
[root@jenkins local]# java -version
java version "1.8.0_151"
Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)
3、部署maven
下载和解压Maven:
官方下载地址:http://mirror.bit.edu.cn/apache/maven/maven-3/3.5.3/binaries/
下载
apache-maven-3.5.3-bin.tar.gz
解压
[root@jenkins ~]# tar -xf apache-maven-3.5.3-bin.tar.gz -C /usr/local/
[root@jenkins ~]# cd /usr/local/
[root@jenkins local]# mv apache-maven-3.5.3 maven
修改环境变量
[root@jenkins local]# echo 'export M2_HOME=/usr/local/maven' >>/etc/bashrc
[root@jenkins local]# echo 'export M2=$M2_HOME/bin' >>/etc/bashrc
[root@jenkins local]# echo 'PATH=$M2:$PATH:$HOME/bin:/usr/local/git/bin' >>/etc/bashrc
[root@jenkins local]# echo 'export JAVA_HOME=/usr/local/jdk' >>/etc/bashrc
[root@jenkins local]# echo 'export PATH' >>/etc/bashrc
[root@jenkins local]# source /etc/bashrc
测试是否安装成功
[root@jenkins local]# mvn -version
Apache Maven 3.5.3 (3383c37e1f9e9b3bc3df5050c29c8aff9f295297; 2018-02-25T03:49:05+08:00)
Maven home: /usr/local/maven
Java version: 1.8.0_151, vendor: Oracle Corporation
Java home: /usr/local/jdk/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-862.11.6.el7.x86_64", arch: "amd64", family: "unix"
4、部署tomcat
安装Jdk8.0 注意:是8版本的JDK
官网下载tomcat:
apache-tomcat-9.0.1.tar.gz
解压
[root@jenkins ~]# tar -xf apache-tomcat-9.0.1.tar.gz -C /usr/local/
[root@jenkins ~]# cd /usr/local/
[root@jenkins local]# mv apache-tomcat-9.0.1 tomcat
定义Tomcat所需环境变量
[root@jenkins local]# echo 'CATALINA_HOME=/usr/local/tomcat' >>/etc/profile
[root@jenkins local]# echo 'export CATALINA_HOME' >>/etc/profile
[root@jenkins local]# source /etc/profile
启动tomcat
[root@jenkins local]# /usr/local/tomcat/bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/jdk
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
ps:
tomcat关闭方式:
# /usr/local/tomcat/bin/shutdown.sh
测试tomcat
浏览器访问192.168.122.229:8080,结果如下:
确认tomcat是否启动,也可以直接看8080、8005、8009这几个端口
[root@jenkins local]# ss -antpl |egrep "8080|8005|8009"
LISTEN 0 1 ::ffff:127.0.0.1:8005 :::* users:(("java",pid=1471,fd=69))
LISTEN 0 100 :::8009 :::* users:(("java",pid=1471,fd=53))
LISTEN 0 100 :::8080 :::* users:(("java",pid=1471,fd=48))
查看tomcat日志
# tail -f /usr/local/tomcat/logs/catalina.out
配置tomcat的角色和用户
在tomcat目录conf文件夹下tomcat-users.xml
[root@jenkins conf]# vim /usr/local/tomcat/conf/tomcat-users.xml
# 追加(按需配置),目前用不到
<role rolename="manager-gui"/>
<role rolename="admin"/>
<role rolename="manager"/>
<role rolename="manager-script"/>
<user username="tomcat" password="tomcat" roles="manager-gui,admin,manager,manager-script"/>
5、部署jenkins
官网下载jenkins:
http://updates.jenkins-ci.org/download/war/
软件名称:
jenkins.war
下载jenkins,并部署jenkins.war到tomcat下
[root@jenkins ~]# wget http://mirrors.shu.edu.cn/jenkins/war/2.122/jenkins.war
[root@jenkins ~]# cp jenkins.war /usr/local/tomcat/webapps/
[root@jenkins ~]# ls /usr/local/tomcat/webapps/
docs examples host-manager jenkins jenkins.war manager ROOT
启动tomcat:(注意启动tomcat会自动解压webapps下的war包)
[root@jenkins ~]# /usr/local/tomcat/bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/jdk
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
浏览器访问http://127.0.0.1:8080/jenkins,结果如下:
按照提示获取jenkins解锁密码,填写并继续
[root@jenkins ~]# cat /root/.jenkins/secrets/initialAdminPassword
00d638cfc2d9486ca89f1b387bbea9e2
选择安装推荐的插件进行下载,等待安装完成。
因为网速原因,插件可能下载失败,没关系,把他们记录下来,比如下图的两个插件,点击继续,进去之后手动重新安装未安装好的插件;也可以重试,继续下载安装。
如果全部顺利安装成功会自动跳转到如下界面
创建管理员账户,设置用户名、密码、全称、邮箱地址。设置完成后继续,到如下界面:
点击保存并使用
问题及解决 :如果这个页面过一会消失了。并且常时间空白。可能需要你登录了。换个浏览器,打开相同的地址就会出现认证页面。
点击开始使用jenkins
上图是前面创建的管理员用户登录的。
到此,告一段落,如果前面 有未安装成功的插件,可以到Manage Jenkins(系统管理)→Manage Plugins(插件管理),去搜索前面安装失败的插件,手动安装!
jenkins部署——续1之公有git仓库
1、插件安装
我们配置的是 git + maven 方式的自动化部署,所以git和maven的相关插件是必须的,还有一个ssh用于机器间的文件传送
3个必须的插件:
GIT plugin (可能已经默认安装了)
Publish Over SSH (远程Shell)
Maven Integration plugin
安装插件Deploy to container:
作用: 支持自动化将代码部署到tomcat容器
安装过程
系统管理-->插件管理-->可选插件-->过滤Deploy to container-->勾选,点击下边的按钮:直接安装,这个可能时间较久,等待即可。
安装完之后,如果勾选了:安装完成后重启jenkins 那么会重启jenkins。
安装插件:Maven Integration
作用: jenkins 利用maven编译,打包,所需插件
安装过程:同第一个插件
安装git相关插件,安装过程同第一个插件:
检查已安装好的插件GIT plugin,如果没有进行安装,和上边的步骤一样
安装插件:Publish Over SSH,和上边的步骤一样
检查错误配置
左侧:点击“系统管理”
1)如果有“编码问题”错误,在Tomcat–>conf–>server.xml文件中修改即可
[root@jenkins ~]# head -1 /usr/local/tomcat/conf/server.xml
<?xml version="1.0" encoding="UTF-8"?>
2)如果有”反向代理设置有误“错误,请忽略
看这里
前面没有强调的都设置为默认即可,插件已经基本准备好了,下面还要再做一些基础配置
2、Jenkins系统设置
路径
系统管理->(全局工具配置)Global Tool Configuration,配置jdk,git,maven的根目录
图示
2.1 找到全局配置工具
2.2 配置jdk目录
配置JDK根目录:注意不能是JDK9.0,切忌
2.3 配置git目录
2.4 配置maven
3、ssh设置
目的:(192.168.122.229)服务器上的maven将开发产生的*.war包。通过SSH推送到远程tomcat 服务器上(192.168.122.52)。
192.168.122.229是jenkins
192.168.122.52是tomcat网站服务器
注意:这里的192.168.122.52是一台tomcat网站服务器。什么都不用安装,接到代码即可。
3.1 准备密钥 认证
[root@jenkins ~]# ssh-keygen
# 一路回车
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:ecqezvBv1WJTa3IJZ2mDi1jLQUuvg1ZYSplNXp3NM2I root@jenkins.com
The key's randomart image is:
+---[RSA 2048]----+
| =. .. + |
| +.=. Eooo|
| . *.o....o|
| o.= + B |
| S*.= O + |
| .+o* B * |
| ..o + * |
| = .. |
| .*o. |
+----[SHA256]-----+
[root@jenkins ~]#
[root@jenkins ~]# ssh-copy-id -i 192.168.122.52
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '192.168.122.52 (192.168.122.52)' can't be established.
ECDSA key fingerprint is SHA256:ax2Dal82Zp6THPHJUdwE5ZIR7WABEqVlf2n1dg2davc.
ECDSA key fingerprint is MD5:f4:14:30:81:f3:ee:4e:c0:87:7c:eb:03:9c:ba:bc:1a.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.122.52's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh '192.168.122.52'"
and check to make sure that only the key(s) you wanted were added.
[root@jenkins ~]# ssh 192.168.122.52
Last login: Tue Oct 9 09:31:39 2018 from ceshi
# 登录不需要密码即可
[root@ceshi ~]# exit
登出
Connection to 192.168.122.52 closed.
3.2 在jenkins上配置ssh信息
进入系统设置
准备私钥
[root@jenkins ~]# cat ~/.ssh/id_rsa
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAlepbvevcqZSWNOHiJOjlYcoXGwzuXdSGYQHo8ohiAC76fAws
oJNpYd97EWdDRSvo22a3PuFn3Ri+f+iOsx2mAj9xtXqGpD3KKP2KJ/aQ2o99ydLk
PCQd3q3fSIyeKPYuMQx3ldinHQ3RHNHBcBQ7pRa2cDN2yNPbXBCUL6ZNrzteAV9h
nQwXsh8wirJKJ19So5aM/M4aVySKjcUpsL8zr+ldq3BpwFl9ipV/i/TBhIx9axSS
EaqN3l2cB5zMpNZmXgytJMW0iZaDm/hfL5YIw3Q0fmYCfEybbDra2MF5HtjFrxPr
agUpAw5mdYZpm3ed9G1z1QUrcNW0pKWIp9HMqQIDAQABAoIBADuijHgSWScEOnQy
3ti75HNwBpz2GeQtZH82WUoRQpq8FVw/I4mE2kjas4QKxdHAU9LjG0XiOITVEQKk
qg9KXf1K65q7cM/o3IBNyyV2iczHg8xDHhNmcpNgKxAbD9dPhrRwNynekyuVkXeb
YQ2KnudfD5e2gSwGSp5m4evKheCMa0wXtrg8lZq9Rs6qZSzAgkfkYuJUAp1Osa4N
TEW5HK3OpCc1x8R/dAAWfhdxOh3fxFPNUkzrtLhKRNgDn5Ha4S1Q3lAhQSzjtgtV
upt/yMfv3yd+6sAY0+9aJCgOo+dYZfE458y5lejtsosEEctr/EGwo4Y2mOzj3Em8
hveld1kCgYEAxhqD8Fa2RJjlQBURbgBc7EgFg6D3rCAP0VYyyie4KzPnUSq4dpRh
zZg/BKny2XwZH5TaFvZp6cXk/xiKaDFLS0/CNH9puYrTg6UXJYCcs521K1aoOYWo
BJbiK6Ex2Fb3r8nYyddn7hzzNgbsYKCSdR+br1pIwqMKynfW1GKq5jsCgYEAwbqP
cxUCAUwQbQ13+OSrpG8Z6nBzQwPeO+kBIur+uMJI2XEWEnRiwa9//vpyEk5PK0oG
psM1eD2jjabQVFUeE7p4J/8iqOaiwyuJC3q/tS/fr3fZkohaHbwg7tPD6Jox6KZg
YIpVFpSbPlRqlAhAi4DGAt2Ufap+LAKnONWnlmsCgYEAxEG0gD+HZsIKK8gzckTN
yg8310V62H0S7pJ00q0y2Soced7WzDMICYRQujAbtLYqtYzj2mfYWY6B5O7M/5gG
PeAQR64KcZRFI2BEZBTcKV2OBBdfpUzyPUm1Wv/gv7C4xOA08xGBlvX7RITrXHb3
YS0lMT1CZADeSeMbY2E0ac0CgYAJAQjFyoYrVUO2LdgTo10u6VMFCHDy/m0Hz86T
tuRb5fvIz269MNeeNO/4A9/lZepcEra4bX5Atmyxmr04DjS1qgcHpN4Rh5atB4r5
E51xaGY3G5TrMJcvppzJPOJwHyqOq5zzH7rQr9t/TCEf/DozwapyW6YZKSFwHjdz
dsqxPQKBgQCawYbFLfBnVEFAO+htyvSIxnC43S3XBcuNN1I/azQNbCs5GdRQpGHT
IjUVN7dfAkRLmo3XRjR5qlH2OHWY4x0WzPgmwCQYasO6nmcMe48nLUOftPIV13ee
5COJBPPFB9a9HfCm9hoqeEcxE7S5Tp1cNDLMkwdNhpj0RCCnL9jCbQ==
-----END RSA PRIVATE KEY-----
[root@jenkins ~]#
复制cat出来的所有内容,粘贴到下一步页面上的key中。
配置完成点击测试,返回success,保存
到此,ssh配置完成,如有其它远程网站服务器,add同理添加。
新建任务
1、新建任务
2、定义名称和类型
创建名称→选择maven项目→确定
3、设置maven
3.1 公有git仓库
3.1.1 设置描述
设置完,保存
3.1.2 选择版本控制器和仓库地址
选择源码管理→Git→填写Rrpository URL,保存
注意:公有仓库可以不用配置credentials,如果是私有仓库,这里需要建立credentials身份认证。
3.1.3 设置触发器(保持默认)
3.1.4 设置构建(编译打包)
手动添加Goals and options,保存: clean package -Dmaven.test.skip=true
3.1.5 构建后的操作
按上述配置好,即可保存。
说明
name:ssh server 因为之前的配置会默认出现tomcat服务器的名字
source file: 构建之后,在jenkins服务器上是可以自动看到war包的。(该路径不需要创建)
# ls /root/.jenkins/jobs/testjob1/builds/target/*.war
我的实际位置
[root@jenkins ~]# ls /root/.jenkins/jobs/testjob1/builds/3/springmvc-maven\$easy-springmvc-maven/archive/springmvc-maven/easy-springmvc-maven/0.0.1-SNAPSHOT/
easy-springmvc-maven-0.0.1-SNAPSHOT.pom
easy-springmvc-maven-0.0.1-SNAPSHOT.war
Remove prefix:自动删除路径前缀(不需要创建)
Remote directory: tomcat服务器上的路径,需要提前在192.168.122.52上创建该目录(注意:这是在web服务器上创建的)。
用来存放网站源代码。(需要后台创建)
[root@ceshi ~]# mkdir -p /jenkins/war
Exec command:tomcat(192.168.122.52)在接收到源码之后的自定义动作(注意:这是在web服务器上创建的)。
比如:将源码拷贝到网站的主目录(/jenkins),并执行一些其他操作如重启服务器等(或创建文件touch)(需要后台创建)
[root@ceshi ~]# mkdir /jenkins/sh
[root@ceshi ~]# cat /jenkins/sh/deploy.sh
#实际需要将jenkins/war下的 拷贝到tomcat的发布目录
mv /jenkins/war/*.war /
[root@ceshi ~]# chmod +x /jenkins/sh/deploy.sh
4、测试
说明:由于在web服务器端,我未安装tomcat,我的脚本是将jenkins服务器推过来的war包,拷贝到 / 下。当能在 / 下看到对应我war则说明整个流程没有问题。
点击对应任务的小时钟图标,能看到具体详情
任务完成前,web端没有获看到war包
[root@ceshi ~]# ls /
bin dev home lib media opt root sbin sys usr
boot etc jenkins lib64 mnt proc run srv tmp var
任务完成后,web端可以看到war包
[root@ceshi ~]# ls /
bin dev home lib64 opt run sys var
boot easy-springmvc-maven.war jenkins media proc sbin tmp
etc lib mnt root srv usr
至此,整套上线流程基本完成。