0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

jf_21561199 来源:jf_21561199 作者:jf_21561199 2025-01-07 17:25 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

前言

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

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

wKgZPGd88vSARHEhAAEA43MSbXE167.png

Jenkins 介绍

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

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

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

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

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

CI/CD 的理解

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

CI/CD 可以理解为:

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

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

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

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

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

wKgZPGd88vWAL2RhAAOvW3NGU4g483.png

华为云 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-251fjava]# lsopenjdk-12.0.2_linux-x64_bin.tar.gz

解压软件包

[root@flexusx-251fjava]# tar -zxvfopenjdk-12.0.2_linux-x64_bin.tar.gz

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

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

查看 java 版本

[root@flexusx-251f~]# java -versionopenjdkversion "12.0.2"2019-07-16OpenJDKRuntime Environment (build12.0.2+10)OpenJDK64-Bit Server VM (build12.0.2+10, mixed mode, sharing)

配置 Maven 环境

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

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

wKgZO2d88vWAO_mjAAJCHuNYzNg601.png

上传软件包

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

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

[root@flexusx-251fmaven]# mkdir repository

编辑 settings.xml 文件

设置 maven 仓库

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

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

................................................. maven-default-http-blockerexternal:http:*Pseudo repositoryto mirror external repositories initially using HTTP.http://0.0.0.0/true #修改为阿里云镜像地址nexus-aliyuncentralNexus aliyunhttps://maven.aliyun.com/repository/public...................

配置环境变量

[root@flexusx-251fmaven]# vim /etc/profile...#在文件最后加入两行参数信息 exportMAVEN_HOME=/usr/local/maven/apache-maven-3.9.9exportPATH=$PATH:$MAVEN_HOME/bin[root@flexusx-251fmaven]# mvn -vApacheMaven 3.9.9 (8e8579a9e76f7d015ee5ec7bfcdc97d260186937)Mavenhome: /usr/local/maven/apache-maven-3.9.9Javaversion: 12.0.2, vendor: Oracle Corporation, runtime: /java/jdk-12.0.2Defaultlocale: en_US, platform encoding: UTF-8OSname: "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-251fjenkins]# mkdir data[root@flexusx-251fjenkins]# vim docker-compose.yaml[root@flexusx-251fjenkins]# 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 #挂载 mavenenvironment:-JAVA_OPTS=-Dorg.apache.commons.jelly.tags.fmt.timeZone='Asia/Shanghai' #指定时间restart:always[root@flexusx-251fjenkins]# 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-251fjenkins]# docker-compose lsNAMESTATUS CONFIG FILESjenkinsrunning(1)/jenkins/docker-compose.yaml[root@flexusx-251fjenkins]# docker ps |grepjen8e2fba3b21aajenkins/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

wKgZPGd88vaAVseHAAEwKaqZKik301.png

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

wKgZO2d88vaAZrvMAACEbPiMfmU637.png

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

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

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

wKgZPGd88veAZk6nAACn5qA9eug332.png

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

搜索 GIT,勾选 Git Parameter

点击安装

wKgZO2d88veAJCBpAAEUUEkDFiU434.png

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

wKgZPGd88veANhQsAACy6piSWcs658.png

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

wKgZO2d88viATIZdAAB5ak-IlUM087.png

wKgZPGd88viATXV2AACGAhHRmA0156.png

wKgZO2d88viAF9ppAABcVoi8Smw240.png

安装成功

wKgZO2d88vmAPoqIAAC0EzQQpAA381.png

Jenkins 入门配置

构建任务

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

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

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

查看 Gitee 中的项目

wKgZPGd88vmAJf7JAAE-aANXiDQ759.png

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

wKgZO2d88vqAZgKPAACtxkK43Ws437.png

选择自由风格构建任务

wKgZPGd88vqAX-3DAAD7Rr-TxyE803.png

配置源码拉取地址

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

配置任务源码拉取地址

wKgZO2d88vqAfKHfAADDZnF3Nus718.png

Jenkins 立即构建

wKgZPGd88vqAAHq_AACBS-q3ohc921.png

