<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Jenkins+Docker+Gitee自動(dòng)化部署SpringBoot應(yīng)用

          共 4981字,需瀏覽 10分鐘

           ·

          2022-02-26 00:55

          點(diǎn)擊關(guān)注公眾號(hào),Java干貨及時(shí)送達(dá)

          閱讀本篇文章需要你有Docker、Git、SpringBoot、Linux等基礎(chǔ)知識(shí)。

          最近在做畢業(yè)設(shè)計(jì),遇到一個(gè)問(wèn)題,就是每次編寫(xiě)完一個(gè)功能點(diǎn),就需要重新運(yùn)行一下項(xiàng)目,然后進(jìn)行測(cè)試,而且項(xiàng)目比較復(fù)雜,在本地運(yùn)行會(huì)占用大量的運(yùn)行內(nèi)存,導(dǎo)致開(kāi)發(fā)不暢。

          于是我想著使用Jenkins配合Gitee搭建一個(gè)自動(dòng)化部署平臺(tái),并將代碼托管到服務(wù)器上,這樣減輕了本地的電腦壓力,也解放了部署的流程。

          搭建Jenkins平臺(tái)

          我們來(lái)搭建一下Jenkins平臺(tái),首先安裝Docker:

          #?安裝yum-utils工具
          sudo?yum?install?-y?yum-utils?device-mapper-persistent-data?lvm2
          #?配置阿里云的Docker?Yum源
          sudo?yum-config-manager?--add-repo?http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
          #?安裝Docker
          sudo?yum?install?docker-ce?docker-ce-cli?containerd.io
          #?啟動(dòng)Docker
          sudo?systemctl?start?docker
          #?配置開(kāi)機(jī)自啟動(dòng)
          sudo?systemctl?enable?docker

          通過(guò)以上指令即可成功安裝Docker并啟動(dòng),接下來(lái)通過(guò)Docker運(yùn)行Jenkins:

          docker?run?\
          ??-d?\
          ??--rm?\
          ??-u?root?\
          ??-p?8080:8080?\
          ??-v?/home/jenkins-data:/var/jenkins_home?\
          ??-v?/var/run/docker.sock:/var/run/docker.sock?\
          ??-v?/opt/develop_resource/apache-maven-3.6.3:/usr/local/maven?\
          ??-v?"$HOME":/home?\
          ??jenkinsci/blueocean

          執(zhí)行上述指令Docker會(huì)自動(dòng)拉取Jenkins的鏡像并啟動(dòng),因?yàn)槲覀円渴鸬氖荢pringBoot,所以需要準(zhǔn)備JDK和Maven環(huán)境,不過(guò)該Jenkins鏡像自帶了JDK環(huán)境,只需準(zhǔn)備一下Maven即可,首先下載Maven壓縮包:

          wget?http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz

          然后解壓:

          tar?-zxvf?apache-maven-3.6.3-bin.tar.gz

          解壓之后千萬(wàn)要注意Maven所在的目錄,這是我的目錄:

          /opt/develop_resource/apache-maven-3.6.3

          將它掛載到容器的目錄里,-v /opt/develop_resource/apache-maven-3.6.3:/usr/local/maven這一條指令中的Maven目錄千萬(wàn)記得換成自己的?,F(xiàn)在,我們可以運(yùn)行剛才的指令啟動(dòng)Jenkins了,通過(guò)docker ps指令可以查看容器是否啟動(dòng):

          [root@10?/]#?docker?ps
          CONTAINER?ID???IMAGE?????????????????COMMAND??????????????????CREATED??????????STATUS?????????PORTS??????????????????????????????????????????????????NAMES
          dfa1b8b2c7a3???jenkinsci/blueocean???"/sbin/tini?--?/usr/…"???15?seconds?ago???Up?9?seconds???0.0.0.0:8080->8080/tcp,?:::8080->8080/tcp,?50000/tcp???condescending_meitner

          容器正在運(yùn)行,接下來(lái)訪問(wèn)一下看看,使用服務(wù)器的ip加端口8080:

          管理員密碼可以在Jenkins的啟動(dòng)日志中查看,使用docker logs dfa1b8b2c7a3查看日志:

          image.png

          密碼就是紅框中的字符串,注意紅框下的一段提示:

          This?may?also?be?found?at:?/var/jenkins_home/secrets/initialAdminPassword

          意思是你可以在/var/jenkins_home/secrets/initialAdminPassword這個(gè)文件中查看到管理員密碼,不過(guò)這是Jenkins容器內(nèi)的目錄,我們?cè)趩?dòng)Jenkins的就掛載了Jenkins的關(guān)鍵目錄/var/jenkins_home,宿主機(jī)目錄為/home/jenkins-data,所以可以使用如下指令查看管理員密碼:

          cat?/home/jenkins-data/secrets/initialAdminPassword

          得到密碼后輸入到Jenkins頁(yè)面解鎖Jenkins,點(diǎn)擊安裝推薦的插件:

          image.png

          等待插件安裝完成,完成后就可以創(chuàng)建用戶了:

          image.png

          然后下一步:

          image.png

          無(wú)需修改,直接進(jìn)入下一步:

          image.png

          到這一步Jenkins平臺(tái)就可以正式使用了。

          Jenkins平臺(tái)配置

          接下來(lái)就是對(duì)Jenkins平臺(tái)的配置,首先配置Maven:

          image.png

          按步驟點(diǎn)擊,即可進(jìn)入系統(tǒng)配置,在全局屬性中進(jìn)行配置:

          image.png

          勾選環(huán)境變量,然后點(diǎn)擊新增:

          image.png

          還記得我們?cè)谶\(yùn)行Jenkins容器時(shí)掛載的Maven目錄嗎?掛載到Jenkins容器中的目錄就是/usr/local/maven,如果實(shí)在搞不懂的你就保持和我的配置一樣即可。以同樣的方式再配置一個(gè):

          image.png

          PATH+EXTRA的作用是讓原來(lái)PATH變量中的環(huán)境不丟失,最后點(diǎn)擊保存。

          Maven配置完成后,需要配置Gitee:

          image.png

          進(jìn)入插件管理:

          image.png

          點(diǎn)擊可選插件,選中Gitee,然后點(diǎn)擊Install without restart進(jìn)行安裝,等待安裝完成即可,Gitee的相關(guān)配置我們放到后面講。

          創(chuàng)建SpringBoot應(yīng)用

          這一步就非常簡(jiǎn)單了,創(chuàng)建一個(gè)簡(jiǎn)單的SpringBoot應(yīng)用進(jìn)行測(cè)試,控制器代碼:

          @RestController
          public?class?HelloController?{

          ????@GetMapping("/hello")
          ????public?String?hello(){
          ????????return?"Hello?World!";
          ????}
          }

          配置文件:

          server:
          ??port:?8000

          并在main下新建docker文件夾,在docker文件夾下新建Dockefile文件,內(nèi)容如下:

          #?指定是基于哪個(gè)基礎(chǔ)鏡像
          FROM?java:8

          #?作者信息
          MAINTAINER?wwj

          #?掛載點(diǎn)聲明
          VOLUME?/tmp

          #?將本地的一個(gè)文件或目錄,拷貝到容器的文件或目錄里
          ADD?/target/demo-0.0.1-SNAPSHOT.jar?springboot.jar

          #shell腳本
          RUN?bash?-c?'touch?/springboot.jar'

          #?將容器的8000端口暴露,給外部訪問(wèn)。
          EXPOSE?8000

          #?當(dāng)容器運(yùn)行起來(lái)時(shí)執(zhí)行使用運(yùn)行jar的指令
          ENTRYPOINT?["java",?"-jar",?"springboot.jar"]

          這里需要注意的是ADD指令的編寫(xiě),當(dāng)SpringBoot應(yīng)用打包完成后,其jar包會(huì)被放在target目錄下:

          image.png

          所以需要指定該文件的位置,使用ADD指令將其放入待構(gòu)建的容器中,接著在Gitee中新建一個(gè)倉(cāng)庫(kù),并將代碼推送到倉(cāng)庫(kù)中。

          image.png

          倉(cāng)庫(kù)名隨便你叫什么,然后將剛才的應(yīng)用推送上去:

          image.png

          Gitee配置

          推送完成后,回到Jenkins管理界面,我們來(lái)完成Gitee的配置,打開(kāi)系統(tǒng)配置:

          找到Gitee配置,填入對(duì)應(yīng)的信息:

          image.png

          點(diǎn)擊添加按鈕添加一個(gè)Jenkins憑證:

          image.png

          選擇Gitee API 令牌:

          image.png

          私人令牌的獲取地址 https://gitee.com/profile/personal_access_tokens:

          image.png

          點(diǎn)擊生成新令牌:

          image.png

          輸入令牌描述然后點(diǎn)提交:

          image.png

          現(xiàn)在就得到了一串私人令牌,將它復(fù)制好后妥善保存,因?yàn)殛P(guān)閉了這個(gè)對(duì)話框就再也看不到了。憑證添加完成后,在證書(shū)令牌位置選擇剛剛添加的令牌:

          image.png

          最后保存。

          新建自動(dòng)化部署任務(wù)

          配置完成,接下來(lái)新建一個(gè)任務(wù),點(diǎn)擊新建Item:

          image.png

          隨便輸入一個(gè)任務(wù)名稱,并選擇Freestyle project

          image.png

          在源碼管理處勾選Git,并填入項(xiàng)目地址:

          image.png

          在構(gòu)建觸發(fā)器位置勾選它:

          image.png

          在構(gòu)建觸發(fā)器最底部位置點(diǎn)擊生成Gitee WebHook密碼:

          image.png

          然后打開(kāi)Gitee項(xiàng)目中的WebHooks:

          image.png

          點(diǎn)擊添加webHook:

          image.png

          此處的URL需要填入一個(gè)公網(wǎng)IP,所以如果你是用的虛擬機(jī),就需要用內(nèi)網(wǎng)穿透工具映射一下,如果是云服務(wù)器的就不需要了:

          image.png

          至于URL應(yīng)該填什么,在此處有說(shuō)到:

          image.png

          所以只需調(diào)換一下ip地址即可:

          image.png

          填寫(xiě)完成后點(diǎn)擊添加,Gitee便會(huì)發(fā)送一個(gè)Post請(qǐng)求到Jenkins,如果請(qǐng)求結(jié)果如下所示,則配置成功了:

          image.png

          重新回到Jenkins管理界面,繼續(xù)勾選構(gòu)建觸發(fā)器下的輪詢SCM,輸入輪詢頻率:

          image.png

          最后在構(gòu)建位置下增加構(gòu)建步驟,選擇執(zhí)行shell:

          image.png

          寫(xiě)入shell腳本:

          image.png

          腳本如下:

          #!/bin/bash?-il
          docker?rm?-f?app_docker
          sleep?1
          docker?rmi?-f?app_docker:1.0
          sleep?1
          mvn?clean?install?-Dmaven.test.skip=true
          sleep?1
          docker?build?-t?app_docker:1.0?-f?./src/main/docker/Dockerfile?.
          sleep?1
          docker?run?-d?-p?8000:8000?--name?app_docker?app_docker:1.0

          該腳本表示刪除正在運(yùn)行的app_docker容器,并刪除app_docker:1.0鏡像,然后使用mvn命令打包從Gitee拉取來(lái)的項(xiàng)目代碼,接著使用項(xiàng)目中的Dockerfile文件構(gòu)建出一個(gè)鏡像,名稱為app_docker:1.0,最后運(yùn)行該鏡像。

          測(cè)試一下

          最后點(diǎn)擊保存,部署任務(wù)就創(chuàng)建完成了,我們來(lái)測(cè)試一下有沒(méi)有問(wèn)題:

          image.png

          點(diǎn)擊立即構(gòu)建,Jenkins會(huì)立馬進(jìn)行一次構(gòu)建,查看控制臺(tái)輸出:

          image.png

          此時(shí)表名部署成功了,訪問(wèn)一下試試:

          image.png

          沒(méi)有問(wèn)題,接下來(lái)修改一下代碼,并推送到Gitee,看看Jenkins會(huì)不會(huì)自動(dòng)部署呢?大家可以自己嘗試一下。

          ?????

          1、來(lái)自谷歌的開(kāi)發(fā)心得:所有SQL和代碼,都沒(méi)必要藏著掖著

          2、用了這么久的 Chrome,你不會(huì)還沒(méi)掌握這個(gè)功能吧?

          3、一個(gè)比SpringBoot快44倍的Java框架

          4、QQ最近上線的兩個(gè)新功能,把我人都看傻了!

          5、SpringBoot 三大開(kāi)發(fā)工具,你都用過(guò)么?

          點(diǎn)分享

          點(diǎn)收藏

          點(diǎn)點(diǎn)贊

          點(diǎn)在看

          瀏覽 62
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  久久亚洲色免费视频 | 日韩理论视频在线观看 | 亚洲阿v视频 | 一区二区无码在线播放入口 | 人妻巨大乳HD无码 |