开源的java语言开发持续集成工具,支持CI/CD(持续集成 持续交付 持续布署)
易于安装部署配置
消息通知及测试报告
分布式构建
文件识别
丰富的插件支持
Continuous Integration
介绍
目的
Continuous Delivery
Continuous Deployment
持续集成(Continuous Integration, CI)
持续交付(Continuous Deployment, CD)
持续部署(Continuous Delivery, CD)
CI/CD 框架
源代码控制管理
自动化构建工具
将源代码构建成某种想要的格式,并且将清理、编译、测试、部署到某个位置这些任务自动化
常用语言对应的开源构建工具
应用服务器
构建出应用之后,还需要应用服务器来发布我们的应用
常见的网页应用服务
代码覆盖测试
代码测试框架:进行编写与运行测试
代码质量改进工具:提升代码的质量
jdk-1.11
jenkins-2.346
maven-3.5
git-1.8
配置java环境
export JAVA_HOME=/usr/local/java
export PATH= J A V A H O M E / b i n : JAVA_HOME/bin: JAVAHOME/bin:PATH
- . /etc/profile.d/java.sh
安装jenkins
curl -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 -y jenkins
/etc/sysconfig/jenkins
/var/lib/jenkins
/usr/lib/jenkins/jenkins.war
运行jenkins
修改配置文件
JENKINS_JAVA_CMD=“/usr/local/java/bin/java”
- 修改启动文件
- # vim /usr/lib/systemd/system/jenkins.service
[Service]
EnvironmentFile=-/etc/sysconfig/jenkins
#让Jenkins配置文件生效,'-'表示若没有该文件不影响启动
- systemctl daemon-reload
- 启动jenkins
- systemctl start jenkins;systemctl enable jenkins
- 启动超时处理
- # netstat -tanp |grep java
tcp6 0 0 :::8080 :: LISTEN 2361/java
安装Maven
介绍
下载
安装
export MAVEN_HOME=/usr/local/maven3.5
export PATH= M A V E N H O M E / b i n : MAVEN_HOME/bin: MAVENHOME/bin:PATH
- . /etc/profile.d/maven.sh
- mvn -v
- 配置国内镜像加速
- # vim /usr/local/maven3.5/conf/settings.xml
#找到mirrors标签,加入以下内容
alimaven
aliyun maven
https://maven.aliyun.com/nexus/content/groups/public/
central
测试maven
git clone https://gitee.com/leedon21/easy-springmvc-maven.git
cd easy-springmvc-maven/
mvn package
mvn clean
mvn clean package
安装git
服务启动后,使用浏览器访问http://jenkins-ip:8080
初始化配置
1、根据提示解锁jenkins
2、安装推荐插件,若有失败项,点击重试
3、创建管理员帐户
2可能出现离线问题
插件管理
在线安装
离线安装
下载
官网
国内
上传
需额外安装的插件
Publish over SSH配置
系统管理->系统配置->Publish over SSH->填写Jenkins SSH Key->填写SSH Servers->保存
Jenkins SSH Key
Passphrase
Path to key
Key
SSH Servers
SSH Server Name
Hostname
Username
Remote Directory
Test Configuration
全局工具配置
系统管理->全局工具配置->配置JDK->配置Git->配置Maven->保存
JDK
Git
Maven
系统管理->Manage Credentials-> 全局->添加凭据->选择类型->配置->Create
类型
Username with password
用户名
密码
ID
描述
SSH Username with private key
ID
描述
Username
Enter directly
类型二选一即可,若克隆使用SSH则选择私钥,若克隆使用HTTP则选择密码
(Java应用)
配置maven
配置java应用服务器(tomcat)
上传测试代码到gitlab中
gitlab web
gitlab server
新建任务->自定义任务名称-> 选择任务类型->确定->配置->保存
maven项目
源码管理
选择Git
Repository URL
Credentials
构建触发器
手动构建(默认)
自动构建
Build
Post Steps
Add post-build step选择Send files or execute commands over SSH
SSH Server Name
Source files
Remove prefix
Remote directory
Exec command
自由风格项目
源码管理
构建
构建后操作
步骤
我的视图->选择任务->立即构建
点击任务标签’#1‘旁下拉选项可进行查看操作,’控制台输出‘可查看构建详细过程(排错)
过程
创建目录
拉取源码
源码打包
远程传输
远程命令
Jenkins
tomcat
当有人向GitLab仓库某分支(自定义,一般为master)成功的push代码时,立即触发构建
配置
jenkins
安装GitLab插件
构建触发器勾选’Build when a change is pushed to GitLab‘
选择启用触发器条件
高级
Allowed branches
Secret token
gitlab web
设置外发请求
设置webhook
测试
通过预定义的URL来触发构建
配置
开启匿名用户读权限
构建触发器勾选’触发远程构建 (例如,使用脚本)‘,自定义身份验证令牌
验证
访问指定URL,观察是否触发自动构建
URL
可通过浏览器访问或使用curl(常在脚本中使用)
布尔值参数
名称
Set by Default
选项参数
名称
选项
文本参数
名称
默认值
Extended Choice Parameter
需安装插件Extended Choice Parameter
Name
Basic Parameter Types
Single Select
Multi Select
Radio Buttons
Check Boxes
Text Box
Hidden
Number of Visible Items
Delimiter
Choose Source for Value
Git 参数
需安装插件Git Parameter
名称
参数类型
标签
分支
默认值
目标
操作
构建
回滚
配置任务
新建任务->任务名spring->自由风格->确定->参数化构建->源码管理->构建->保存
参数化构建
添加Git 参数
名称
参数类型
添加选项参数
名称
选项
源码管理
选择Git
Repositories
Repository URL
Credentials
Branches to build
构建
增加‘执行 shell’
配置Jenkins
编写构建脚本
编写playbook
hosts: all
user: root #远程连接到root用户执行
gather_facts: false
vars:
/usr/local/tomcat/bin/shutdown.sh
“nohup /usr/local/tomcat/bin/startup.sh &” #ansible远程启动(脱离终端)
编写host
配置版本仓库
创建目录并授权
仓库初始化
注意权限
配置ansible
安装ansible并在配置文件中关闭指纹
传公钥
验证
配置远程仓库
克隆到本地
进入仓库目录spring
修改内容
- 保存
- git add .
git commit -m “green”
- 推送到master
- git push origin master
- 打标签
- git tag v1.0
- 推送到标签
- git push origin v1.0
- 构建操作
- 任务构建,tag选择版本,operation选择‘build’
- 回滚操作
- 任务构建,tag选择版本,operation选择‘rollback’
- 观察tomcat网页是否发生相应变化
pipline
node
stage
step
Jenkinsfile
声明式
脚本式
以Groovy语言为基础,语法结构同Groovy相同
结构
stages {
stage(‘pull code’) {
steps {
git credentialsId: ‘1’, url: ‘[email protected]:jenkins/spring.git’
}
}
stage(‘maven package’) {
steps {
sh ‘’/usr/local/maven3.5/bin/mvn package’
}
}
stage(‘Deploy’) {
steps {
sh ‘ansible-playbook -i /tmp/spring.host /tmp/spring.yaml’
}
}
}
}
脚本式
插件
系统管理->Manage and Assign Roles
Manage Roles管理角色
针对角色赋予不同权限,再将该角色分配给用户。角色就相当于一个组
角色类型
Global roles
Item roles
Node roles
选择角色类型->Role to add->定义角色名称->Add->分配权限->Save
Assign Roles分配角色
角色策略宏
需求
配置
创建角色
全局角色
manager
developer
项目角色
ItemS Manager
ItemS Dev
分配角色
全局角色分配
项目角色分配
登录测试
蛮力发布
方式
优势
不足
适用场景
蓝绿发布
方式
优势
不足
适用场景
灰度发布
(金丝雀发布)
方式
步骤
优势
不足
适用场景
滚动发布
方式
优势
不足