查看构建工程的日志

wKgZO2d88vuAN31VAAFViUura9Q942.png

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

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

[root@flexusx-251fjenkins]# docker exec -itjenkins /bin/bashjenkins@8e2fba3b21aa:/$ls /var/jenkins_home/workspace/test01README.en.mdREADME.mdjenkins@8e2fba3b21aa:/$exitexit

配置 maven 构建代码

Jenkins 配置 JDK&Maven 并保存

wKgZPGd88vuAd1L2AAF1REYZuzU760.png

wKgZO2d88vuAAsEgAABPQhvmalU032.png

wKgZO2d88v2AcvCaAABDfp46Q1A152.png

配置 Jenkins 任务构建代码

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

wKgZPGd88v2AAvACAACY367MX0s961.png

wKgZO2d88v6AQ7vmAACzTPsJLw0743.png

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

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

wKgZPGd88v6APD-fAAFReHpNz0s938.png

[root@flexusx-251f~]# ls /jenkins/data/workspace/test01/target/classesmaven-archiver newprojectday_06-1.0-SNAPSHOT.jargenerated-sourcesmaven-status#通过阿里云下载的镜像会存放在这[root@flexusx-251f~]# ls /usr/local/maven/apache-maven-3.9.9/repository/antlrclassworlds commons-fileupload eu mysqlaopalliancecom commons-io javax netbackport-util-concurrentcommons-cli commons-logging junit orgchcommons-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实例直播建站服务器-华为云

