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://jenkins.io/zh/

官网下载链接:https://jenkins.io/zh/download/

相关软件百度云地址

链接: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/

 

 点击上载

 安装完成重启

 解决插件下载慢

 管理用户

 

 全局安全配置运行用户注册

 管理用户-创建用户

 

 

 

 部署自由风格项目

 

 

 部署自由风格工作流程步骤

  1. general,项目的描述信息,和基本的一些参数

  2. 源码管理,如何管理你的代码,从哪拉取,如何配置凭据。

  3. 构建触发器,你的项目如何运行?

    1. 执行一次

    2. 轮循执行

    3. 每一周,每一天,每一个月

  4. 构建环境,选择你的项目构建环境是,如ant

  5. 构建,如何执行你的项目,如何运行你的代码

    1. 执行shell

    2. Windows 终端

    3. .....

  6. 构建后的操作,当项目构建完毕后,要做什么事情

    1. 生成相关报告

    2. 发送相关的邮件

保存

 凭据设置

 全局凭据配置

 

 

 

 修改凭据

 配置私钥

 

 

 构建触发器轮询

每天上午八点半执行一次

 初次构建

 立即构建

 控制台输出

 

 

 可以看到代码已经拉下来了

 查看所有的镜像

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

原文地址:https://www.cnblogs.com/zhang-da/p/12306265.html