Jenkins持续集成
由于Jenkins基于Java开发,所以,Jenkins的运行依赖Java JRE(java runtime environment)环境。所以,我们要想使用Jenkins,必须:
- 机器要求
- 256MB内存,建议大于512MB
- 10GB的硬盘空间(用于Jenkins和docker镜像)
- 需要安装
- Java 8及以上版本。
- Docker
Java JDK的安装
各平台安装Java JDK:https://www.cnblogs.com/Neeo/articles/11954283.html
Jenkins下载地址
相关软件百度云地址
链接:https://pan.baidu.com/s/1KVGiuH5-diz8OK11C--CFA 提取码:0ek2
for windows
下载
- 下载到本地是一个
msi
文件,点击它。
- 选择安装目录,继续点击下一步。
- 点击安装。
- 安装完成。
入门
当安装完成,会自动的打开浏览器,进入解锁Jenkins页面。按照提示,去本地找密码,然后粘贴到输入框中,点击继续。
选择推荐的插件下载即可。
在漫长的等待过程中,可能会发生各种意外, 但请记住一点:如果发生意外,请间歇性的刷新浏览器,很可能就......好了.....好不了,喝杯咖啡考虑一下人生回来....继续刷新.....,我反正两次插件安装失败,我都是刷新解决的........
如果遇到有的插件安装失败,就点击重试....
创建管理员用户
配置实例
根据需要配置ip地址,如果你的是远程服务器的,就配个公网的ip或者绑定域名也行;本地的话,就直接localhost吧。
访问主页:
现在,Jenkins算是安装成功。
for Mac
--待填充
for Linux
这里我们选择安装docker版的Jenkins。
请以管理员权限进行后续的操作
环境是阿里云centos7
安装docker
可选的操作:查看内核版本
目前,CentOS 仅发行版本中的内核支持 Docker。
Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。
Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内核版本为 2.6.32-431 或者更高版本。
uname -a
# 示例
[root@localhost ~]# uname -a
Linux localhost 3.10.0-514.el7.x86_64 #1 SMP Tue Nov 22 16:42:41 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
更新yum源
[root@localhost ~]# yum update -y
可选的操作:卸载旧版的docker
yum remove docker docker-common docker-selinux docker-engine
安装依赖包
yum-util
提供yum-config-manager
功能,另外两个是devicemapper
驱动依赖的。
yum install -y yum-utils device-mapper-persistent-data lvm2
# 示例
[root@localhost ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 示例
[root@bogon ~]# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
已加载插件:fastestmirror
adding repo from: https://download.docker.com/linux/centos/docker-ce.repo
grabbing file https://download.docker.com/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
repo saved to /etc/yum.repos.d/docker-ce.repo
查询及安装docker
yum list docker-ce --showduplicates | sort -r
# 示例
[root@bogon ~]# yum list docker-ce --showduplicates | sort -r
Loading mirror speeds from cached hostfile
Loaded plugins: fastestmirror
docker-ce.x86_64 3:19.03.5-3.el7 docker-ce-stable
docker-ce.x86_64 3:19.03.4-3.el7 docker-ce-stable
docker-ce.x86_64 3:19.03.3-3.el7 docker-ce-stable
docker-ce.x86_64 3:19.03.2-3.el7 docker-ce-stable
docker-ce.x86_64 3:19.03.1-3.el7 docker-ce-stable
在版本列表中,选择合适的版本下载即可。
yum install docker-ce-17.12.1.ce -y
# 示例
[root@bogon ~]# yum install docker-ce-17.12.1.ce -y
检查是否安装成功
docker version
# 示例
[root@bogon ~]# docker version
Client:
Version: 17.12.1-ce
API version: 1.35
Go version: go1.9.4
Git commit: 7390fc6
Built: Tue Feb 27 22:15:20 2018
OS/Arch: linux/amd64
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
启动docker并加入开机启动
systemctl start docker # 启动
systemctl enable docker # 加入开机启动
ps -ef | grep docker # 查看docker是否启动
扩展
docker 常用命令 https://www.cnblogs.com/Neeo/articles/11945932.html
安装Jenkins
上面的docker环境配置好之后,我们再来配置docker版本的Jenkins。
选择docker版本的Jenkins
打开官网的下载页面,选择长期支持版本。
在新的页面中,选择LTS版本的安装命令。
也就是复制docker pull jenkins/jenkins:lts
这个命令并且centos中去执行该命令。
docker pull jenkins/jenkins:lts
# 示例
[root@bogon ~]# docker pull jenkins/jenkins:lts
lts: Pulling from jenkins/jenkins
9a0b0ce99936: Pull complete
db3b6004c61a: Pull complete
f8f075920295: Pull complete
6ef14aff1139: Pull complete
962785d3b7f9: Pull complete
631589572f9b: Pull complete
c55a0c6f4c7b: Pull complete
4e96cf3bdc20: Pull complete
e0b44ce6ec69: Pull complete
d961082c76f4: Pull complete
5a229d171c71: Pull complete
64514e4513d4: Pull complete
6797bb506402: Pull complete
b8d0a307156c: Pull complete
b17b306b4a0a: Pull complete
e47bd954be8f: Pull complete
b2d9d6b1cd91: Pull complete
fa537a81cda1: Pull complete
Digest: sha256:64576b8bd0a7f5c8ca275f4926224c29e7aa3f3167923644ec1243cd23d611f3
Status: Downloaded newer image for jenkins/jenkins:lts
PS:下载速度稍慢.......
下载完毕后,我们来使用下面命令看一下是否下载成功。
[root@bogon ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
jenkins/jenkins lts 22b8b9a84dbe 6 days ago 568MB
[root@bogon ~]#
启动Jenkins
docker run -d -p 80:8080 -p 50000:50000 -v jenkins:/var/jenkins_home -v /etc/localtime:/etc/localtime --name jenkins docker.io/jenkins/jenkins:lts
# 示例
[root@bogon ~]# docker run -d -p 80:8080 -p 50000:50000 -v jenkins:/var/jenkins_home -v /etc/localtime:/etc/localtime --name jenkins docker.io/jenkins/jenkins:lts
9f1d7ae974968f7465f98a7fbc25fc8f59cdebae561db33db7916fc68ee0f408
[root@bogon ~]#
各参数的意义:
-d
后台运行镜像。-p 80:8080
将镜像的8080
端口映射到服务器的80
端口。-p 50000:50000
将镜像的50000
端口映射到服务器的50000
端口。-v jenkins:/var/jenkins_home
,其/var/jenkins_home
为Jenkins的工作目录,我们将硬盘上的一个目录挂在到这个位置,方便后续更新镜像后继续使用原来的工作目录。-v /etc/localtime:/etc/localtime
让容器使用和服务器同样的时间设置。--name jenkins
给容器起一个别名。docker.io/jenkins/jenkins:lts
最后说的是docker拉去的是Jenkins的lts版本。
现在,让我们使用本机的浏览器去访问虚拟机的centos的ip。
由于咱们安装的是docker版的Jenkins,所以不能直接去这个位置去找密码(Windows版可以根据提示去上面那个位置去找密码)。那个路径不是服务器的路径,而是docker容器的路径,所以我们还需要使用docker命令去获取密码,让我们拷贝上面的那个路径。
docker exec jenkins tail /var/jenkins_home/secrets/initialAdminPassword
# 示例
[root@bogon ~]# docker exec jenkins tail /var/jenkins_home/secrets/initialAdminPassword
683a4afce37d44a780c287a131e9388b
上面那个683a4afce37d44a780c287a131e9388b
字符串就密码,填到之前页面的输入框中。
注意,在输入密码后会进入新手操作阶段,下插件啥的,如果这个过程遇到失败等问题,会需要你重新输入这个密码,所以请记住它
经过上面的种种操作,我们终于进入到了新手入门阶段,首先映入眼帘的是安装Jenkins插件,如无特殊需求,我们选择安装推荐的插件即可。
漫长的等待......
在漫长的等待过程中,可能会发生各种意外, 但请记住一点:如果发生意外,请间歇性的刷新浏览器,很可能就......好了.....好不了,喝杯咖啡考虑一下人生回来....继续刷新.....,我反正两次插件安装失败,我都是刷新解决的........
如果遇到有的插件安装失败,就点击重试....
创建管理员用户
当上面的插件安装完毕后,会进入到创建管理员用户界面。
各项填写完毕,选择保存并完成
。
配置实例
根据需要配置ip地址,如果你的是远程服务器的,就配个公网的ip或者绑定域名也行;本地的话,就直接localhost
吧。
现在,Jenkins算是安装成功。
进入你的工作台。
More
如果遇到docker下载特别慢的情况。怎么办。
vmware中的centos7
- 编辑docker配置文件
[root@bogon ~]# vi /lib/systemd/system/docker.service
- 将
ExecStart
值更改为阿里云。
# ExecStart=/usr/bin/dockerd
ExecStart=/usr/bin/dockerd --registry-mirror=https://u1qbyfsc.mir
ror.aliyuncs.com
这样的话,docker再去拉去镜像就会快很多。
放开防火墙端口号
vmware中的centos7
如果是虚拟机或者远程服务器,有可能造成防火墙没有放开端口号,导致我们远程连接Jenkins失败,来看解决办法。
firewall-cmd --list-ports # 查看一下当前开放的端口
# 如果该命令提示
[root@bogon ~]# firewall-cmd --list-ports
FirewallD is not running
# 那么启动它
[root@bogon ~]# systemctl start firewalld # 启动
[root@bogon ~]# firewall-cmd --list-ports # 然后重新执行
终端启动Jenkins
在Windows平台下,Jenkins并没有创建什么快捷方式。而是需要通过命令行来启动。
注意,终端必须是管理员权限的
net start jenkins # 开启服务
net stop jenkins # 停止服务
然后浏览器访问:
http://localhost:8080
修改端口
环境是:Windows
可能8080
这个端口容易被占用,所以我们去jenkins
安装目录下找到一个叫jenkins.xml
的文件,修改你想要的端口即可。
在安装插件时报错:无法连接到Jenkins
环境是:阿里云centos7
这个问题很奇妙!我的环境是阿里云服务器,检查了Jenkins是否开启,是否可以ping通网络等等,都没啥问题。
最后的解决办法是刷新浏览器!不能行就多试几次!!我也不知道为啥突然好了.....
在安装插件时出现:No such plugin: cloudbees-folder
环境是:Windows
这个问题也很奇妙!但此时我的环境是win10企业版,检查了Jenkins是否开启,是否可以ping通网络等等,都没啥问题。
最后的解决办法是刷新浏览器!不能行就多试几次!!我也不知道为啥突然好了.....貌似我还改了一下端口(然后重启了Jenkins),但这并没有啥影响吧。
查看Jenkins进程命令ps aux |grep jenkins
下载Jenkins镜像docker pull jenkinsci/blueocean:latest
查看Jenkins镜像信息docker images |grep jenkins
启动Jenkins
docker run \
-u root \
--name s267 \
--restart=always \
-d \
-p 6010:8080 \
-p 50000:50000 \
--env JAVA_OPTS="-Xmx512m" \
-e JAVA_OPTS=-Duser.timezone=Asia/Shanghai \
-v /etc/localtime:/etc/localtime \
-v /tmp/jenkins_home:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
jenkinsci/blueocean:latest
查看最新40条日志信息docker logs -t -f --tail 40 s267
浏览器访问
http://192.168.1.103:6010/login?from=%2F
# 查看密码,仅除此使用
[root@r ~]# docker logs -t -f --tail 40 s267
# 查看密码,推荐
[root@r ~]# docker exec -it -u root s267 bash
bash-4.4# cat /var/jenkins_home/secrets/initialAdminPassword
a02074d95cd94b2891d241d350a00293
新建item任务
save保存
点击主页
点击manage jenkins
点击manage plugins
更新插件、可选插件、已安装插件、高级
下载allure插件
前台重启Jenkins:http://47.52.72.214:6010/restart
docker重启Jenkins:docker restart s267
卸载插件
手动下载插件并手动上传插件
https://updates.jenkins.io/download/plugins/allure-jenkins-plugin/
点击上载
安装完成重启
解决插件下载慢
管理用户
全局安全配置运行用户注册
管理用户-创建用户
部署自由风格项目
部署自由风格工作流程步骤
-
-
源码管理,如何管理你的代码,从哪拉取,如何配置凭据。
-
构建触发器,你的项目如何运行?
-
执行一次
-
轮循执行
-
每一周,每一天,每一个月
-
-
构建环境,选择你的项目构建环境是,如ant
-
构建,如何执行你的项目,如何运行你的代码
-
执行shell
-
Windows 终端
-
.....
-
-
构建后的操作,当项目构建完毕后,要做什么事情
-
生成相关报告
-
发送相关的邮件
-
保存
凭据设置
全局凭据配置
修改凭据
配置私钥
构建触发器轮询
每天上午八点半执行一次
初次构建
立即构建
控制台输出
可以看到代码已经拉下来了
查看所有的镜像
docker images
查看镜像的镜像基础
cat /etc/issue
查看新建的镜像基础信息
进入新的容器的内部空间
docker exec -it tmp bash
列出所有的包apk info
列出包的情况信息 apk info musl
安装vim:apk add vim
搜索vim的源apk search vim
删除vim:apk del vim
更新源apk update -y
安装python并指定版本:apk add python3=3.6.9-r2
查看python版本python3 -V
查看Java和git版本信息
全局工具配置-新增JDK
查看环境变量echo $PATH
模糊查找git:ls /usr/bin/git*
Allure Commandline
配置执行命令
pip3 install -i https://pypi.doubanio.com/simple -r /var/jenkins_home/workspace/at1/requirements.txt
python3 /var/jenkins_home/workspace/at1/start.py
解决依赖apk add gcc
apk add build-base
升级pip:pip3 install --upgrade pip
立即构建
控制台输出
配置生成allure报告的命令
参数化构建过程-文本参数
构建后的操作
参数化运行
配置邮箱-系统配置
构建后操作发邮件
邮箱高级操作
项目里面配置成高级设置
开始构建
打包镜像
docker commit --author zhangda --message "一个基于jenkinsci/blueocean:latest的jenkins镜像,配置好了python环境,allure插件" s267 s267_jenkins:1.0
再save
docker save -o s267_jenkins:1.0 s267_jenkins:1.0
拉取镜像并启动jenkins
docker pull wangzhangkai/jenkins:1.0
docker run \
-u root \
--name myjenkins \
--restart=always \
-d \
-p 6010:8080 \
-p 50000:50000 \
--env JAVA_OPTS="-Xmx1024m" \
-e JAVA_OPTS=-Duser.timezone=Asia/Shanghai \
-v /etc/localtime:/etc/localtime \
-v /tmp/jenkins_home:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
wangzhangkai/jenkins:1.0
查看所有的镜像docker images
docker container ls -a 查看所有运行过的镜像
docker container ls 查看当前正在运行的镜像
把封包的镜像导入到centos7根目录下
重命名文件
使用load
导入到docker中
查看镜像信息
docker images | grep temp
启动镜像
docker run \
-u root \
--name myjenkins \
--restart=always \
-d \
-p 6004:8080 \
-p 50000:50000 \
--env JAVA_OPTS="-Xmx1024m" \
-e JAVA_OPTS=-Duser.timezone=Asia/Shanghai \
-v /etc/localtime:/etc/localtime \
-v /docker_data/jenkins_home:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
s267_jenkins:1.0
宿主机无法访问CentOS7上Jenkins服务的解决办法:
在本地机器上使用VM创建了一个CentOS7的linux服务器,安装好jenkins后在服务器上可以通过IP+端口的方式访问jenkins管理页面
在宿主机上进行访问时受阻
首先看下宿主机和VM网络是否互通
修改VM的网络方式为NAT模式
禁用虚拟机上的防火墙
相关命令
停止防火墙
systemctl stop firewalld.service
禁止开机启动
systemctl disable firewalld.service