持续集成Jenkins从初级到高级
1. 虚拟机安装
- 下载ISO文件
- 安装Vmware
- 安装虚拟机(Ubuntu/CentOS)
- 开启虚拟机并进行换阿里源等基础配置
2. jenkins 安装
2.1 主要配置
# 配置ci用户组,创建jenkins用户,并且指定ci组
$ groupadd ci
$ useradd jenkins -g ci
# 创建存放jenkins工具的目录,并指定权限,因jenkins后期构建比较占用磁盘,此处建议先挂载磁盘
$ mkdir -p /data/software
$ chown -R jenkins:ci /data/software
# 切换jenkins用户,进入到software目录,并下载jenkins.war
$ su jenkins
$ cd /data/software/
# 如果下载较慢,建议采用迅雷下载,然后上传
$ wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war
用户命令拓展
# 给已存在的用户jenkins指定组ci
usermod -G ci jenkins
passwd jenkins
# 删除用户和组
userdel www
groupdel www
2.2 安装Java环境
- 下载jdk,上传至linux并解压
- 配置/etc/profile或.bashrc的内容
yuyang@ubuntu:~$ vi .bashrc
#java环境变量配置
export JAVA_HOME=/usr/java/jdk1.8.0_251
export JRE_HOME=/usr/java/jdk1.8.0_251/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
Android Studio 环境配置参考(如不需要可不配置)
# 配置 Android 环境变量
# ADB路径
ADB=/home/yuyang/Android/Sdk/platform-tools
export ADB
# ANDROID_NDK和ANDROID_SDK 路径
ANDROID_NDK=/home/yuyang/android-studio/Sdk/android-ndk-r14b
export ANDROID_NDK
ANDROID_SDK=/home/yuyang/Android/Sdk
export ANDROID_SDK
# 加入到PATH路径
PATH=${PATH}:${ADB}:${ANDROID_NDK}:${ANDROID_SDK}
- 使配置生效
yuyang@ubuntu:~$ source .bashrc
- 检测java环境信息
yuyang@ubuntu:~$ java -version
java version "1.8.0_251"
Java(TM) SE Runtime Environment (build 1.8.0_251-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.251-b08, mixed mode)
2.3 启动jenkins
# 使用nohup命令启动
$ nohup java -jar /data/software/jenkins.war --httpPort=8777 --httpsPort=8778 > /data/software/jenkins.log 2>&1 &
2.4 开放8777端口供外网访问
# 开启防火墙8777端口
$ firewall-cmd --zone=public --add-port=8777/tcp --permanent
# 使配置生效
$ firewall-cmd --reload
# 防火墙扩展命令如下(云服务直接操作阿里云安全组即可)
(1)设置开机启用防火墙:systemctl enable firewalld.service
(2)设置开机禁用防火墙:systemctl disable firewalld.service
(3)启动防火墙:systemctl start firewalld
(4)关闭防火墙:systemctl stop firewalld
(5)检查防火墙状态:systemctl status firewalld
(1)查看防火墙状态:firewall-cmd --state
(2)重新加载配置:firewall-cmd --reload
(3)查看开放的端口:firewall-cmd --list-ports
(4)开启防火墙端口:firewall-cmd --zone=public --add-port=9200/tcp --permanent
命令含义:
–zone #作用域
–add-port=9200/tcp #添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效
注意:添加端口后,必须用命令firewall-cmd --reload重新加载一遍才会生效
(5)关闭防火墙端口:firewall-cmd --zone=public --remove-port=9200/tcp --permanent
2.5 外网或宿主机访问浏览器地址
- 查看本机ip
yuyang@ubuntu:~$ ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.195 netmask 255.255.255.0 broadcast 192.168.1.255
- 浏览器访问ip
2.6 忘记密码
- 进入到jenkins的工作目录,找到config.xml,我这里是/home/jenkins/.jenkins/config.xml
- 修改该配置文件useSecurity的节点值为false
<useSecurity>true</useSecurity>
- 重启jenkins项目后,再次访问jenkins站点
- 进入系统管理
- 找到全局安全配置
- 进入到用户列表,找到admin用户
3. 常用插件安装
3.1 换源
jenkins的所有插件安装后需要重启才能生效,由于Jenkins国外官方插件地址下载速度非常慢,所以可以修改为国内插件地址(清华大学源):
2个步骤
-
1、进入
Manage Jenkins -》 Manage Plugin -> Advanced
最下面有Update Site
设置为:
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
-
2、修改服务器配置,进入jenkins安装目录 ,找到 /updates/default.json文件 (我这里是
/home/jenkins/.jenkins/updates/default.json
),将其中的updates.jenkins-ci.org/download
替换为mirrors.tuna.tsinghua.edu.cn/jenkins
,然后把www.google.com
修改为www.baidu.com
-
3、进入到
default.json
所在目录
yuyang@ubuntu:~$ cd /home/yuyang/.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
替换后使用http://192.168.1.195:8777/restart
重启jenkins,或查进程重启
yuyang@ubuntu:~$ ps -ef | grep jenkins
yuyang 6409 4175 7 20:16 pts/1 00:02:24 java -jar /data/software/jenkins.war --httpPort=8777 --httpsPort=8778
yuyang 16281 16197 0 20:48 pts/0 00:00:00 grep --color=auto jenkins
(base) yuyang@ubuntu:~$ kill -9 6409
3.2 安装插件换皮肤
-1、simple theme好看的主题插件
有了好的主题,写代码都变得神清气爽。首先安装插件simple theme
,安装主题并重新启动Jenkins。转到ManageJenkins–> Manage Plugins
。单击available选项卡并搜索simple theme插件。
使用在线CSS样式
将打开后的内容,拷贝至主题配置中。系统配置 -> Theme
,转到Manage Jenkins–> Configure
并搜索Theme
配置,然后点击新增:
- CSS URL:在CSS字段中输入以下URL并保存,可以查看到效果(如果断网样式会失效)
http://afonsof.com/jenkins-material-theme/dist/material-teal.css
使用离线CSS样式
- Extra CSS:在文本框内贴上CSS样式,在浏览器中打开上述样式的链接,并复制内容到文本框内一样能看到效果,而这种方式更加推荐,适用于没有网络的环境。
3.3 安装Allure插件
其他插件介绍:
1、Git Parameter Plug-In
, 安装后可以选择按照 git tag
或者 branch
发布版本。
2、NodeJS Plugin
安装后可以执行npm
指令,打包和发布前端代码。
3、SonarQube Scanner for Jenkins
安装后可以执行 sonar scanner
指令,跑 CI 时检查代码质量。
4、Maven Integration plugin
设置maven
指令的 classpath 和指令路径。
5、Workspace Cleanup Plugin
可以指定 workspace
最多保留多少个历史任务。
6、Credentials Binding
用户凭证插件安装
4. 基础配置
4.1 jenkins配置JDK路径
Jenkins->系统管理->全局工具配置->JDK->新增JDK
JAVA_HOME的路径与/etc/profile或 .bashrc中的配置一致
4.2 Jenkins配置凭证
凭据就是用来存储需要密文保护的数据库密码、Gitlab密码信息、Docker私有仓库密码等,以便 Jenkins可以和这些第三方的应用进行交互。
- 1、凭证插件安装
Credentials Binding
该插件默认在一开始就会被安装,安装后在jenkins->系统管理->安全
栏目会出现Manage Credentials选项,若没有需要安装插件并重启。
-
2、凭证类型
Username with password
常用:用户名和密码GitHub APP
新加入SSH Username with private key
常用: 使用SSH用户和密钥Secret file
:需要保密的文本文件,使用时Jenkins会将文件复制到一个临时目录中,再将文件路径 设置到一个变量中,等构建结束后,所复制的Secret file就会被删除。Secret text
:需要保存的一个加密的文本串,如钉钉机器人或Github的api tokenCertificate
:通过上传证书文件的方式
接下来以使用Git工具到Gitlab拉取项目源码为例,演示Jenkins的如何管理Gitlab的凭证。
-
Username with password类型
-
SSH Username with private key
4.3 Jenkins集成Git
为了jenkins能够拉取代码,需要安装Git环境和jenkins对应的Git插件
- 1、CentOS 7上安装Git环境
# 安装
$ yum install git -y
# 查看版本
$ git --version
-
2、
jenkins
安装Git
插件
-
3、jenkins配置Git环境
此处无需在jenkins中配置Git环境,采用默认生成的即可
-
4、Gitee码云对接
Jenkins->系统管理->系统->全局凭证->添加凭证
-
Gitee上任意建一个仓库
-
测试凭据是否能够使用
jenkins->新建任务->自由风格项目
到此用户名密码方式的凭证已经打通Git
4.4 Jenkins 集成Maven
在jenkins上发布Java项目时需要使用Maven来进行构建打包(Gradle项目则需要安装配置Gradle)
- 1、下载安装
# 切换到root用户
$ su root
Password:
# 找一个目录存放maven,此处和java jdk放置在同一个文件夹下,方便管理
$ cd /usr/java/
# 从阿里云上下载maven安装包
$ wget https://mirrors.aliyun.com/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
# 解压
$ tar -zxvf apache-maven-3.6.3-bin.tar.gz
# 当前maven的安装目录为:/usr/java/apache-maven-3.6.3
- 2、环境配置
vi .bashrc
#配置Maven环境变量
export MAVEN_HOME=/usr/java/apache-maven-3.6.3
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$MAVEN_HOME/bin:$PATH
- 3、使配置生效并查看安装情况
yuyang@ubuntu:~$ source .bashrc
yuyang@ubuntu:~$ mvn -version
- 4、
jenkins
配置Maven
5.Jenkins 构建项目
5.1 本地项目构建
ubuntu(虚拟机)本地脚本路径//home/yuyang/Downloads/jenkinstest.py
from selenium import webdriver
print("我是Jenkins本地构建项目!")
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
driver.quit()
print("百度浏览器已经打开~")
- 1、创造一个自由风格的项目
- 2、设置构建类别
由于是在linux下构建,所以选择执行shell,windos操作同理
- 3、设置执行shell
- 4、执行构建
保存后在jenkins本地test
工程里点击立即构建
- 5、查看控制台输出是否正确
查看控制台输出
到此本地项目运行成功。
5.2 远端项目构建
- 1、基于4.3中的码云仓库工程,添加一个
jenkins_test.py文件
print("Hellow Jenkins!")
print("我是Gitee项目!")
- 2、设置构建类别、执行shell、构建、控制台输出