前言
重塑自動(dòng)化部署新高度,Docker 攜手 Jenkins,在華為云 Flexus X 云服務(wù)器的加持下,引領(lǐng)持續(xù)集成與部署的新紀(jì)元。Flexus X 以其卓越的性能、靈活的資源配置和高效的成本優(yōu)化,為 Docker 容器化應(yīng)用與 Jenkins 自動(dòng)化流水線(xiàn)提供了理想的運(yùn)行環(huán)境。無(wú)論是快速構(gòu)建、測(cè)試還是部署,F(xiàn)lexus X 都能確保流程順暢無(wú)阻,大幅提升軟件開(kāi)發(fā)與交付效率。立即擁抱華為云 828 企業(yè)上云節(jié)優(yōu)惠,開(kāi)啟您的 Docker 與 Jenkins 自動(dòng)化部署之旅,讓軟件創(chuàng)新更快一步!
鏈接直達(dá):華為云Flexus云服務(wù)器X實(shí)例
Jenkins 介紹
Jenkins 是一個(gè)開(kāi)源的持續(xù)集成和持續(xù)部署(CI/CD)工具,它基于 Java 開(kāi)發(fā),支持各種編程語(yǔ)言和平臺(tái)。Jenkins 以其強(qiáng)大的功能和靈活性,在現(xiàn)代軟件開(kāi)發(fā)中扮演著重要角色。
Jenkins 應(yīng)用廣泛,大多數(shù)互聯(lián)網(wǎng)公司都采用 Jenkins 配合 GitLab、Docker、K8s 作為實(shí)現(xiàn) DevOps 的核心工具。
Jenkins 最強(qiáng)大的就在于插件,Jenkins 官方提供了大量的插件庫(kù),來(lái)自動(dòng)化 CI/CD 過(guò)程中的各種瑣碎功能。
Jenkins 最主要的工作就是將 GitLab 上可以構(gòu)建的工程代碼拉取并且進(jìn)行構(gòu)建,再根據(jù)流程可以選擇發(fā)布到測(cè)試環(huán)境或是生產(chǎn)環(huán)境。
Jenkins 需要大量的插件保證工作,安裝成本較高,下面會(huì)基于 Docker 搭建 Jenkins。
CI/CD 的理解
一般是 GitLab 上的代碼經(jīng)過(guò)大量的測(cè)試后,確定發(fā)行版本,再發(fā)布到生產(chǎn)環(huán)境。
CI/CD 可以理解為:
?CI 過(guò)程即是通過(guò) Jenkins 將代碼拉取、構(gòu)建、制作鏡像交給測(cè)試人員測(cè)試。
–持續(xù)集成:讓軟件代碼可以持續(xù)的集成到主干上,并自動(dòng)構(gòu)建和測(cè)試。
?CD 過(guò)程即是通過(guò) Jenkins 將打好標(biāo)簽的發(fā)行版本代碼拉取、構(gòu)建、制作鏡像交給運(yùn)維人員部署。
–持續(xù)交付:讓經(jīng)過(guò)持續(xù)集成的代碼可以進(jìn)行手動(dòng)部署。
–持續(xù)部署:讓可以持續(xù)交付的代碼隨時(shí)隨地的自動(dòng)化部署。
華為云 Flexus X 實(shí)例部署 Jenkins 的特點(diǎn)
靈活高效部署:華為云 FlexusX 結(jié)合 Docker,讓 Jenkins 部署變得靈活且高效,資源動(dòng)態(tài)調(diào)整,構(gòu)建速度顯著提升。
穩(wěn)定安全運(yùn)行:FlexusX 的穩(wěn)定性和 Docker 的隔離性為 Jenkins 提供可靠運(yùn)行環(huán)境,確保高負(fù)載下穩(wěn)定運(yùn)行,同時(shí)保障數(shù)據(jù)安全。
簡(jiǎn)化管理運(yùn)維:一鍵部署與華為云統(tǒng)一管理界面,極大簡(jiǎn)化了 Jenkins 在 FlexusX 上的部署與管理流程,提升運(yùn)維效率。
豐富插件支持:Jenkins 龐大的插件生態(tài)與 FlexusX 實(shí)例完美融合,滿(mǎn)足多樣化項(xiàng)目需求,為軟件開(kāi)發(fā)團(tuán)隊(duì)提供強(qiáng)大支持。
接下來(lái)讓我們使用 docker,一起走進(jìn) Jenkins 的世界!
環(huán)境規(guī)劃
部署流程
需要了解:
?采用 docker 方式進(jìn)行部署 Jenkins(CI/CD)工具
?詳細(xì)購(gòu)買(mǎi)配置實(shí)例可參考文章:快速部署華為云Flexus X實(shí)例,開(kāi)啟您的云端之旅
?部署 docker 服務(wù)請(qǐng)參考文章:華為FlexusX與Docker+Nginx的高效整合之路
配置 jdk 環(huán)境
注意:選擇適合自己的 JDK,并且注意安裝 JDK 的系統(tǒng)
地址:https://www.oracle.com/java/technologies/downloads/
上傳軟件包 openjdk-12.0.2_linux-x64_bin.tar.gz到實(shí)例中
[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 環(huán)境變量,在文件最后添加
[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 環(huán)境
打開(kāi) Maven 官網(wǎng)下載對(duì)應(yīng)軟件包:Maven – Download Apache Maven
根據(jù)自身需求選擇對(duì)應(yīng)版本,在本實(shí)例中選擇 v3.9.9
上傳軟件包
[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
解壓完畢以后,新建一個(gè) repository 倉(cāng)庫(kù),用于存放 Maven 下載下來(lái)的 jar 包
[root@flexusx-251fmaven]# mkdir repository
編輯 settings.xml 文件
設(shè)置 maven 倉(cāng)庫(kù)
[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#設(shè)置鏡像倉(cāng)庫(kù)地址...........
配置鏡像,配置為阿里云鏡像地址
................................................. 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...................
配置環(huán)境變量
[root@flexusx-251fmaven]# vim /etc/profile...#在文件最后加入兩行參數(shù)信息 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
創(chuàng)建對(duì)應(yīng)目錄,編寫(xiě) 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 #指定鏡像名稱(chēng)container_name:myjenkins #指定容器名稱(chēng)ports:-"1020:8080" #用于主機(jī)訪問(wèn) Jenkins 的 Web 界面-"1021:50000" #用于 Jenkins 的代理(agent)連接volumes:-/jenkins/data/:/var/jenkins_home/ #指定對(duì)應(yīng)目錄-/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' #指定時(shí)間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 實(shí)例 放行端口 1020,1021
瀏覽器輸入地址:http://主機(jī) IP:1020
查看密碼的方式有兩種,任選其一即可
#容器內(nèi)[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#宿主機(jī)[root@flexusx-251fjenkins]# cat /jenkins/data/secrets/initialAdminPassworddd426feefcb64fa5a45a6dd743f28787
輸入密碼進(jìn)行登錄,進(jìn)入插件下載頁(yè)面
點(diǎn)擊選擇插件來(lái)安裝,選擇需要安裝的插件(可以再搜索框進(jìn)行搜索)
搜索 GIT,勾選 Git Parameter
點(diǎn)擊安裝
正在安裝中(等待一小會(huì)時(shí)間)
下載完畢,設(shè)置信息,點(diǎn)擊保存并完成,進(jìn)入首頁(yè)
安裝成功
Jenkins 入門(mén)配置
構(gòu)建任務(wù)
準(zhǔn)備好 gitee 倉(cāng)庫(kù)中的項(xiàng)目,并且通過(guò) Jenkins 配置項(xiàng)目的實(shí)現(xiàn)當(dāng)前項(xiàng)目的 DevOps 基本流程
?構(gòu)建 Maven 工程發(fā)布到 gitee 中(gitee,github 都可以)
?gitee 官網(wǎng):https://gitee.com/dashboard/projects
查看 Gitee 中的項(xiàng)目
Jenkins 點(diǎn)擊左側(cè)導(dǎo)航欄新建任務(wù)
選擇自由風(fēng)格構(gòu)建任務(wù)
配置源碼拉取地址
Jenkins 需要將 Git 上存放的源碼存儲(chǔ)到 Jenkins 服務(wù)所在磁盤(pán)的本地
配置任務(wù)源碼拉取地址
Jenkins 立即構(gòu)建
查看構(gòu)建工程的日志
可以看到源碼已經(jīng)拉取帶 Jenkins 本地,可以根據(jù)第三行日志信息,查看 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 構(gòu)建代碼
Jenkins 配置 JDK&Maven 并保存
配置 Jenkins 任務(wù)構(gòu)建代碼
?前提是你確實(shí)想要執(zhí)行 Maven 的 package生命周期階段。package階段會(huì)編譯項(xiàng)目代碼,運(yùn)行測(cè)試(如果配置了的話(huà)),并打包應(yīng)用程序(如 JAR 或 WAR 文件)。
立即構(gòu)建測(cè)試,查看 target 下的 jar 包(隨便找了個(gè)項(xiàng)目進(jìn)行測(cè)試)
?https://gitee.com/zi_yinhai/day06_git_test.git
[root@flexusx-251f~]# ls /jenkins/data/workspace/test01/target/classesmaven-archiver newprojectday_06-1.0-SNAPSHOT.jargenerated-sourcesmaven-status#通過(guò)阿里云下載的鏡像會(huì)存放在這[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
至此我們已經(jīng)成功搭建完成持續(xù)集成工具
體驗(yàn)和感受
在快節(jié)奏的軟件開(kāi)發(fā)與運(yùn)維領(lǐng)域,自動(dòng)化部署已成為提升效率、減少人為錯(cuò)誤的關(guān)鍵。華為云 Flexusx 服務(wù)器,憑借其卓越的性能、靈活的擴(kuò)展性和穩(wěn)定的云環(huán)境,為企業(yè)用戶(hù)提供了理想的自動(dòng)化部署平臺(tái)。結(jié)合 Docker 容器化技術(shù)與 Jenkins 持續(xù)集成/持續(xù)部署(CI/CD)工具,F(xiàn)lexus X 實(shí)例更是如虎添翼,為企業(yè)開(kāi)啟了自動(dòng)化部署的新紀(jì)元。
Docker 的輕量級(jí)與可移植性,使得應(yīng)用環(huán)境能夠輕松打包、部署與遷移,而 Jenkins 則以其強(qiáng)大的自動(dòng)化流程管理能力,將代碼提交、構(gòu)建、測(cè)試、部署等環(huán)節(jié)無(wú)縫銜接。在 Flexusx 服務(wù)器上部署 Docker 與 Jenkins,企業(yè)可以構(gòu)建一套高效的自動(dòng)化部署流水線(xiàn),實(shí)現(xiàn)從代碼提交到線(xiàn)上運(yùn)行的快速迭代。
值此 828 華為云企業(yè)上云節(jié)之際,一起體驗(yàn) Flexusx 服務(wù)器上的 Docker 與 Jenkins 自動(dòng)化部署解決方案。無(wú)論您是初創(chuàng)公司還是大型企業(yè),都能在這一平臺(tái)上找到適合自己的自動(dòng)化部署策略。讓 Flexusx 成為您數(shù)字化轉(zhuǎn)型的加速器,Docker 與 Jenkins 則為您的軟件交付效率插上翅膀。
選擇華為云 Flexusx,攜手 Docker 與 Jenkins,共同開(kāi)啟自動(dòng)化部署的新篇章。點(diǎn)擊下方鏈接,立即行動(dòng),在 828 上云節(jié)的特惠期間,讓我們攜手并進(jìn),共創(chuàng)數(shù)字化未來(lái)!
產(chǎn)品鏈接:華為云Flexus云服務(wù)器X實(shí)例直播建站服務(wù)器-華為云
審核編輯 黃宇
-
Docker
+關(guān)注
關(guān)注
0文章
478瀏覽量
11872 -
華為云
+關(guān)注
關(guān)注
3文章
2605瀏覽量
17475 -
jenkins
+關(guān)注
關(guān)注
0文章
31瀏覽量
5156
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論