基于 Docker 与 Jenkins 实现自动化部署

2025-01-07 22:58:39 0点赞 1收藏 0评论

前言

重塑自动化部署新高度,Docker 携手 Jenkins,在华为云 Flexus X 云服务器的加持下,引领持续集成与部署的新纪元。Flexus X 以其卓越的性能、灵活的资源配置和高效的成本优化,为 Docker 容器化应用与 Jenkins 自动化流水线提供了理想的运行环境。无论是快速构建、测试还是部署,Flexus X 都能确保流程顺畅无阻,大幅提升软件开发与交付效率。立即拥抱华为云 828 企业上云节优惠,开启您的 Docker 与 Jenkins 自动化部署之旅,让软件创新更快一步!

链接直达华为云Flexus云服务器X实例

基于 Docker 与 Jenkins 实现自动化部署

 

Jenkins 介绍

Jenkins 是一个开源的持续集成和持续部署(CI/CD)工具,它基于 Java 开发,支持各种编程语言和平台。Jenkins 以其强大的功能和灵活性,在现代软件开发中扮演着重要角色。

Jenkins 应用广泛,大多数互联网公司都采用 Jenkins 配合 GitLab、Docker、K8s 作为实现 DevOps 的核心工具。

Jenkins 最强大的就在于插件,Jenkins 官方提供了大量的插件库,来自动化 CI/CD 过程中的各种琐碎功能。

Jenkins 最主要的工作就是将 GitLab 上可以构建的工程代码拉取并且进行构建,再根据流程可以选择发布到测试环境或是生产环境。

Jenkins 需要大量的插件保证工作,安装成本较高,下面会基于 Docker 搭建 Jenkins。

基于 Docker 与 Jenkins 实现自动化部署

 

CI/CD 的理解

一般是 GitLab 上的代码经过大量的测试后,确定发行版本,再发布到生产环境。

CI/CD 可以理解为:

• CI 过程即是通过 Jenkins 将代码拉取、构建、制作镜像交给测试人员测试。

– 持续集成:让软件代码可以持续的集成到主干上,并自动构建和测试。

• CD 过程即是通过 Jenkins 将打好标签的发行版本代码拉取、构建、制作镜像交给运维人员部署。

– 持续交付:让经过持续集成的代码可以进行手动部署。

– 持续部署:让可以持续交付的代码随时随地的自动化部署。

基于 Docker 与 Jenkins 实现自动化部署

 

华为云 Flexus X 实例部署 Jenkins 的特点

灵活高效部署:华为云 FlexusX 结合 Docker,让 Jenkins 部署变得灵活且高效,资源动态调整,构建速度显著提升。

稳定安全运行:FlexusX 的稳定性和 Docker 的隔离性为 Jenkins 提供可靠运行环境,确保高负载下稳定运行,同时保障数据安全。

简化管理运维:一键部署与华为云统一管理界面,极大简化了 Jenkins 在 FlexusX 上的部署与管理流程,提升运维效率。

丰富插件支持:Jenkins 庞大的插件生态与 FlexusX 实例完美融合,满足多样化项目需求,为软件开发团队提供强大支持。

接下来让我们使用 docker,一起走进 Jenkins 的世界!

环境规划

部署流程

需要了解:

• 采用 docker 方式进行部署 Jenkins(CI/CD)工具

• 详细购买配置实例可参考文章: 快速部署华为云Flexus X实例,开启您的云端之旅

• 部署 docker 服务请参考文章:华为FlexusX与Docker+Nginx的高效整合之路

配置 jdk 环境

注意:选择适合自己的 JDK,并且注意安装 JDK 的系统

地址:https://www.oracle.com/java/technologies/downloads/

上传软件包 openjdk-12.0.2_linux-x64_bin.tar.gz 到实例中

[root@flexusx-251f ~]# mkdir /usr/local/java[root@flexusx-251f ~]# cd /usr/local/java/[root@flexusx-251f java]# lsopenjdk-12.0.2_linux-x64_bin.tar.gz

解压软件包

[root@flexusx-251f java]# tar -zxvf openjdk-12.0.2_linux-x64_bin.tar.gz

添加 java 环境变量,在文件最后添加

[root@flexusx-251f ~]# vim /etc/profile[root@flexusx-251f ~]# cat /etc/profile..........export JAVA_HOME=/usr/local/java/jdk-12.0.2export PATH=$JAVA_HOME/bin:$PATH#加载配置文件[root@flexusx-251f ~]# source /etc/profile

查看 java 版本

[root@flexusx-251f ~]# java -versionopenjdk version "12.0.2" 2019-07-16OpenJDK Runtime Environment (build 12.0.2+10)OpenJDK 64-Bit Server VM (build 12.0.2+10, mixed mode, sharing)

 

