目錄
服務(wù)器準(zhǔn)備
Docker安裝
yum 包更新到最新
設(shè)置yum源
安裝docker
啟動(dòng)和開機(jī)啟動(dòng)
驗(yàn)證安裝是否成功
Jenkins安裝
拉取鏡像
創(chuàng)建映射目錄
運(yùn)行鏡像
運(yùn)行出錯(cuò)
修正權(quán)限
重新運(yùn)行鏡像
新建安全組,放通8080端口
激活Jenkins
Jenkins插件
Jenkins全局工具配置
自動(dòng)構(gòu)建Springboot項(xiàng)目
準(zhǔn)備好Springboot項(xiàng)目
Jenkins新建任務(wù)和配置
服務(wù)器準(zhǔn)備
可以選擇阿里云、騰訊云、華為云等云服務(wù)器,更便捷,當(dāng)然也可以使用本地電腦開虛擬機(jī)。
阿里云活動(dòng)地址、騰訊云活動(dòng)地址、華為云活動(dòng)地址(點(diǎn)擊可訪問)
本人購買的阿里云服務(wù)器配置為:2 vCPU 2 GiB 3Mbps,即阿里云的優(yōu)惠活動(dòng)最低配置的服務(wù)器,操作系統(tǒng)選擇的centos7.9
當(dāng)然騰訊云和華為云也不錯(cuò),可以按需或自己的喜好購買。華為云對(duì)新用戶有性價(jià)比超高的2核4G的配置,不過需要搶。
騰訊云的硬盤更大,帶寬更大價(jià)格也很實(shí)惠,并且是新老客戶都可以買的
如果只是個(gè)人用來玩一下或者只是有個(gè)把個(gè)人項(xiàng)目,那就選擇一個(gè)2核2g或者2核4g的服務(wù)器就可以了,即上述最低配置的服務(wù)器,當(dāng)然如果是小團(tuán)隊(duì)要使用或者項(xiàng)目比較多,那建議4g/8g起步。
選擇合適自己的服務(wù)器購買后,等待云服務(wù)器完成配置,然后你就可以在你的控制臺(tái)里面看到自己的云服務(wù)器實(shí)例了,這里可以自行參考對(duì)于云服務(wù)廠家的說明書來。
Docker安裝
yum 包更新到最新
yum update
設(shè)置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
安裝docker
yum install docker-ce ?
OR
yum install <自己的版本> ?# 例如:sudo yum install docker-ce-17.12.0.ce
啟動(dòng)和開機(jī)啟動(dòng)
systemctl start docker
systemctl enable docker
驗(yàn)證安裝是否成功
docker version
通過以上命令基本就可以完成docker的安裝,本人實(shí)操通過,如遇到問題就對(duì)于查找相關(guān)的解決方案,這里也貼一下docker官網(wǎng)的文檔:Get Docker | Docker Docs
Jenkins安裝
Jenkins的安裝可以參考官網(wǎng)的文檔來,安裝Jenkins,這里我列出我的安裝過程。
拉取鏡像
docker pull jenkins/jenkins:lts
這里我使用的是Jenkins的長期支持鏡像jenkins/jenkins:lts,但官網(wǎng)的建議是:
使用的Docker映像是jenkinsci/blueocean image(來自 the Docker Hub repository)。 該鏡像包含當(dāng)前的長期支持 (LTS) 的Jenkins版本 (可以投入使用) ,捆綁了所有Blue Ocean插件和功能。這意味著你不需要單獨(dú)安裝Blue Ocean插件。
也就是說jenkinsci/blueocean是長期支持版本+Blue Ocean插件,我由于安裝后才看官方文檔就沒有換了,后續(xù)我自行安裝了Blue Ocean插件。
創(chuàng)建映射目錄
mkdir -p /data/jenkins
這里映射目錄你可以按照容器里面的目錄/var/jenkins_home來創(chuàng)建也行,自定義也行,看你們自己的規(guī)范
運(yùn)行鏡像
docker run -u root -d --name=jenkins -p 8080:8080 -p 50000:50000 -v /data/jenkins/:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker jenkins/jenkins:lts
指定-u root可以解決權(quán)限不足的問題,映射docker命令可以解決Jenkins在構(gòu)建鏡像時(shí)提示docker not found的問題
運(yùn)行出錯(cuò)
如果運(yùn)行出錯(cuò),可以通過docker logs查看運(yùn)行日志,我這里有遇到下面的錯(cuò)誤
[root@iZ7us1hw0oqmxZ ~]# docker logs jenkins touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
修正權(quán)限
遇到上面的錯(cuò)誤后通過如下命令授權(quán)給Jenkins容器內(nèi)用戶權(quán)限(Jenkins容器內(nèi)userid=1000)
chown -R 1000 /data/jenkins/
重新運(yùn)行鏡像
docker run -u root -d --name=jenkins -p 8080:8080 -p 50000:50000 -v /data/jenkins/:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker jenkins/jenkins:lts
# 查看容器是否已在運(yùn)行
docker ps
新建安全組,放通8080端口
由于我們購買的云服務(wù)器,一般默認(rèn)都是關(guān)閉所有端口的訪問的(除了22端口),所以我們需要進(jìn)入服務(wù)器實(shí)例,找到安全組去配置規(guī)則
將入方向的8080端口放通,如下:
這樣就可以在瀏覽器通過服務(wù)器公網(wǎng)ip:8080訪問到你部署的Jenkins了
激活Jenkins
瀏覽器訪問ip:8080 獲取Jenkins密鑰,可以利用docker logs jenkins日志獲取 也可以查看指定文件/data/jenkins/secrets/initialAdminPassword
?
Jenkins插件
使用Jenkins密鑰進(jìn)入登錄Jenkins后,默認(rèn)會(huì)提示安裝一下常用插件,這里可以選擇安裝一下,然后就是讓創(chuàng)建一個(gè)管理員用戶,可自行按照提示填寫,我這里沒有截圖,應(yīng)該沒什么問題,這里主要對(duì)幾個(gè)常用Jenkins插件和相關(guān)配置做個(gè)說明。
進(jìn)入Jenkins主界面后,插件安裝在系統(tǒng)管理(System Manager)里面的插件管理(Plugin),我這里說的基本都是中文,但有可能你進(jìn)去看到的是英文的界面,自行轉(zhuǎn)化一下。
?
好像是安裝了Blue Ocean插件變中文了的,當(dāng)然實(shí)際上是這個(gè)插件的功勞Localization: Chinese (Simplified),如果你想要中文顯示,可以安裝這個(gè)插件。
-
Localization: Chinese (Simplified)版本 :Jenkins Core 及其插件的簡(jiǎn)體中文語言包
-
Blue Ocean:一個(gè)美觀、功能強(qiáng)大的CI/CD工具,可以在UI界面上配置和管理CI/CD流水線
-
Gitee Plugin:集成gitee需要用到
-
Git Parameter Plug-In:git參數(shù)插件,比如想指定構(gòu)建分支就可以用它來做
-
Role-based Authorization Strategy版本:角色權(quán)限控制策略插件,當(dāng)有多個(gè)賬號(hào)需要控制不同角色賬號(hào)的操作權(quán)限時(shí)可以用它來做
-
SSH:ssh插件,有遠(yuǎn)程連接就需要用它。但是?。?!它已經(jīng)提示有漏洞了,并且提示了3年多還是沒有更新,當(dāng)前最新版本的插件還是5年前的,所以一定不要用它了,需要的話用別的插件代替(代替插件我暫時(shí)沒有研究,后續(xù)如有用到我補(bǔ)充進(jìn)來)
?
上面的插件的使用可以點(diǎn)擊鏈接進(jìn)去看看文檔怎么寫的,或者直接百度相應(yīng)插件名稱有很多教程,這里就不贅述了
Jenkins全局工具配置
安裝完上面的插件后,還需要對(duì)Jenkins做一個(gè)全局工具的配置,需要運(yùn)行Java程序,肯定少不了Jdk,Maven等,所以我們需要安裝配置它們。
選擇新增JDK,命個(gè)名,例如JDK1.8,選擇對(duì)應(yīng)版本,選擇從java.sun.com安裝,并輸入自己的Oracle賬號(hào)密碼,下面截圖有紅色報(bào)錯(cuò)請(qǐng)忽略,正常不會(huì)報(bào)錯(cuò)的。
?
滑動(dòng)界面到下面,選擇Maven安裝,選擇合適的版本,從Apache安裝
?如果網(wǎng)絡(luò)不好也可以下載好安裝包上傳服務(wù)器,選擇解壓.zip/.tar.gz安裝
?
點(diǎn)擊保存,Jenkins就會(huì)自動(dòng)安裝JDK,Maven了。
自動(dòng)構(gòu)建Springboot項(xiàng)目
準(zhǔn)備好Springboot項(xiàng)目
可以使用idea或者在https://start.spring.io官網(wǎng)生成一個(gè)demo(現(xiàn)在已經(jīng)不支持生成Java8的了,可以生成后自己再改版本就好了),或者自己寫一個(gè)demo,或者從其他項(xiàng)目復(fù)制一份,隨便改改,方法多種多樣,這個(gè)相信大家都沒有問題。
這里主要是要通過maven插件或者通過Dockerfile描述文件將項(xiàng)目打包成鏡像,我這里是通過Dockerfile文件來打包的,再項(xiàng)目根目錄新建Dockerfile文件,內(nèi)容如下:
FROM openjdk:8-jdk-alpine
MAINTAINER liangchen
ENV TZ=Asia/Shanghai
#這里時(shí)區(qū)相關(guān)命令注釋是因?yàn)闃?gòu)建慢,這個(gè)命令是可用的
#RUN apk update \
# && apk add tzdata \
# && echo "${TZ}" > /etc/timezone \
# && ln -sf /usr/share/zoneinfo/${TZ} /etc/localtime \
# && rm /var/cache/apk/*
# /tmp 目錄作為容器數(shù)據(jù)卷目錄,SpringBoot內(nèi)嵌Tomcat容器默認(rèn)使用/tmp作為工作目錄,任何向 /tmp 中寫入的信息不會(huì)記錄進(jìn)容器存儲(chǔ)層,從而保證容器存儲(chǔ)層的無狀態(tài)化
# 在宿主機(jī)的/var/lib/docker目錄下創(chuàng)建一個(gè)臨時(shí)文件并把它鏈接到容器中的/tmp目錄
VOLUME /tmp
ADD target/jenkinsdemo-0.0.1-SNAPSHOT.jar app.jar
# 設(shè)置隨機(jī)數(shù)生成器的算法為 /dev/./urandom,以提高隨機(jī)性和性能
ENTRYPOINT ["java","-Xmx128m","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar","--spring.profiles.active=test"]
EXPOSE 8081
?
面時(shí)區(qū)命令我注釋了,但實(shí)際是可用的,相關(guān)Docker時(shí)區(qū)問題可以看看這篇文章:Docker時(shí)區(qū)問題,看這一篇就夠了-CSDN博客
Jenkins新建任務(wù)和配置
新建任務(wù),起個(gè)名字,一般用項(xiàng)目名,選擇構(gòu)建一個(gè)自由風(fēng)格的軟件項(xiàng)目
配置Git源碼地址,賬號(hào)密碼
構(gòu)建步驟,選擇調(diào)用頂層Maven目標(biāo),使用maven給java項(xiàng)目編譯打包,這里的maven版本就是上面配置的版本
?這個(gè)時(shí)候就可以保存,點(diǎn)擊構(gòu)建,測(cè)試是否能正常打包了,點(diǎn)擊構(gòu)建歷史->控制臺(tái)輸出,查看構(gòu)建日志,如出現(xiàn)如下內(nèi)容則為正常
注意:這里構(gòu)建可能很慢,是從maven默認(rèn)的倉庫下載的依賴,可以更改maven的默認(rèn)中央倉庫為阿里巴巴的maven倉庫,找到服務(wù)器/data/jenkins/tools/hudson.tasks.Maven_MavenInstallation/maven3.6.3/conf目錄,在settings.xml里面加入如下鏡像地址:
<mirrors>
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
</mirrors>
之后構(gòu)建就會(huì)從aliyun下載依賴了,速度快上10倍。
然后回到任務(wù)配置界面,再新增構(gòu)建步驟
腳本內(nèi)容,根據(jù)需要修改
#進(jìn)入到j(luò)enkins的項(xiàng)目工作目錄
cd /var/jenkins_home/workspace/jenkinsdemo
#停止容器 || true表示執(zhí)行失敗繼續(xù)往下執(zhí)行,避免第一次沒有該容器執(zhí)行失敗
docker stop jenkinsdemo || true
#刪除容器
docker rm jenkinsdemo || true
#刪除鏡像
docker rmi jenkinsdemo || true
#docker構(gòu)建打包生成鏡像
docker build -t jenkinsdemo .
#運(yùn)行鏡像
docker run -d -p 8081:8081 --name jenkinsdemo jenkinsdemo:latest
保存,再次構(gòu)建,正常的話就會(huì)是這樣的日志。
至此構(gòu)建部署完畢,可以通過瀏覽器訪問ip:8081,測(cè)試是否能訪問到項(xiàng)目。文章來源:http://www.zghlxwxcb.cn/news/detail-764622.html
?完美!嗯?完美嗎?當(dāng)然不,還有很多可以優(yōu)化的地方,但這里至少從0-1了,把基本的架子搭建起來了,后續(xù)再來分享我優(yōu)化的地方,比如實(shí)現(xiàn)提交代碼自動(dòng)構(gòu)建,比如實(shí)現(xiàn)構(gòu)建通知,比如通過域名來訪問不暴露ip端口等等。文章來源地址http://www.zghlxwxcb.cn/news/detail-764622.html
到了這里,關(guān)于Jenkins+Docker+Gitee搭建自動(dòng)化部署平臺(tái)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!