Jenkins
Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。
功能
Jenkins功能包括:
1、持续的软件版本发布/测试项目。
2、监控外部调用执行的工作。
启动
首先保证系统中已经安装了jdk,最好是jdk1.5以上。
第一种启动方法,切换到jenkins.war存放的目录,输入如下命令:
$ java -jar jenkins.war
如果需要修改端口可以使用如下命令:
$ java -jar jenkins.jar--httpPort=8081
然后在浏览器中(推荐用火狐)输入localhost:8081,localhost可以是本机的ip,也可以是计算机名。就可以打开jenkins。
第二种方法是用tomcat打开
解压tomcat到某个目录,如/usr/local,进入tomcat下的/bin目录,启动tomcat
将jenkins.war文件放入tomcat下的webapps目录下,启动tomcat时,会自动在webapps目录下建立jenkins目录,在地址栏上需要输入localhost:8080/jenkins。
环境准备
IP | 版本 | 内存 |
---|---|---|
192.168.1.40 | CentOS Linux release 7.6.1810 (Core) | 4G |
安装JAVA环境
[root@localhost ~]# tar -zxf jdk-8u201-linux-x64.tar.gz
[root@localhost ~]# mv jdk1.8.0_201/ /usr/local/java
[root@localhost ~]# vim /etc/profile
export JAVA_HOME=/usr/local/java
export JRE_HOME=/usr/local/java/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
[root@localhost ~]# rm -rf /usr/bin/java
[root@localhost ~]# source /etc/profile
[root@localhost ~]# 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)
安装Jenkins
[root@localhost ~]# cd /etc/yum.repos.d
[root@localhost yum.repos.d]# wget https://pkg.jenkins.io/redhat-stable/jenkins.repo
[root@localhost ~]# rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
[root@localhost ~]# yum install jenkins
[root@localhost ~]# systemctl start jenkins
报错解决
[root@localhost ~]# systemctl status jenkins.service
● jenkins.service - LSB: Jenkins Automation Server
Loaded: loaded (/etc/rc.d/init.d/jenkins; bad; vendor preset: disabled)
Active: failed (Result: exit-code) since 五 2020-11-27 14:34:54 CST; 6s ago
Docs: man:systemd-sysv-generator(8)
Process: 22427 ExecStart=/etc/rc.d/init.d/jenkins start (code=exited, status=1/FAILURE)
11月 27 14:34:54 localhost.localdomain systemd[1]: Starting LSB: Jenkins Automation Server...
11月 27 14:34:54 localhost.localdomain runuser[22432]: pam_unix(runuser:session): session opened for user jenkins by (
11月 27 14:34:54 localhost.localdomain jenkins[22427]: Starting Jenkins bash: /usr/bin/java: 没有那个文件或目录
11月 27 14:34:54 localhost.localdomain runuser[22432]: pam_unix(runuser:session): session closed for user jenkins
11月 27 14:34:54 localhost.localdomain jenkins[22427]: [失败]
11月 27 14:34:54 localhost.localdomain systemd[1]: jenkins.service: control process exited, code=exited status=1
11月 27 14:34:54 localhost.localdomain systemd[1]: Failed to start LSB: Jenkins Automation Server.
11月 27 14:34:54 localhost.localdomain systemd[1]: Unit jenkins.service entered failed state.
11月 27 14:34:54 localhost.localdomain systemd[1]: jenkins.service failed.
方法一:修改配置jenkins文件
[root@localhost ~]# vi /etc/init.d/jenkins
79 /usr/lib/jvm/jre-1.7.0/bin/java
80 /usr/lib/jvm/java-11.0/bin/java
81 /usr/lib/jvm/jre-11.0/bin/java
82 /usr/lib/jvm/java-11-openjdk-amd64
83 /usr/local/java/bin/java
84 /usr/bin/java
#83行 加入本机jdk的位置,注意:指定到 bin目录的java层 ,后执行以下命令使配置生效,并启动jenkins
systemctl daemon-reload
systemctl start jenkins # 启动
方法二:建立软连接
ln -s /usr/local/java/bin/java /usr/bin/java
关闭防火墙、沙盒
systemctl stop firewalld
setsenforce 0
访问
http://192.168.1.40:8080
[root@localhost ~]# cat /var/lib/jenkins/secrets/initialAdminPassword
a988dc3f30584130ab60a5e241ec9995
等待插件安装
jenkins加速下载
安装加速神奇,Jenkins默认使用google来搜索插件的下载,而且插件也在国外网站,这里将updates目录中的default.json内的url换为百度(搜索引擎)和清华(下载插件地址),前提必须出现过以上界面才会有updates目录
cd /var/lib/jenkins/updates/
sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json
sed -i 's/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json
然后重启服务,并重新访问Jenkins的web界面
systemctl restart jenkins
安装完成后,创建管理用户
默认继续
配置jenkins全局工具
注: 尽量不自动安装
安装maven、git 、aliyun镜像
[root@localhost ~]# tar -zxf apache-maven-3.6.0-bin.tar.gz
[root@localhost ~]# mv apache-maven-3.6.0 /usr/local/maven
[root@localhost ~]# echo 'export PATH=$PATH:/usr/local/maven/bin' >> /etc/profile
[root@localhost ~]# source /etc/profile
[root@localhost ~]# mvn -v
Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-25T02:41:47+08:00)
Maven home: /usr/local/maven
Java version: 1.8.0_201, vendor: Oracle Corporation, runtime: /usr/local/java/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-957.el7.x86_64", arch: "amd64", family: "unix"
[root@localhost ~]# find / -type f -name settings.xml
/usr/local/maven/conf/settings.xml
[root@localhost ~]# vim /usr/local/maven/conf/settings.xml #配置阿里云镜像
157 </mirror>
158 -->
159 <mirror>
160 <id>aliyun maven</id>
161 <name>aliyun</name>
162 <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
163 <mirrorOf>central</mirrorOf>
164 </mirror>
165 </mirrors>
166
Jenkins的插件管理
安装好jenkins,什么也干不了,jenkins相当于一个平台,安装什么样的插件,实现什么样的功能,功能的实现依赖于插件
插件的安装
一般不会卸载,插件不会占用过多的空间。
第一种安装方式
想要插件安装后生效,需要重启
查看插件是否安装
插件安装前后是不同的
第二种方式(网站)
搜索区分大小写
很多版本,直接点击,便保存
用户管理
这里可以修改密码。
新建用户usera
新建用户userb
点击安全矩阵,出现权限的管理
全局权限管理——查看
如果把usera设置成administer,那么administer便是普通用户
Credentials凭证,如:jenkis拉去代码时,如果代码的仓库是私有的,需要验证,便称之为凭证
SCM 给代码打标签
查看项目权限管理——查看
针对于项目的权限管理,不是很好,缺点:权限的细分
权限的管理分为两部分:
1 用户的权限管理
2 项目的权限管理
基于角色的权限管理
下载插件
出现下图的东西
创建任务
任务的首页
回到首页
执行
新建任务
新建任务
执行
创建角色
给予权限
分配角色
登录Usera用户
登录userb用户
添加项目的角色
给予项目的权限
分配角色
此时usera对web-A web-B有读、配置、构建的权限
Test是读的权限
登录usera
查看项目test-A
查看项目web-A
查看项目web-B
新建任务(admin用户)
源码管理
https://github.com/gjjcommon/game-of-life
构建触发器
类似crontab
H:避免任务执行失败
Pre steps build post steps 是一个整体
Build是核心
Post steps后的操作称为 构建后操作
运行game-of-life
Started by user Admin 这一次构建是谁触发的
Jenkins里的执行指令,jenkins都会形成一个临时的脚本
Jenkins主目录/工作目录
所有都是项目的根目录
targert编译输出的结果
每个分支完成特定的功能 deploy负责部署 web 负责web显示 core负责核心代码
Build负责构建 test负责测试
配置邮件
点击advanced
邮件通知
配置
填写收件人的邮箱
发送的邮件是否需要构建日志作为附件发送过去(需要),点击advanced
Trigger——什么样的情况下给谁发
失败的情况下给谁发
Requestor触发本次操作的人
点击add trigger,编辑成功的情况下给谁发