jenkins
什么是jenkins
jenkins是一个开源持续集成工具
开发工具:JAVA
功能:提供了软件开发的持续集成服务
特点:支持主流软件配置管理,配置实现软件配置管理,持续集成功能
Jenkins的优势和应用场景
它是一个主流的运维发开平台,兼容所有主流开发环境
插件市场可与海量业内主流开发工具实现集成
以job为配置单位与日志管理,使运维与开发人员能协同工作
权限管理划分不同Job不同角色
强大的负载均衡功能,保证项目的可靠性
jenkins安装配置管理
1.添加yum源(https://pkg.jenkins.io/redhat/)
[root@jenkkins ~]# wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo
[root@jenkkins ~]# rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key
2.保证系统java环境为8.0
[root@jenkins ~]# yum install java -y
[root@jenkins ~]# java -version
openjdk version "1.8.0_191"
OpenJDK Runtime Environment (build 1.8.0_191-b12)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)
3.关闭防火墙和selinux
[root@jenkins ~]# systemctl stop firewalld
[root@jenkins ~]# systemctl disable firewalld
[root@jenkins ~]# setenforce 0
[root@jenkins ~]# cat /etc/selinux/config
SELINUX=disabled
jenkins安装与初始化工作
1.yum安装jenkins
[root@jenkins ~]# yum install jenkins -y
2.创建jenkins用户
[root@jenkins ~]# useradd deploy
3.更改jenkins启动用户和端口
[root@jenkins ~]# vim /etc/sysconfig/jenkins
JENKINS_USER="deploy"
JENKINS_PORT="8080"
4.更改家目录和日志目录的属猪和属组
[root@jenkins ~]# chown -R deploy:deploy /var/lib/jenkins
[root@jenkins ~]# chown -R deploy:deploy /var/log/jenkins
4.启动jenkins
[root@jenkins ~]# systemctl start jenkins.service
我发现我修改了启动用户,jenkins端口起不来,我又改回去并重启机器了
据说还要改/var/cache/jenkins/的属组和属猪,我没改下次补上,看行不行
[root@jenkins ~]# lsof -i:8080
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 1145 jenkins 166u IPv6 21469 0t0 TCP *:webcache (LISTEN)
登陆web界面:
获取密码:
[root@jenkins ~]# cat /var/lib/jenkins/secrets/initialAdminPassword
eb8de3b50e764410a8bb371aa1b8771d
安装推荐的插件:
特别的慢:
Jenkins Job介绍
代表一个任务或者项目
可配置与可执行
执行后的记录称之为build
日志监控与记录
所有文件集中保存
Freestyle Job:
1.需在页面添加模块配置项与参数完成配置
2.每个job只能实现一个开发功能
3.无法将配置代码化,不利于Job配置迁移与版本控制
4.逻辑相对简单,无需额外的学习成本
Pipeline Job:匹配持续集成与持续交付的概念
1.所有模块,参数配置都可以体现为一个pipeline脚本
2.可以定义多个stage构建一个管道工作集
3.所有配置代码化,方便Job配置迁移与版本控制
4,需要pipeline脚本语法基础
Jenkins Job环境准备:
1.配置Jenkins server本地Gitlab DNS
2.安装 git client , curl 工具依赖
3.关闭系统Git http.sslVerify安全认证
4.添加Jenkins后台Git client user 与email
5.添加Jenkins后台Git Credential凭据
1.[root@jenkins ~]# echo "10.0.3.81 gitlab.example.com" >> /etc/hosts
2.[root@jenkins ~]# yum install git curl -y
3.[root@jenkins ~]# git config --system http.sslVerify false
4
注册Git plugin的name和email
系统管理》系统设置》Git plugin
添加Jenkins后台Git Credential凭据
凭据》系统》全局凭据》添加凭据
这个凭据就是gitlab的账号和密码
Jenkins Freestyle Job的构建与配置
1.创建一个freestyle project
2.编辑描述信息:
3.参数配置
4.源码管理:
如下图,服务器没装git,而且我git忘了关ssl验证(前面已经补上)
5.build配置
Jenkins Pipeline Job构建配置
Jenkins Pipeline Job编写规范
1.创建一个Pipeline job
2.添加描述信息:
3.pipeline脚本配置
#!groovy
pipeline {
agent {node {label 'master'}}
environment {
PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin"
}
parameters {
choice(
choices: 'dev\nprod',
description: 'choose deploy environment',
name: 'deploy_env'
)
string (name: 'version', defaultValue: '1.0.0', description: 'build version')
}
stages {
stage("Checkout test repo") {
steps{
sh 'git config --global http.sslVerify false'
dir ("${env.WORKSPACE}") {
git branch: 'master', credentialsId:"0acf3ea1-05d8-4705-8f9a-d72293a4813f", url: 'https://gitlab.example.com/root/test-repo.git'
}
}
}
stage("Print env variable") {
steps {
dir ("${env.WORKSPACE}") {
sh """
echo "[INFO] Print env variable"
echo "Current deployment environment is $deploy_env" >> test.properties
echo "The build is $version" >> test.properties
echo "[INFO] Done..."
"""
}
}
}
stage("Check test properties") {
steps{
dir ("${env.WORKSPACE}") {
sh """
echo "[INFO] Check test properties"
if [ -s test.properties ]
then
cat test.properties
echo "[INFO] Done..."
else
echo "test.properties is empty"
fi
"""
echo "[INFO] Build finished..."
}
}
}
}
}
4.构建
首次构建pipeline job时,我们的参数没有引入到当前pipelinejob当中
5.再次带有参数的构建
6.单击蓝色小按钮,查看控制台日志
Jenkins 应用
如何使用jenkins与我们平时使用的应用工具进行集成使用
编写job的同时使用任务调取jenkins的基础应用
Jenkins Linux shell 集成
Jenkins+ Linux shell
1.新建任务
2.添加描述
3.添加构建脚本
#!/bin/sh
user=`whoami`
if [ $user == 'deploy' ]
then
echo "Hello, my name is $user"
else
echo "Sorry, I am not $user"
fi
ip addr
cat /etc/system-release
free -m
df -h
py_cmd=`which python`
$py_cmd --version
4.保存并退出,开始构建
5.查看控制台信息
Jenkins参数集成
1.新建任务
2.添加描述
3.勾选参数化构建
添加选项参数
添加文本参数
添加布尔值参数:
添加密码参数
4.添加构建步骤,保存
#!/bin/sh
echo "Current deploy environment is $deploy_env"
echo "The build is $version"
echo "The paasword is $pass"
if $bool
then
echo "Request is approved"
else
echo "Request is rejected"
fi
5.开始构建
Jenkins git集成
1.新建任务
2.添加描述
3.源码管理,添加代码仓库,然后保存退出
4.立即构建
第一次,仓库为空构建报错
Jenkins maven集成
1.下载安装maven
[root@jenkins ~]# wget http://mirrors.hust.edu.cn/apache/maven/maven-3/3.6.0/binaries/apache-maven-3.6.0-bin.tar.gz
[root@jenkins ~]# tar -zxvf apache-maven-3.6.0-bin.tar.gz -C /opt
[root@jenkins ~]# cd /opt
[root@jenkins opt]# cd apache-maven-3.6.0/bin
[root@jenkins bin]# ./mvn --version
Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-25T02:41:47+08:00)
Maven home: /opt/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-1.el7_6.x86_64/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-862.14.4.el7.x86_64", arch: "amd64", family: "unix"
2.新建任务
3.添加描述
4.源码管理
5.添加构建步骤,保存
6.配置javahome和maven home
再次配置任务
保存并立即构建
这个构建比较慢
Jenkins ansible集成
环境准备:
安装python3.7,ansible git版本 8步走,如下
按照这篇教程来一般不会有报错:https://blog.csdn.net/qq_33317586/article/details/87304589
防止意外中断,可以在screen里操作
zipimport.ZipImportError: can't decompress data; zlib not available的处理方式:
[root@jenkins Python-3.7.2]# yum install zlib-devel zlib -y
ModuleNotFoundError: No module named '_ctypes'的处理方式
[root@jenkins Python-3.7.2]# yum install libffi-devel -y
1,开启密钥认证:
jenkins主机下的deploy系统用户到test.example.com这台主机的密钥认证
(.py3-a2.7.8-env) [deploy@jenkins ansible]$ ssh [email protected]
Last login: Sat Feb 23 20:20:52 2019 from 10.0.3.80
[root@client ~]#
2.deploy目录下面有个ansible的配置文件
下图的user写成了use,图片就不改了,此处说明一次
3.新建任务
4.添加描述
5.构建>增加构建步骤>执行shell
6.点击立即构建,发现小圆圈是红色,点开提示权限不够,原来jenkins是以jenkins身份运行的,我没改成deploy用户
我以为把/home/deploy下面的文件属主都改为jenkins就可以了;
- [root@jenkins ~]# chown -R jenkins /home/deploy