配置 Maven 环境

打开 Maven 官网下载对应软件包:Maven – Download Apache Maven

根据自身需求选择对应版本,在本实例中选择 v3.9.9

基于 Docker 与 Jenkins 实现自动化部署

 

上传软件包

[root@flexusx-251f ~]# mkdir -p /usr/local/maven[root@flexusx-251f ~]# cd /usr/local/maven/[root@flexusx-251f maven]# lsapache-maven-3.9.9-bin.tar.gz[root@flexusx-251f maven]# tar -zxvf apache-maven-3.9.9-bin.tar.gz[root@flexusx-251f maven]# lsapache-maven-3.9.9  apache-maven-3.9.9-bin.tar.gz[root@flexusx-251f maven]# cd apache-maven-3.9.9/[root@flexusx-251f apache-maven-3.9.9]# lsbin  boot  conf  lib  LICENSE  NOTICE  README.txt

解压完毕以后,新建一个 repository 仓库,用于存放 Maven 下载下来的 jar 包

[root@flexusx-251f maven]# mkdir repository

编辑 settings.xml 文件

设置 maven 仓库

[root@flexusx-251f maven]# cd apache-maven-3.9.9/[root@flexusx-251f apache-maven-3.9.9]# vim conf/settings.xml.....................49    55   /usr/local/maven/repository #设置镜像仓库地址...........

配置镜像,配置为阿里云镜像地址

.................................................                maven-default-http-blocker      external:http:*      Pseudo repository to mirror external repositories initially using HTTP.      http://0.0.0.0/      true      #修改为阿里云镜像地址          nexus-aliyun      central      Nexus aliyun      https://maven.aliyun.com/repository/public      ...................

配置环境变量

[root@flexusx-251f maven]# vim /etc/profile...#在文件最后加入两行参数信息 export MAVEN_HOME=/usr/local/maven/apache-maven-3.9.9export PATH=$PATH:$MAVEN_HOME/bin[root@flexusx-251f maven]# mvn -vApache Maven 3.9.9 (8e8579a9e76f7d015ee5ec7bfcdc97d260186937)Maven home: /usr/local/maven/apache-maven-3.9.9Java version: 12.0.2, vendor: Oracle Corporation, runtime: /java/jdk-12.0.2Default locale: en_US, platform encoding: UTF-8OS name: "linux", version: "5.10.0-182.0.0.95.r1941_123.hce2.x86_64", arch: "amd64", family: "unix"

搭建 Jenkins

创建对应目录,编写 docker-compose 文件

[root@flexusx-251f ~]# mkdir /jenkins[root@flexusx-251f ~]# cd /jenkins/[root@flexusx-251f jenkins]# mkdir data[root@flexusx-251f jenkins]# vim docker-compose.yaml[root@flexusx-251f jenkins]# cat docker-compose.yamlversion: "2.29.1"                  #指定 docker-compose 版本 services:    myjenkins:      image: jenkins/jenkins         #指定镜像名称    container_name: myjenkins      #指定容器名称    ports:        - "1020:8080"                #用于主机访问 Jenkins 的 Web 界面      - "1021:50000"               #用于 Jenkins 的代理(agent)连接    volumes:        - /jenkins/data/:/var/jenkins_home/                     #指定对应目录      - /usr/local/java/jdk-12.0.2:/usr/local/java            #挂载 java      - /usr/local/maven/apache-maven-3.9.9:/usr/local/maven  #挂载 maven    environment:        - JAVA_OPTS=-Dorg.apache.commons.jelly.tags.fmt.timeZone='Asia/Shanghai'   #指定时间    restart: always      [root@flexusx-251f jenkins]# docker-compose up -dWARN[0000] /jenkins/docker-compose.yaml: the attribute version is obsolete, it will be ignored, please remove it to avoid potential confusion[+] Running 2/2 ✔ Network jenkins_default  Created                                               0.0s ✔ Container jenkins        Started                                               0.2s[root@flexusx-251f jenkins]# docker-compose lsNAME                STATUS              CONFIG FILESjenkins             running(1)          /jenkins/docker-compose.yaml[root@flexusx-251f jenkins]# docker ps | grep jen8e2fba3b21aa   jenkins/jenkins                                                            "/usr/bin/tini -- /u…"   18 seconds ago      Up 17 seconds           0.0.0.0:1020->8080/tcp, :::1020->8080/tcp, 0.0.0.0:1021->50000/tcp, :::1021->50000/tcp           jenkins

初始化配置 Jenkins

Flexus X 实例 放行端口 1020,1021

基于 Docker 与 Jenkins 实现自动化部署

 

浏览器输入地址:http://主机 IP:1020

基于 Docker 与 Jenkins 实现自动化部署

 

查看密码的方式有两种,任选其一即可

