Jenkins + Pipeline + GitLab 实现自动化部署
前言
Jenkins是目前相对主流的自动化部署工具,博主也是最近才开始研究这个自动化部署架构,结局还算完美。
安装部署过程中挖了一些坑,也踩过很多坑这边由于本人喜欢偷懒,所有的安装都是采用的yum安装的,这样可以免去配置path
推荐:阿里云服务器优惠券链接
准备条件
- Linux服务器一台:CentOS 7.2
- GitLab服务器一台:GiltLab私服一台/阿里云免费Code平台
安装 JDK
yum install -y java
安装 Git
yum install -y git
安装 Maven
- 下载maven压缩包
wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.0/binaries/apache-maven-3.6.0-bin.tar.gz
- 解压maven
tar -zxvf apache-maven-3.6.0-bin.tar.gz
- 配置环境变量
vim /etc/profile
#Maven Environment
export MAVEN_HOME=/usr/local/apache-maven-3.6.0
export PATH=$PATH:$MAVEN_HOME/bin
- 更新配置
source /etc/profile
- 测试
[root@gitlab ~]# mvn -v
Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-25T02:41:47+08:00)
Maven home: /usr/local/apache-maven-3.6.0
Java version: 1.8.0_191, vendor: Oracle Corporation, runtime: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-0.el7_5.x86_64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-693.2.2.el7.x86_64", arch: "amd64", family: "unix"
安装 Jenkins
两种安装方式,一种是yum安装,另一种是rpm包安装,推荐第二种,楼主亲测,阿里云5M带宽yum安装耗时2小时
- 安装Jnekins.
- yum安装方式
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
yum install jenkins
- rpm包安装方式【
推荐
】
wget https://mirrors.shu.edu.cn/jenkins/redhat/jenkins-2.153-1.1.noarch.rpm
rpm -ivh jenkins-2.153-1.1.noarch.rpm
rpm -ql jenkins
- 修改配置文件
vi /etc/sysconfig/jenkins
- 发现
JENKINS_USER="jenkins"
JENKINS_PORT="8080"
- 改为
JENKINS_USER="root"
JENKINS_PORT="8088"
- 启动jenkins
service jenkins start
- 设置jenkins开机自启动
chkconfig jenkins on
- jenkins秘钥
cat /var/lib/jenkins/secrets/initialAdminPassword
- 选择推荐配置
PS:下载速度渣的一笔。。。等了1小时,有点怀疑5M带宽了
- 创建用户
- 配置环境
- 登录Jenkins进入欢迎页面,点击系统管理。
- 进入管理页面,点击Global Tool Configuration(全局工具配置)进入全局工具配置页面
通过yum,rpm安装的软件不需要配置,例如:java,git等等,类似maven自己jar包安装的,需要配置路径
- 安装插件【
根据自己实际情况安装
】
Run Condition
Run Condition Extras
Config File Provider
Pipeline Maven Integration
Windows Slaves
ruby-runtime
External Monitor Job Type
Javadoc
Maven Integration
Conditional BuildStep
GitLab
Build Authorization Token Root
Parameterized Trigger
jQuery
Build Pipeline
Gitlab Hook
- 配置节点【
根据自己实际情况安装
】
- 登录Jenkins进入欢迎页面,点击系统管理。
- 进入管理页面,点击节点管理
- 进入节点管理,点击新建节点
- 根据实际情况添加凭据【
楼主密钥是private Key,如果是密码选择Username with Password
】
- 设置节点信息
- 启动代理
连接GitLab实现自动化编译
流水线项目
- 新建流水线项目
- 生成一个 Token,并添加到
触发远程构建 (例如,使用脚本)
openssl rand -hex 12
- 配置 Git 项目 Webhook URL 和 Trigger,定位到对应 Git 项目的 Webhooks 配置页面,然后做
- 如下配置:
URL:http://xxx.xxx.xxx.xxx:xxxx/buildByToken/build?job=项目名称&token=xxxxxxxxxxxxxx
- Trigger: 根据需要选择,这里我们使用默认的 Push events
- 测试Push
- 编写Pipeline语法
- 设置gitlab的账号密码
- 生成gitlab pull的pipeline语法
- 设置
分支
,选择token
,然后点击Generate Pipeline Script
- 具体代码[楼主是maven项目]
BUILDDIR="./"
node ('master'){
stage "pull code" #下载代码
git credentialsId: 'gitlab', url: 'https://xxxxxx.git'
}
- 测试运行
自由风格项目
- 登录gitlab
- 设置access toekn
- 保存token
- 回归jenkins
- 添加GitLab Api Token
- Jenkins设置Gitlab,进入到 Jenkins -> 系统管理 ->系统设置,滚动到Gitlab位置,点击添加,新增一个Gitlab connection
- 新建自由风格项目
- 编写内容
附:Jenkins卸载方法
service jenkins stop
yum clean all
yum -y remove jenkins
rm -rf /var/cache/jenkins
rm -rf /var/lib/jenkins/