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

电子说

1.3w人已加入

描述

前言

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

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

jenkins

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 将打好标签的发行版本代码拉取、构建、制作镜像交给运维人员部署。

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

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

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

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

jenkins

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

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

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

jenkins

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

搜索 GIT,勾选 Git Parameter

点击安装

jenkins

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

jenkins

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

jenkins

jenkins

jenkins

安装成功

jenkins

Jenkins 入门配置

构建任务

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

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

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

查看 Gitee 中的项目

jenkins

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

jenkins

选择自由风格构建任务

jenkins

配置源码拉取地址

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

配置任务源码拉取地址

jenkins

Jenkins 立即构建

jenkins

查看构建工程的日志

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 并保存

jenkins

jenkins

jenkins

配置 Jenkins 任务构建代码

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

jenkins

jenkins

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

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

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实例直播建站服务器-华为云
 

jenkins

审核编辑 黄宇

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分