#容器内[root@flexusx-251f jenkins]# cat /jenkins/data/secrets/initialAdminPassworddd426feefcb64fa5a45a6dd743f28787[root@flexusx-251f jenkins]# docker exec -it jenkins /bin/bashjenkins@8e2fba3b21aa:/$ cat /var/jenkins_home/secrets/initialAdminPassworddd426feefcb64fa5a45a6dd743f28787jenkins@8e2fba3b21aa:/$ exitexit#宿主机[root@flexusx-251f jenkins]# cat /jenkins/data/secrets/initialAdminPassworddd426feefcb64fa5a45a6dd743f28787

输入密码进行登录,进入插件下载页面

基于 Docker 与 Jenkins 实现自动化部署

 

点击选择插件来安装,选择需要安装的插件(可以再搜索框进行搜索)

搜索 GIT,勾选 Git Parameter

点击安装

基于 Docker 与 Jenkins 实现自动化部署

 

正在安装中(等待一小会时间)

基于 Docker 与 Jenkins 实现自动化部署

 

下载完毕,设置信息,点击保存并完成,进入首页

基于 Docker 与 Jenkins 实现自动化部署

 

基于 Docker 与 Jenkins 实现自动化部署

 

基于 Docker 与 Jenkins 实现自动化部署

 

安装成功

基于 Docker 与 Jenkins 实现自动化部署

 

Jenkins 入门配置

构建任务

准备好 gitee 仓库中的项目,并且通过 Jenkins 配置项目的实现当前项目的 DevOps 基本流程

• 构建 Maven 工程发布到 gitee 中(gitee,github 都可以)

• gitee 官网:https://gitee.com/dashboard/projects

查看 Gitee 中的项目

基于 Docker 与 Jenkins 实现自动化部署

 

Jenkins 点击左侧导航栏新建任务

基于 Docker 与 Jenkins 实现自动化部署

 

选择自由风格构建任务

基于 Docker 与 Jenkins 实现自动化部署

 

配置源码拉取地址

Jenkins 需要将 Git 上存放的源码存储到 Jenkins 服务所在磁盘的本地

配置任务源码拉取地址

基于 Docker 与 Jenkins 实现自动化部署

 

Jenkins 立即构建

基于 Docker 与 Jenkins 实现自动化部署

 

查看构建工程的日志

基于 Docker 与 Jenkins 实现自动化部署

 

可以看到源码已经拉取带 Jenkins 本地,可以根据第三行日志信息,查看 Jenkins 本地拉取到的源码。

查看 Jenkins 容器中/var/jenkins_home/workspace/test01 的源码

[root@flexusx-251f jenkins]# docker exec -it jenkins /bin/bashjenkins@8e2fba3b21aa:/$ ls /var/jenkins_home/workspace/test01README.en.md  README.mdjenkins@8e2fba3b21aa:/$ exitexit

配置 maven 构建代码

Jenkins 配置 JDK&Maven 并保存

基于 Docker 与 Jenkins 实现自动化部署

 

基于 Docker 与 Jenkins 实现自动化部署

 

基于 Docker 与 Jenkins 实现自动化部署

 

配置 Jenkins 任务构建代码

• 前提是你确实想要执行 Maven 的 package 生命周期阶段。package 阶段会编译项目代码,运行测试(如果配置了的话),并打包应用程序(如 JAR 或 WAR 文件)。

基于 Docker 与 Jenkins 实现自动化部署

 

基于 Docker 与 Jenkins 实现自动化部署

 

立即构建测试,查看 target 下的 jar 包(随便找了个项目进行测试)

• https://gitee.com/zi_yinhai/day06_git_test.git

基于 Docker 与 Jenkins 实现自动化部署

 

[root@flexusx-251f ~]# ls /jenkins/data/workspace/test01/target/classes            maven-archiver  newprojectday_06-1.0-SNAPSHOT.jargenerated-sources  maven-status#通过阿里云下载的镜像会存放在这[root@flexusx-251f ~]# ls /usr/local/maven/apache-maven-3.9.9/repository/antlr                     classworlds    commons-fileupload  eu     mysqlaopalliance               com            commons-io          javax  netbackport-util-concurrent  commons-cli    commons-logging     junit  orgch                        commons-codec  dom4j               log4j

至此我们已经成功搭建完成持续集成工具

体验和感受

在快节奏的软件开发与运维领域,自动化部署已成为提升效率、减少人为错误的关键。华为云 Flexusx 服务器,凭借其卓越的性能、灵活的扩展性和稳定的云环境,为企业用户提供了理想的自动化部署平台。结合 Docker 容器化技术与 Jenkins 持续集成/持续部署(CI/CD)工具,Flexus X 实例更是如虎添翼,为企业开启了自动化部署的新纪元。

