Jenkins自动化发布

Jenkins自动化系统部署

模式:Jenkins+gitlab
Git是什么,版本管理工具。GitLab 私有化的“GitHub”,管理代码版本的平台
Jenkins只是一个平台,真正运作的都是插件。这就是jenkins流行的原因,因为jenkins什么插件都有

流程介绍:自我理解开发把代码上传到gitlab上,然后通过Jenkins配合一些插件和脚本可以远程发布到引用服务器。

具体的创建Jenkins任务的过程为
1.创建jenkins任务
2.填写Server信息
3.配置git参数
4.填写构建语句(shell脚本),实现自动部署

服务器环境
一台jenkins服务器:192.168.4.117
一台gitlab服务器:192.168.4.81
一台web测试服务器:192.168.4.91

 

安装gitlab

https://blog.csdn.net/Doudou_Mylove/article/details/86756435

gitlab部署项目如下:

Jenkins自动化发布_第1张图片

Jenkins自动化发布_第2张图片

根据提示需要给配置文件添加SSH密钥

 

gitlab服务器上执行

ssh-keygen -t rsa

把公钥复制到gitlab上如下位置

Jenkins自动化发布_第3张图片

修改配置文件

vim /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml

Jenkins自动化发布_第4张图片

重启gitlab 
gitlab-ctl restart

安装git客户端

yum -y install git

 

创建一个gitlab仓库目录,并把上面创建的测试项目demo克隆到此目录下:

mkdir /data

cd /data

git clone [email protected]:root/demo.git

Jenkins自动化发布_第5张图片

如果是新创建的项目在克隆的时候会提示你克隆的是一个空项目。

 

测试上传一个文件:

Jenkins自动化发布_第6张图片

依次执行下面五步:

git config --global user.email "[email protected]"

git config --global user.name "root"

git add *

git commit -m "add index.html"

git push origin master

#前面两个是全局设置,第三行是把当前目录下所以文件暂存起来,第四行提交到gitlab,最后一行是将本地的master分支推送到origin主机,同时指定origin为默认主机,后面就可以不加任何参数使用git push了(git push,默认只推送当前分支)。

 

安装Jenkins

需要先安装Java环境并加入环境变量

https://blog.csdn.net/Doudou_Mylove/article/details/89377512

#卸载原有Jenkins(可选):

systemctl status jenkins

systemctl stop jenkins

yum -y remove jenkins

find / -name jenkins

rm -fr /var/cache/jenkins/

rm -fr /var/lib/jenkins/

 

开始安装Jenkins

cd /etc/yum.repos.d/

wget http://pkg.jenkins.io/redhat/jenkins.repo

rpm --import http://pkg.jenkins.io/redhat/jenkins.io.key

yum install -y jenkins

查看Jenkins有关配置文件

[root@localhost ~]# rpm -ql jenkins

/etc/init.d/jenkins

/etc/logrotate.d/jenkins

/etc/sysconfig/jenkins      //主配置文件,可修改用户和端口等

/usr/lib/jenkins

/usr/lib/jenkins/jenkins.war

/usr/sbin/rcjenkins

/var/cache/jenkins

/var/lib/jenkins            //数据存放目录

/var/log/jenkins

 

启动Jenkins

systemctl start jenkins

 

#如果是下载的war包,运行Jenkins (下载的War可以直接运行)

#nohup java -jar jenkins.war --httpPort=22000 &

#22000是Jenkins端口

#cat /root/.jenkins/secrets/initialAdminPassword 

#查看初始化密码,这个文件位置可以日志(nohup.out)里找到

#或者直接下载Jenkins的war包到tomcat的webapps目录下(需要先安装tomcat),启动tomcat(./startup.sh)的时候Jenkins也就启动了,然后通过浏览器访问时要在端口后面加Jenkins:

例如:http://192.168.102.128:8080/Jenkins

 

这里用yum安装的Jenkins,所以就用下面方式访问:

浏览器输入http://192.168.102.128:8080/

 

Jenkins自动化发布_第7张图片

解锁目录:/var/lib/jenkins/secrets/initialAdminPassword

Jenkins自动化发布_第8张图片

Jenkins自动化发布_第9张图片

Jenkins自动化发布_第10张图片

Jenkins自动化发布_第11张图片

Jenkins自动化发布_第12张图片

安装gitlab插件

Jenkins自动化发布_第13张图片 Jenkins自动化发布_第14张图片

Jenkins自动化发布_第15张图片

插件要安装下面几个,依次在可选插件里面搜索安装,然后重启Jenkins:

"Gitlab Hook"、"Build Authorization Token Root"、"Publish Over SSH"、"Gitlab Authentication"、"Gitlab"、"Maven Integration"

Jenkins自动化发布_第16张图片

先做一个动作:

在gitlab上创建一个访问令牌

Jenkins自动化发布_第17张图片

名称随便写,时间设置的尽量长一点,都画勾,点击创建个人访问令牌就会显示一串编码,复制下来后面会用

Jenkins自动化发布_第18张图片

