Jenkins
CI/CD, DevOps介绍
持续集成 CI: 代码合并,构建,部署,测试都在一起,不断地执行这个过程,并对结果反馈.
持续交付 CD: 部署到生产环境,给用户使用
持续部署 CD: 部署到生产环境.
部署GIT (GIt版本控制服务器)
~]# yum install git -y ~]# useradd git ~]# passwd git ~]# su git ]$ cd ~]$ mkdir repos ~]$ cd repos/ ]$ mkdir app.git ]$ cd app.git/ ]$ git --bare init 初始化空的 Git 版本库于 /home/git/repos/app.git/ ]$ ls -a . .. branches config description HEAD hooks info objects refs
测试服务器 clone 代码
]# ssh-keygen ]# ssh-copy-id git@172.16.0.41 ~]# mkdir test1 ~]# cd test1 ]# git clone git@172.16.0.41:/home/git/repos/app.git
Jenkins
安装 jdk and maven
jdk 官网: https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
maven下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.0/binaries/
jdk 安装
wget https://download.oracle.com/otn-pub/java/jdk/8u201-b09/42970487e3af4f5aa5bca3f542482c60/jdk-8u201-linux-x64.tar.gz
tar xf jdk-8u201-linux-x64.tar.gz -C /usr/local/
mv jdk1.8.0_201/ jdk1.8
vim /etc/profile
export JAVA_HOME=/usr/local/jdk1.8
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
source /etc/profile
java -version
java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)
maven 安装
cd /usr/local/ wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.0/binaries/apache-maven-3.6.0-bin.tar.gz tar xf apache-maven-3.6.0-bin.tar.gz mv apache-maven-3.6.0/ maven3.6 vim /etc/profile export PATH="/usr/local/maven3.6/bin:$PATH" source /etc/profile mvn -v Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-25T02:41:47+08:00) Maven home: /usr/local/maven3.6 Java version: 1.8.0_201, vendor: Oracle Corporation, runtime: /usr/local/jdk1.8/jre Default locale: zh_CN, platform encoding: UTF-8 OS name: "linux", version: "3.10.0-957.1.3.el7.x86_64", arch: "amd64", family: "unix"
Jenkins 安装
官网: https://jenkins.io/
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key yum install jenkins
修改配置
1) 修改/var/lib/jenkins/updates/default.json
google改为www.baidu.com
2) 修改/var/lib/jenkins/hudson.model.UpdateCenter.xml
改地址默认jenkins默认为:https://updates.jenkins.io/update-center.json,改为http
3) 可能要修改 /etc/init.d/jenkins 指定jdk 路径
candidates="
/usr/local/jdk1.8/bin/java
"
Jenkins 配置 jdk 和 maven(全局工具配置)



用户权限管理
插件: Role-based Authorization Strategy
系统管理 --> 插件管理 进行安装

系统管理 --> 全局安全配置 --> 授权策略

系统管理 --> Manage and Assign Roles

添加 全局管理角色组 user 只有读取权限

配置项目角色
创建项目名称 : testB
正则匹配项目 符合B.* 所有的项目都会匹配到
权限: 构建 取消 读取 读取工作空间

测试用户权限
全局安全配置,允许用户注册


分配角色权限

添加刚刚注册的用户指定相应的权限,即可登录 jenkins

分配指定的项目

可以添加视图管理项目
参数化构建
插件: Extended Choice Parameter 与 Git Parameter
自带的参数化构建
项目 --> 配置 --> 构建(执行 shell ) --> 立即构建 --> 查看控制台输出


参数化构建


构建过程中可以传参



安装扩展参数化构建插件






安装Git插件

修改配置文件
~]# vim /etc/sysconfig/jenkins JENKINS_USER="root" ~]# systemctl restart jenkins



Master-Slave架构

系统管理 -->> 管理节点 -->> 新建节点 -->>


成功在线

选择应用 slave 节点


