持续集成、持续部署的工具很多,其中Jenkins是一个开源的持续集成平台。
Jenkins涉及到将编写完毕的代码发布到测试环境和生产环境的任务,并且还涉及到了构建项目等任务。
Jenkins需要大量的插件保证工作,安装成本较高,下面会基于Docker搭建Jenkins。
5.1 Jenkins介绍
Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具
Jenkins应用广泛,大多数互联网公司都采用Jenkins配合GitLab、Docker、K8s作为实现DevOps的核心工具。
Jenkins最强大的就在于插件,Jenkins官方提供了大量的插件库,来自动化CI/CD过程中的各种琐碎功能。
Jenkins |
---|
![]() |
Jenkins最主要的工作就是将GitLab上可以构建的工程代码拉取并且进行构建,再根据流程可以选择发布到测试环境或是生产环境。
一般是GitLab上的代码经过大量的测试后,确定发行版本,再发布到生产环境。
CI/CD可以理解为:
- CI过程即是通过Jenkins将代码拉取、构建、制作镜像交给测试人员测试。
- 持续集成:让软件代码可以持续的集成到主干上,并自动构建和测试。
- CD过程即是通过Jenkins将打好标签的发行版本代码拉取、构建、制作镜像交给运维人员部署。
- 持续交付:让经过持续集成的代码可以进行手动部署。
- 持续部署:让可以持续交付的代码随时随地的自动化部署。
CI、CD |
---|
![]() |
5.2 Jenkins安装
- 拉取Jenkins镜像
docker pull jenkins/jenkins
- 编写docker-compose.yml
version: "3.1"
services:
jenkins:
image: jenkins/jenkins
container_name: jenkins
ports:
- 8080:8080
- 50000:50000
volumes:
- ./data/:/var/jenkins_home/
docker-compose up -d
- 首次启动会因为数据卷data目录没有权限导致启动失败,设置data目录写权限
docker logs -f jenkins
错误日志 |
---|
![]() |
chmod -R a+w data/
- 重新启动Jenkins容器后,由于Jenkins需要下载大量内容,但是由于默认下载地址下载速度较慢,需要重新设置下载地址为国内镜像站
vim /usr/local/docker/jenkins_docker/data/hudson.model.UpdateCenter.xml
# 修改数据卷中的hudson.model.UpdateCenter.xml文件
<?xml version='1.1' encoding='UTF-8'?>
<sites>
<site>
<id>default</id>
<url>https://updates.jenkins.io/update-center.json</url>
</site>
</sites>
# 将下载地址替换为http://mirror.esuni.jp/jenkins/updates/update-center.json
<?xml version='1.1' encoding='UTF-8'?>
<sites>
<site>
<id>default</id>
<url>http://mirror.esuni.jp/jenkins/updates/update-center.json</url>
</site>
</sites>
# 清华大学的插件源也可以https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
- 再次重启Jenkins容器,访问Jenkins(需要稍微等会)
docker restart jenkins
Jenkins首页 |
---|
![]() |
-
查看密码登录Jenkins,并登录下载插件
docker exec -it jenkins cat /var/jenkins_home/secrets/initialAdminPassword
登录并下载插件 -
选择需要安装的插件
选择需要安装的插件 -
下载完毕设置信息进入首页(可能会出现下载失败的插件)
注册用户 -
继续下载失败的插件
插件管理
Git Parameter
Publish Over SSH
5.3 Jenkins入门配置
由于Jenkins需要从Git拉取代码、需要本地构建、甚至需要直接发布自定义镜像到Docker仓库,所以Jenkins需要配置大量内容。
5.3.1 构建任务
准备好GitLab仓库中的项目,并且通过Jenkins配置项目的实现当前项目的DevOps基本流程。
-
构建Maven工程发布到GitLab(Gitee、Github均可)
GitLab查看项目 -
Jenkins点击左侧导航新建任务
新建任务 -
选择自由风格构建任务
构建任务
5.3.1 配置源码拉取地址
Jenkins需要将Git上存放的源码存储到Jenkins服务所在磁盘的本地
-
配置任务源码拉取的地址
源码管理 -
Jenkins立即构建
点击任务test中的立即构建 -
查看构建工程的日志,点击上述③的任务条即可
查看任务拉取Git源码日志 可以看到源码已经拉取带Jenkins本地,可以根据第三行日志信息,查看Jenkins本地拉取到的源码。
-
查看Jenkins容器中/var/jenkins_home/workspace/test的源码
源码存放位置
5.3.2 配置Maven构建代码
代码拉取到Jenkins本地后,需要在Jenkins中对代码进行构建,这里需要Maven的环境,而Maven需要Java的环境,接下来需要在Jenkins中安装JDK和Maven,并且配置到Jenkins服务。
-
准备JDK、Maven压缩包通过数据卷映射到Jenkins容器内部
数据卷存放位置 -
解压压缩包,并配置Maven的settings.xml
<!-- 阿里云镜像地址 --> <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror> <!-- JDK1.8编译插件 --> <profile> <id>jdk-1.8</id> <activation> <activeByDefault>true</activeByDefault> <jdk>1.8</jdk> </activation> <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion> </properties> </profile>
-
Jenkins配置JDK&Maven并保存
-
配置Jenkins任务构建代码
配置Maven构建代码 -
立即构建测试,查看target下的jar包
构建源码
5.3.3 配置Publish发布&远程操作
jar包构建好之后,就可以根据情况发布到测试或生产环境,这里需要用到之前下载好的插件Publish Over SSH。
-
配置Publish Over SSH连接测试、生产环境
Publish Over SSH配置 -
配置任务的构建后操作,发布jar包到目标服务
配置构建后操作 -
立即构建任务,并去目标服务查看
立即构建
网友评论