然后在Jenkins服务器上做免密钥登录到远程应用服务器为下面的系统设置做铺垫

ssh-keygen -t rsa

ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]

下面这步在远程应用服务器上执行

chmod 644 authorized_keys

 

同时把公钥也配置到gitlab web端一份

Jenkins自动化发布_第19张图片

再把私钥配置到Jenkins自身web端

选择凭据,点击global

Jenkins自动化发布_第20张图片

Jenkins自动化发布_第21张图片

 

接着在Jenkins上设置系统设置:

Jenkins自动化发布_第22张图片

Jenkins自动化发布_第23张图片

上面这个位置点击”添加-Jenkins”会显示个人访问令牌页面,把上面gitlab上创建记录好的令牌编码粘贴过来

Jenkins自动化发布_第24张图片

再往下填写发布到远程的应用服务器信息,名称随意,重点是IP和用户名,远程目录必须要存在,切记一定要点击右下角的测试,如果显示成功则说明上面我们在Jenkins上传到远程应用服务器上的公钥是生效的。

Jenkins自动化发布_第25张图片

 

继续在Jenkins上安装maven:

安装maven的目的是通过项目中的pom.xml文件自动解决项目依赖问题,构建项目。解压即可用,为下面的全局设置做铺垫

cd /usr/local

wget http://mirrors.hust.edu.cn/apache/maven/binaries/apache-maven-3.2.2-bin.tar.gz

tar -xvf apache-maven-3.5.2-bin.tar.gz

mv apache-maven-3.5.2 maven

配置环境变量

vim /etc/profile

export M2_HOME=/usr/local/maven-3.5.2
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$M2_HOME/bin:$PATH

source /etc/profile

mvn –version

#注意环境变量是跟Java的变量有联系的。

 

接着设置Jenkins全局设置:

Jenkins自动化发布_第26张图片

主要修改jdk和maven

Jenkins自动化发布_第27张图片

Jenkins自动化发布_第28张图片

开始创建项目(只有安装上maven插件才能构建maven项目):

Jenkins自动化发布_第29张图片

填写gitlab库地址,然点击“添加-Jenkins”添加凭证,默认就行

Jenkins自动化发布_第30张图片

Jenkins自动化发布_第31张图片

再往下标注处画勾,并记住gitlab webhook网址,点击下面“高级”

Jenkins自动化发布_第32张图片

点击“高级”记住私密令牌,这个令牌和上面的webhook网址会在后面一同用到

Jenkins自动化发布_第33张图片

最后点击“构建后操作”,注意SSH服务器发布格式:

Jenkins自动化发布_第34张图片

最后回到gitlab,点击“项目-设置-集成”

Jenkins自动化发布_第35张图片

把上面在Jenkins活动配置里面记录的webhook和令牌编码填到对应的位置:

Jenkins自动化发布_第36张图片

验证可选,但是一定要测试一下,返回挂钩200说明成功:

Jenkins自动化发布_第37张图片

Jenkins自动化发布_第38张图片

 

当你上面点击验证测试的时候实际上相当于从gitlab上提交过一次了,回到Jenkins查看是红色的,点击小红圈看日志:提示没有pom.xml文件,原因是我们gitlab本地的仓库目录没有真正的maven项目,所以在上面测试推送的时候会报错:

Jenkins自动化发布_第39张图片

Jenkins自动化发布_第40张图片

接下来去和开发要一个测试maven项目,然后从本地上传到gitlab,然后看结果:

Jenkins自动化发布_第41张图片

主要用上面标注的这个文件夹。

 

项目介绍:这是一个简单的测试maven项目

用途:gitlab+jenkins+maven

 

使用方式:

推送现有文件夹(可以用eclipse,本地git等,我用的是ftp)到gitlab,再通过Jenkins发布到远程服务器

 

先把gitlab项目克隆到指定位置

git clone [email protected]:root/maven-demo.git

cd maven-demo

用ftp把本地项目传到gitlab项目下,然后依次执行下面命令

git init

git remote add origin [email protected]:root/maven-demo.git

git add .

git commit -m "初始提交"

git push -u origin master

 

第一次发布会下载好多pom.xml依赖的东西,时间较长

Jenkins自动化发布_第42张图片

执行成功后去远程应用服务器根据前面系统设置和Jenkins活动配置的SSH目录查看是否收到代码:

发布到远程服务器如果是一个jar包可以手动启动也可以在Jenkins编写shell脚本执行:

手动:java –jar 包名

#注意启动之后窗口不能关闭,可以选择后台启动

启动之后可以去浏览器查看:

Jenkins自动化发布_第43张图片

Jenkins自动化发布_第44张图片

 

正常都会新建一个start.sh脚本,port端口自己指定,把脚本放到Jenkins里面自动执行,从而达到全自动化发布

vim start.sh

#!/bin/bash

nohup java -jar xxx.jar --server.port=xxxx &

./start.sh

 

#如果不是maven项目的话,就更简单,在Jenkins上创建一个自由活动,而且减少了maven配置。后续完善...

Jenkins自动化发布_第45张图片

你可能感兴趣的:(自动化)