jenkins+gitlab项目发布
centeros7 安装配置环境jdk1.8
1.先卸载centeros自带jdk
rpm -qa | grep openjdk
2.删除
rpm -e --nodeps
3.再次查询
rpm -qa | grep jdk
4.在usr/local创建文件夹
cd /usr/local mkdir java
5.将jdk1.8放到刚刚创建的文件中并解压
cd /usr/local/java tar -zxvf jdk-8u181-linux-x64.tar.gz
cd jdk1.8.0_181/ pwd #(这一步记录jdk1.8的路径,一会配置环境用)
7.配置环境vim /etc/profile
export JAVA_HOME=/usr/local/java/jdk1.8.0_181 export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile
8.查看是否成功
java -version
maven 环境配置
1.在/usr/local 下创建maven文件夹
cd /usr/local mkdir maven
2.进去新建的文件夹
cd maven
3.解压
tar -zxvf apache-maven-3.6.3.tar.gz
4.进入解压的文件夹
cd apache-maven-3.6.3/
5.配置环境
vim /etc/profile export MAVEN_HOME=/usr/local/maven/apache-maven-3.5.4 export PATH=$PATH:$MAVEN_HOME/bin
按Esc后:wq保存后
source /etc/profile
6.查看是否成功
mvn -v
GitLab的安装和启动、访问
1. 配置yum源
vim /etc/yum.repos.d/gitlab-ce.repo
复制下面内容:
[gitlab-ce] name=Gitlab CE Repository baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/ gpgcheck=0 enabled=1
2. 更新本地yum缓存
yum makecache
3. 安装GitLab
yum install gitlab-ce #自动安装最新版
4. 修改配置文件 vim /etc/gitlab/gitlab.rb
external_url 'http://192.168.10.43:1000' #本机的IP地址加端口号
启动gitlab:gitlab-ctl reconfigure && gitlab-ctl start
查看状态:gitlab-ctl status
访问地址:http://192.168.10.43:1000
gitlab 默认管理用户是root
查看初始密码: cat /etc/gitlab/initial_root_password
Jenkins安装与配置
1、下载rpm包
访问:https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/。进行对应版本下载。
2、安装
rpm -ivh jenkins-2.308-1.1.noarch.rpm
Jenkins默认端口为8080,如果存在端口冲突的话,需要修改:/etc/sysconfig/jenkins 文件中的 JENKINS_PORT
3、先启动jenkins,完成初始化
systemctl start jenkins
启动完成后,不要访问,查看jenkins目录下的updates文件夹是否出现,当出现后,代表已经初始化 完成,先关闭jenkins,然后进入updates文件夹,配置jenkins插件下载加速器。
# 查看文件
cd /var/lib/jenkins/updates
# 配置加速器
sed -i 's/http:\/\/updates.jenkinsci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json && sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json
4、配置后,重启Jinkens
systemctl restart jenkins
jenkins配置
启动完成后,进入jenkins。地址:http://ip:8088。 进入之后会显示如下页面,需要输入初始化密码。
等待全部插件安装成功,创建用户后,进入Jenkins的主页
插件安装
1、安装Maven Integration
手动安装插件maven插件,,如果缺少Maven IntegrationPlugin插件,在创建job时,不会有新建一个 maven项目选项。
在Jenkins首页选择 Manage Jenkins -> Manage Plugins
2、安装Gitlab Hook&Gitlab Plugin #步骤一样,安装对应插件即可。
3、安装 Deploy on container #步骤一样,安装对应插件即可。
4、配置Jenkins全局环境
点击左侧菜单中的系统管理进入Jenkins管理模块。选择全局工具配置。
JDK与Git如果是自动安装的话可以不用填写配置环境,编译安装的话也需要填写配置环境,对于maven指定服务器maven路径即可。
5、设置Jenkins与GitLab连接
在Jenkins中选择系统管理,在系统配置页面,找到 GitLab项,输入相关信息
对于认证信息,需要回到Gitlab中进行获取
复制令牌信息,回到 Jenkins中。点击 添加,添加认证信息。
测试 Jenkins 能否连接Gitlab服务器,点击Test Connection。当显式Success,代表设置成功。
最后还需取消允许匿名访问。
4、Jenkins任务构建
1、在Jenkins首页创建 新任务
在创建任务页面,输入任务名称,同时选择构建maven项目。
2、选择源码管理 -> Git。设置当前Gitlab仓库地址和认证信息
对于认证信息,点击添加。在页面中,类型:Username with password。用户名:gitlab用户名 。 密码:gitlab密码。点击添加即可。
注意:如果当前是公共仓库,不需要设置认证信息。如果是私有仓库,则需要。
3、选择Build选项
4、构建任务
返回首页,在列表中找到我们刚才创建的任务,点击右边的绿色箭头按钮,即可执行此任务。
5、自动化构建
1、配置webhook
webhook可以把它理解为是一个钩子,用于Gitlab自动触发jenkins进行任务构建。
Jenkins生成token
在Jenkins中首先需要生成当前Jenkins用户的Token信息,用于添加Gitlab的webhook时使用。
gitlab配置webhook
进入到Gitlab,选择管理员 ->设置 -> 网络 -> 外发请求。
在Gitlab中选择 管理员 -> 系统钩子。在其内部配置相关信息。
URL信息:需要对应Jenkins任务配置 -> 构建触发器的地址信息
Secret Token信息:Jenkins中刚才生成的令牌
当配置完成,页面下方会展示对应信息,同时可对当前钩子进行测试。
当页面上方显示 200,则当前webhook配置成功。
2、Jenkins配置Gitlab任务触发
在任务配置中选择 构建后操作 -> 增加构建后操作步骤 -> push buildstatus to gitlab
3、测试自动构建效果
本地提交代码到Gitlab,测试是否能自动触发Jenkins自动构建,当看到如下效果,测试成功。
4、自动化部署
对于自动化部署,也需要通过jenkins集合tomcat完成,最终当本地提交代码到GitLab后,可以自动 触发jenkins将项目部署在tomcat。
安装Jenkins插件
配置SSH服务器
在Jenkins首页选择 -> 系统管理 -> 系统配置 -> SSH Servers
任务配置
找到对应任务选择 -> 配置 -> 构建后操作。添加 send build artifacts over SSH
创建脚本目录和war包目录
根据上面配置,需要在服务器上创建 /opt/war 和 /opt/scripts 。war目录用户保存war包,scripts目 录用于保存shell脚本。
配置shell脚本
在/opt/scripts目录下创建 tomcat.sh文件,作为shell执行脚本,其内容如下:
#!/bin/bash set -x PROJECT_NAME=$1 TOMCAT_HOME=/usr/local/tomcat/tomcat_$PROJECT_NAME/bin PROCESS=`ps -ef |grep tomcat_$PROJECT_NAME|grep -v grep|wc -l` if [ $PROCESS -eq 0 ];then echo "run starting tomcat" sh $TOMCAT_HOME/startup.sh else sh $TOMCAT_HOME/shutdown.sh if [ $? -eq 0 ]; then sh $TOMCAT_HOME/startup.sh else for pid in `ps -ef |grep $tomcat_$PROJECT_NAME|grep -v grep |awk '{print $2}'`;do kill -9 $pid;done sh $TOMCAT_HOME/startup.sh fi fi echo "Sucessfull ...."
使用规范问题
(1)当前是一个项目一个tomcat,tomcat命名要有规范:tomcat_项目名称。
(2) 当部署完成后,如果无法访问项目,而是访问tomcat首页,则删除tomcat下的webapps目录即可。
5、测试
当在本地提交代码到GitLab后,会自动触发Jenkins对任务进行构建,构建完成后会根据任务配置执 行指定脚本,最终将项目部署在对应的tomcat上。可以远程访问。
结果:
修改代码,提交到Gitlab,提交成功后,Jenkins中自动进行任务构建,构建成功后,会将项目部署在tomcat中。即可通过服务器进行远程项目访问。