最近学习中接触了jenkins自动部署,所以花点时间了解了下。它可以在代码上传仓库(如github,gitee,gitlab)后,在jenkins后台页面中通过获取代码仓库中最新代码,进行自动化部署,而省去手动打包、上传服务器、部署这一系列步骤,非常方便。
文章参考自:
环境搭建+Jenkins安装
jdk安装
从本地上传一份jdk8到服务器,解压移动到(/usr/local),配置环境变量,
[root@Docker dowoload]# tar -zxvf jdk-8u77-linux-x64.tar.gz
[root@Docker dowoload]# mv jdk1.8.0_77 /usr/local/
[root@Docker local]# vi /etc/profile
#######最后增加如下代码:
#set java env
export JAVA_HOME=/usr/local/jdk1.8.0_77
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
[root@iz2ze0dr07y7jess3rvzlgz local]# source /etc/profile
[root@iz2ze0dr07y7jess3rvzlgz local]# java -version
java version "1.8.0_77"
Java(TM) SE Runtime Environment (build 1.8.0_77-b03)
Java HotSpot(TM) 64-Bit Server VM (build 25.77-b03, mixed mode)
maven安装
下载一份maven3.5.4,解压移动到(/usr/local),配置环境变量
[root@Docker dowoload]# wget https://archive.apache.org/dist/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz
[root@iz2ze0dr07y7jess3rvzlgz download]# tar -zxvf apache-maven-3.5.4-bin.tar.gz
[root@iz2ze0dr07y7jess3rvzlgz download]# mv apache-maven-3.5.4 /usr/local/
[root@iz2ze0dr07y7jess3rvzlgz local]# vi /etc/profile
#######最后增加如下代码:
#set Maven environment
export M2_HOME=/usr/local/apache-maven-3.5.4
export PATH=${M2_HOME}/bin:$PATH
[root@iz2ze0dr07y7jess3rvzlgz local]# source /etc/profile
[root@iz2ze0dr07y7jess3rvzlgz local]# mvn -v
Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-18T02:33:14+08:00)
Maven home: /usr/local/apache-maven-3.5.4
Java version: 1.8.0_77, vendor: Oracle Corporation, runtime: /usr/local/jdk1.8.0_77/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1062.4.1.el7.x86_64", arch: "amd64", family: "unix"
配置maven(修改apache-maven-3.5.4/conf/settings.xml )
1.修改maven阿里源
在 <mirrors>标签下添加:
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
2.修改本地仓库地址
创建/usr/local/maven-repo 文件夹
在 <settings>标签下添加:
<localRepository>/usr/local/maven-repo</localRepository>
小坑:第一次用了别的maven版本,代码一直编译不过去,这个版本自己用着没问题
Jenkins安装
官网地址:https://jenkins.io/download/
常见的安装有 docker安装,war包安装,rpm安装
小坑:本人首次安装使用的是Docker,最后因为maven环境变量问题一直没有成功,有待解决(慎用!)
下面是docker-compose.yml文件
jenkins:
image: jenkins/jenkins:lts
volumes:
- /data/jenkins/:/var/jenkins_home
- /var/run/docker.sock:/var/run/docker.sock
- /usr/bin/docker:/usr/bin/docker
- /usr/lib/x86_64-linux-gnu/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7
- /usr/local/apache-maven-3.5.4:/usr/local/apache-maven-3.5.4
ports:
- "8029:8080"
expose:
- "8080"
- "50000"
privileged: true
user: root
restart: always
container_name: jenkins
environment:
JAVA_OPTS: '-Djava.util.logging.config.file=/var/jenkins_home/log.properties'
我选择 yum安装Jenkins(此方式偶然间发现在早上六七点的时候下载贼快,其他时间都是龟速)
sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
sudo rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key //如果已经有 key 存在,请忽略。具体见官方 wiki
sudo yum install jenkins
安装完成后首次启动会有异常,修改方法如下:
1.增加本地java环境到配置文件(/etc/init.d/jenkins)
2.修改Jenkins用户(因mvn编译的时候要删除target,这里不修改会权限不足无法删除)(/etc/sysconfig/jenkins )
3.修改启动 端口号(/etc/sysconfig/jenkins )
最后启动Jenkins
[root@iz2ze0dr07y7jess3rvzlgz ~]# systemctl restart jenkins
[root@iz2ze0dr07y7jess3rvzlgz ~]# systemctl status jenkins
● jenkins.service - LSB: Jenkins Automation Server
Loaded: loaded (/etc/rc.d/init.d/jenkins; bad; vendor preset: disabled)
Active: active (running) since Tue 2019-11-05 22:55:41 CST; 24s ago
Docs: man:systemd-sysv-generator(8)
Process: 14696 ExecStop=/etc/rc.d/init.d/jenkins stop (code=exited, status=0/SUCCESS)
Process: 14715 ExecStart=/etc/rc.d/init.d/jenkins start (code=exited, status=0/SUCCESS)
CGroup: /system.slice/jenkins.service
├─12420 java -Xms246m -Xmx500m -Dhudson.util.ProcessTree.disable=true -jar /var/lib/jenkins/workspace/pipi/target/login-test-0.0.1-SNAPSHOT.jar
└─14736 /usr/local/jdk1.8.0_77/bin/java -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -DJENKINS_HOME=/var/lib/jenkins -jar /usr/lib/jenkins/jenkins.war --logfile=/var/log/jenkins/jenkins.log --webroot=/var/...
Nov 05 22:55:40 iz2ze0dr07y7jess3rvzlgz systemd[1]: Stopped LSB: Jenkins Automation Server.
Nov 05 22:55:40 iz2ze0dr07y7jess3rvzlgz systemd[1]: Starting LSB: Jenkins Automation Server...
Nov 05 22:55:40 iz2ze0dr07y7jess3rvzlgz runuser[14720]: pam_unix(runuser:session): session opened for user root by (uid=0)
Nov 05 22:55:41 iz2ze0dr07y7jess3rvzlgz jenkins[14715]: Starting Jenkins [ OK ]
Nov 05 22:55:41 iz2ze0dr07y7jess3rvzlgz systemd[1]: Started LSB: Jenkins Automation Server.
[root@iz2ze0dr07y7jess3rvzlgz ~]#
Jenkins启动&插件安装
一:地址栏输入 ip:8029 访问jenkins(如不能访问,请检查防火墙或jenkins服务是否正确启动)
[root@Docker dowoload]# cat /var/lib/jenkins/secrets/initialAdminPassword
查看密码并输入
出现如下页面
解决方法如下:
输入:http://ip:8029/pluginManager/advanced
方框中的地址:https://updates.jenkins.io/update-center.json
改为:http://updates.jenkins.io/update-center.json
Https
协议改为http,然后服务器重启jenkins服务,再次访问jenkins首页
二:选择安装推荐的插件
成功打开首页后:
安装maven info和coding web hook插件
进入系统管理-->插件管理-->点击avalible-->搜索maven,找到maven info,同样,找到coding webhook插件,点击安装,安装之后重启Jenkins就可以了
三、配置系统变量
配置系统变量之前需要在系统安装git、jdk、maven,具体的不多说了
点击系统管理-->全局工具配置-->配置jdk\mavn
五、创建项目
Pre Steps : 构建项目的时候杀死java进程
build :git clone 代码,并且maven编译
Post Steps :把编译好的xxx.jar 通过 java -jar 命令运行(因jenkins启动完成后会杀死衍生进程,所以需要做特殊处理)
在码云上设置
进入码云,进入具体的项目,点击右边的“管理”,进入管理页面,然后点击左边的“webHooks”,进行设置,其中URL需要填写jenkins中的webhook地址,密码填写jenkins的webhook令牌,然后点击添加保存就可以了。
build.sh脚本
#!/usr/bin/env bash
echo "开始启动java程序。。。。"
export BUILD_ID=dontKillMe
nohup java -Xms246m -Xmx500m -Dhudson.util.ProcessTree.disable=true -jar /var/lib/jenkins/workspace/pipi/target/login-test-0.0.1-SNAPSHOT.jar >/dev/null 2>&1 &
sleep 10s
最后点击构建,就可以看到项目的构建过程了