Docker 的轻量级与可移植性,使得应用环境能够轻松打包、部署与迁移,而 Jenkins 则以其强大的自动化流程管理能力,将代码提交、构建、测试、部署等环节无缝衔接。在 Flexusx 服务器上部署 Docker 与 Jenkins,企业可以构建一套高效的自动化部署流水线,实现从代码提交到线上运行的快速迭代。

值此 828 华为云企业上云节之际,一起体验 Flexusx 服务器上的 Docker 与 Jenkins 自动化部署解决方案。无论您是初创公司还是大型企业,都能在这一平台上找到适合自己的自动化部署策略。让 Flexusx 成为您数字化转型的加速器,Docker 与 Jenkins 则为您的软件交付效率插上翅膀。

选择华为云 Flexusx,携手 Docker 与 Jenkins,共同开启自动化部署的新篇章。点击下方链接,立即行动,在 828 上云节的特惠期间,让我们携手并进,共创数字化未来!

产品链接华为云Flexus云服务器X实例直播建站服务器-华为云

基于 Docker 与 Jenkins 实现自动化部署
展开 收起

UGREEN 绿联 DXP4800 四盘位 私有云NAS存储(Intel N100、8GB)

UGREEN 绿联 DXP4800 四盘位 私有云NAS存储(Intel N100、8GB)

2199元起

ZSpace 极空间 私有云Z2Pro 2盘位 NAS存储 水墨黑

ZSpace 极空间 私有云Z2Pro 2盘位 NAS存储 水墨黑

1199元起

UGREEN 绿联 DXP2800 双盘位 私有云NAS存储(Intel N100、8GB)

UGREEN 绿联 DXP2800 双盘位 私有云NAS存储(Intel N100、8GB)

1699元起

ZSpace 极空间 私有云 Z4Pro 性能版 NAS存储(N305、16GB)黑色

ZSpace 极空间 私有云 Z4Pro 性能版 NAS存储(N305、16GB)黑色

3499元起

UGREEN 绿联 DXP4800 Plus 四盘位 私有云NAS存储

UGREEN 绿联 DXP4800 Plus 四盘位 私有云NAS存储

2199元起

ZSpace 极空间 私有云 Z4Pro 16G版 4盘位NAS存储(N97、16GB)

ZSpace 极空间 私有云 Z4Pro 16G版 4盘位NAS存储(N97、16GB)

2549元起

Synology 群晖 DS923+ 四盘位 NAS存储(AMD R1600、4GB)

Synology 群晖 DS923+ 四盘位 NAS存储(AMD R1600、4GB)

4892.5元起

QNAP 威联通 TS-464C2 四盘位 NAS网络存储(赛扬N5095、8GB)黑色

QNAP 威联通 TS-464C2 四盘位 NAS网络存储(赛扬N5095、8GB)黑色

2399元起

极空间私有云Z4Pro 8G版四盘位Nas网络存储服务器家庭个人云相册备份文件同步【配】钛金灰

极空间私有云Z4Pro 8G版四盘位Nas网络存储服务器家庭个人云相册备份文件同步【配】钛金灰

899元起

HUAWEI 华为 AS6020 双盘位 家庭存储 NAS

HUAWEI 华为 AS6020 双盘位 家庭存储 NAS

1699元起

Synology 群晖 DS224+ 双盘位NAS(赛扬J4125、2GB)

Synology 群晖 DS224+ 双盘位NAS(赛扬J4125、2GB)

2399元起

UGREEN 绿联 DX4600 四盘位NAS存储 (赛扬N5105、8GB)

UGREEN 绿联 DX4600 四盘位NAS存储 (赛扬N5105、8GB)

1696元起

QNAP 威联通 TS-464C 4盘位NAS(赛扬N5095、8GB)

QNAP 威联通 TS-464C 4盘位NAS(赛扬N5095、8GB)

1699元起

ZSpace 极空间 私有云 Z423 旗舰版 8盘位NAS存储(锐龙R7-5825U、32GB)

ZSpace 极空间 私有云 Z423 旗舰版 8盘位NAS存储(锐龙R7-5825U、32GB)

3899元起

UGREEN 绿联 DXP480T Plus 四盘位 私有云NAS存储(酷睿i5-1235U、8GB)

UGREEN 绿联 DXP480T Plus 四盘位 私有云NAS存储(酷睿i5-1235U、8GB)

3699元起

QNAP 威联通 TS-466C 四盘位NAS(奔腾N6005、8GB)

QNAP 威联通 TS-466C 四盘位NAS(奔腾N6005、8GB)

3199元起
0评论

当前文章无评论,是时候发表评论了
提示信息

取消
确认
评论举报

相关好价推荐
查看更多好价

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
1
扫一下,分享更方便,购买更轻松