wKgZO2d88v6ALfIEAAMdMY7jqCs031.png

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Docker
    +关注

    关注

    0

    文章

    526

    浏览量

    14026
  • 华为云
    +关注

    关注

    3

    文章

    2805

    浏览量

    19092
  • jenkins
    +关注

    关注

    0

    文章

    34

    浏览量

    5447
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    CI/CT自动化测试解决方案

    北汇信息可以提供Jenkins、Gitlab Runner CI和自研平台等的CI/CT整体解决方案,通过CI/CT自动化测试执行、测试策略定制、测试任务自动调度、测试系统资源统筹、测试过程闭环
    的头像 发表于 11-12 16:01 1241次阅读
    CI/CT<b class='flag-5'>自动化</b>测试解决方案

    SaltStack自动化部署实践

    今天,我想和大家分享一个真实的案例:我们团队如何通过SaltStack将原本需要3天的部署时间缩短到30分钟,并且实现了零失误率。这不是魔法,而是自动化运维的力量。
    的头像 发表于 09-17 16:18 373次阅读

    使用Ansible实现大规模集群自动化部署

    当你面对1000+服务器需要部署时,你还在一台台手工操作吗?本文将揭秘如何用Ansible实现大规模集群的自动化部署,让运维效率提升10倍!
    的头像 发表于 08-27 14:41 536次阅读

    车机交互测试自动化实现路径与案例分析

    测试设备是车机交互测试自动化实现的核心支撑,通过合理选型、部署和应用北京沃华慧通测控技术有限公司汽车测试设备,结合科学的实现路径和丰富的案例经验,能够有效提高车机交互测试的效率和质量,
    的头像 发表于 07-10 09:24 1182次阅读
    车机交互测试<b class='flag-5'>自动化</b><b class='flag-5'>实现</b>路径与案例分析

    如何使用Docker部署大模型

    随着深度学习和大模型的快速发展,如何高效地部署这些模型成为了一个重要的挑战。Docker 作为一种轻量级的容器技术,能够将模型及其依赖环境打包成一个可移植的容器,极大地简化了部署流程
    的头像 发表于 05-24 16:39 813次阅读

    集成Docker,解锁 HMI/网关的定制应用

    工业自动化领域对定制HMI/网关的需求日益增长,而传统设备因功能固化难以满足快速迭代需求。宏集HMI&网关通过集成Docker技术,赋予设备超强的灵活性和扩展性,满足企业的个性需求
    的头像 发表于 05-22 11:06 394次阅读
    集成<b class='flag-5'>Docker</b>,解锁 HMI/网关的定制<b class='flag-5'>化</b>应用

    JenkinsDocker自动化CI/CD全流程

    要想做到一个高效的CI/CD流程,需要有能力整合DevOps工具链及多环境适配,并且设计之初以自动化为原则,如一键部署、一键升级。
    的头像 发表于 05-14 11:50 735次阅读
    <b class='flag-5'>Jenkins</b>和<b class='flag-5'>Docker</b><b class='flag-5'>自动化</b>CI/CD全流程

    一文掌握Jenkins自动化部署

    Jenkins自动化部署是现代软件开发中不可或缺的一部分,它不仅简化了代码的发布过程,还为整个团队带来了无与伦比的效率和协作力。想象一下,开发者们可以专注于编写高质量的代码,而不是为繁琐的手动
    的头像 发表于 04-23 10:50 2660次阅读
    一文掌握<b class='flag-5'>Jenkins</b><b class='flag-5'>自动化</b><b class='flag-5'>部署</b>

    HFSS 自动化建模工具

    因工作需求,自己写的HFSS参数自动化建模工具,目前只实现了常用的四种模型,可定制,如需可联系 qq:1300038043 附件下载链接:https://pan.baidu.com/s/1TVeTTFiJw-pxSyT1AT
    发表于 02-27 17:44

    Jenkins的安装教程

    Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,广泛用于项目开发,具有自动化构建、测试和部署等功能。Jenkins用Java语言编写,可在Tomcat等流行的ser
    的头像 发表于 02-06 10:04 1620次阅读
    <b class='flag-5'>Jenkins</b>的安装教程

    华为云 X 实例部署 Docker 应用的性能评测优化与实践指南

      4.2 网络延迟与带宽消耗   4.3 部署时间统计   5. 优化策略   5.1 硬件资源调整   5.2 自动化脚本优化   5.3 缓存与镜像加速   6 总结   1. 前言 随着云计算的快速发展,越来越多的企业和开发者开始
    的头像 发表于 01-23 18:03 780次阅读
    华为云 X 实例<b class='flag-5'>部署</b> <b class='flag-5'>Docker</b> 应用的性能评测优化与实践指南

    Jenkins 与 SonarQube 集成部署自动化代码质量监控

    的性能表现,为 Jenkins 与 SonarQube 的集成部署提供强大支撑。在 Flexus X 的助力下,自动化代码扫描与质量问题即时反馈成为可能,显著提升团队开发效率与软件质量。立即体验华为云
    的头像 发表于 01-07 17:24 1058次阅读
    <b class='flag-5'>Jenkins</b> 与 SonarQube 集成<b class='flag-5'>部署</b>,<b class='flag-5'>自动化</b>代码质量监控

    云服务器Flexus X实例,Docker集成搭建Jenkins CI/CD平台

    Jenkins 是一个开源的自动化服务器,用于持续集成(CI)和持续交付(CD)软件项目。它允许开发人员在软件开发过程中自动化各种任务,如构建、测试和部署,从而提高开发效率和软件质量。
    的头像 发表于 12-29 15:43 688次阅读
    云服务器Flexus X实例,<b class='flag-5'>Docker</b>集成搭建<b class='flag-5'>Jenkins</b> CI/CD平台

    Flexus X 实例 Docker+Jenkins+gitee 实现 CICD 自动化部署 - 解放你的双手~

    前言 828 B2B 企业节特惠来袭,Flexus X 实例引领自动化部署新纪元!Docker 携手 Jenkins 与 Gitee,共创 CICD 无限可能!在快速迭代的数字时代,我
    的头像 发表于 12-26 18:19 770次阅读
    Flexus X 实例 <b class='flag-5'>Docker+Jenkins</b>+gitee <b class='flag-5'>实现</b> CICD <b class='flag-5'>自动化</b><b class='flag-5'>部署</b> - 解放你的双手~

    k8s和docker区别对比,哪个更强?

    部署、扩展、管理和应用生命周期管理能力,可实现高可用性和自动伸缩,两者常结合使用以优化容器和应用管理。UU云小编将对k8s和docker
    的头像 发表于 12-11 13:55 1141次阅读