Jenkins 流水线(Pipeline)

创建 pipeline-test

流水线自定义脚本(可以点击 流水线语法 进行定义脚本)

使用 git 存储脚本
# git 服务器操作
[git@test-node1 ~]$ cd repos/
[git@test-node1 repos]$ mkdir jenkinsfile
[git@test-node1 repos]$ cd jenkinsfile/
[git@test-node1 jenkinsfile]$ git --bare init
初始化空的 Git 版本库于 /home/git/repos/jenkinsfile/
# 编写脚本上传服务器
[root@mysql-master ~]# git clone git@172.16.0.41:/home/git/repos/jenkinsfile
正克隆到 'jenkinsfile'...
warning: 您似乎克隆了一个空版本库。
[root@mysql-master ~]# cd jenkinsfile/
[root@mysql-master jenkinsfile]# vim jenkinsfile
node {
// def mvnHome
stage('checkout') { // for display purposes
// Get some code from a GitHub repository
checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[url: 'git@172.16.0.41:/home/git/repos/app.git']]])
//git 'https://github.com/jglick/simple-maven-project-with-tests.git'
// Get the Maven tool.
// ** NOTE: This 'M3' Maven tool must be configured
// ** in the global configuration.
//mvnHome = tool 'M3'
}
stage('mven Build') {
// Run the maven build
echo '1111'
}
stage('deploy') {
echo 'deploy OK'
}
stage('test'){
echo 'test'
}
}
[root@mysql-master jenkinsfile]# git add .
[root@mysql-master jenkinsfile]# git commit -m 'jenkinfile'
[master(根提交) b30531f] jenkinfile
1 file changed, 23 insertions(+)
create mode 100644 jenkinsfile
[root@mysql-master jenkinsfile]# git push origin master
Counting objects: 3, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 626 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@172.16.0.41:/home/git/repos/jenkinsfile
* [new branch] master -> master
项目配置 (脚本路径 就是自定义的 jenkinsfile 名字)

邮件通知
插件: Email Extension Plugin



应用案例
自动发布php项目
插件: Maven Lntegration plugin
数据准备
# git 服务器 su git cd cd repos/ ]$ ls appgit app.git mkdir wordpress cd wordpress/ git --bare init 初始化空的 Git 版本库于 /home/git/repos/wordpress/ # test机器: wget https://cn.wordpress.org/latest-zh_CN.tar.gz tar zxvf latest-zh_CN.tar.gz cd wordpress/ git init git remote add origin git@172.16.0.41:/home/git/repos/wordpress git add . git commit -m 'all' git push origin master
搭建 lnmp 环境并且(略)
jenkinsfile git 仓储 上传 jenkinsfile 文件
[root@mysql-master jenkinsfile]# cat jenkinsfile-php
node ("slave1-172.16.0.40") {
stage('git checkout') {
checkout([$class: 'GitSCM', branches: [[name: '${branch}']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[url: 'git@172.16.0.41:/home/git/repos/wordpress']]])
}
stage('code copy') {
sh '''rm -rf ${WORKSPACE}/.git
mv /usr/share/nginx/html/test.wp /data/backup/test.wp-$(date +"%F_%T")
cp -rf ${WORKSPACE} /usr/share/nginx/html/test.wp '''
}
stage('test') {
sh "curl http://172.16.0.40/status.html"
}
}
[root@mysql-master jenkinsfile]# git add .
[root@mysql-master jenkinsfile]# git commit -m 'file-php'
[master c7b0608] file-php
1 file changed, 14 insertions(+)
create mode 100644 jenkinsfile-php
[root@mysql-master jenkinsfile]# git push origin master
Counting objects: 4, done.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 599 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@172.16.0.41:/home/git/repos/jenkinsfile
b30531f..c7b0608 master -> master
jenkins 项目部署


检查

作者:闫世成
出处:http://cnblogs.com/yanshicheng

浙公网安备 33010602011771号