整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          Gitlab+Jenkins通過鉤子實(shí)現(xiàn)自動(dòng)部署web項(xiàng)目,圖文詳細(xì)教程

          展參考:Jenkins+Gitlab通過腳本自動(dòng)部署回滾web項(xiàng)目至集群

          一:基礎(chǔ)環(huán)境介紹及準(zhǔn)備

          1):Gitlab服務(wù)器:ubuntu 192.168.152.131 ---參考搭建:Linux安裝gitlab,docker安裝gitlab教程

          2):Jenkins服務(wù)器:ubunu 192.168.152.130 ---參考搭建:linux安裝Jenkins,或docker安裝Jenkins教程

          在服務(wù)器上生成ssh-keygen,用于配置web服務(wù)器和Gitlab服務(wù)器。

          #生成密鑰和私鑰,至于為什么用這些參數(shù)生產(chǎn)密鑰,詳情往下看。
          ssh-keygen -m PEM -t rsa -b 4096
          #將公鑰傳給web服務(wù)器,實(shí)現(xiàn)免密碼連接
          ssh-copy-id -i .ssh/id_rsa.pub root@192.168.152.150

          3):web服務(wù)器:centos 192.168.152.150 ---已搭建好LNMP環(huán)境

          4):開發(fā)者電腦:Windows+key密鑰 (用于提交代碼)

          二:配置Gitlab

          1:在gitlab創(chuàng)建項(xiàng)目Test Project

          2:配置ssh keys

          2.1): 配置一個(gè)開發(fā)者電腦的ssh公鑰到gitlab

          配置一個(gè)開發(fā)者電腦的ssh公鑰到gitlab,這樣才能模擬開發(fā)上傳代碼到gitlab。

          windows生成key過程及git安裝,可參考:Windows下git和github的使用圖文詳細(xì)教程_the丶o(jì)nly的博客-CSDN博客_github win

          在windows測(cè)試clone,和提交代碼。

          #克隆代碼倉(cāng)庫(kù),然后測(cè)試是否能夠上傳代碼到gitlab
          cd D:/code #D盤code文件夾作為測(cè)試代碼文件夾
          #第一次需要配置全局郵箱和姓名,否則commit會(huì)報(bào)錯(cuò)
          git config --global user.email "xxxxxxx@gmail.com"
          git config --global user.name "dev"
          #克隆提交
          git clone git@192.168.152.131:root/test-project.git
          cd test-project/
          echo this is test html > index.html
          git add .
          git commit -m "add 1.txt"
          git push


          注:最新版git 已經(jīng)將默認(rèn)分支master改為main了。所以看到main,而不是master不要太奇怪

          測(cè)試成功,在gitlab也顯示有index.html文件。

          2.2): 配置jenkins公鑰到gitlab

          同理,同樣需要jenkins公鑰,因?yàn)閖enkins也需要拉去gitlab的代碼。

          jenkins服務(wù)器 上查看公鑰并復(fù)制添加到gitlab,并命名為jekins。

          cat .ssh/id_rsa.pub

          三:配置jenkins

          1:插件管理,安裝插件

          jenkins本身沒什么功能,主要是依靠插件來實(shí)現(xiàn)各種強(qiáng)大的功能。

          基本需要添加的插件:Gitlab Hook、Build Authorization Token Root、Publish Over SSH、Gitlab Authentication、Gitlab、Git Parameter

          可以在Manage Jenkins >> Manage Plugins查看管理插件。在Available 選項(xiàng)搜索安裝插件即可。

          安裝完成后,重啟Jenkins。

          2:添加需要部署的web主機(jī)

          Manage Jenkins >> Configure System 中往下翻,找到 Publish over SSH 選項(xiàng),點(diǎn)擊add ssh server。

          在Jenkins服務(wù)器上,查看私鑰,注,是私鑰,不是公鑰。

          cat .ssh/id_rsa

          將私鑰填寫在key位置,還有添加web服務(wù)器相關(guān)信息。

          注:如果測(cè)試報(bào)錯(cuò)如下

          Failed to connect or change directory
          jenkins.plugins.publish_over.BapPublisherException: Failed to add SSH key. Message [invalid privatekey: [B@2e54414f]

          是因?yàn)槟J(rèn)用ssh-keygen命令,默認(rèn)生成了OPENSSH 格式密鑰。而Jenkins暫時(shí)不支持這種私鑰,私鑰開頭結(jié)尾如下:

          -----BEGIN OPENSSH PRIVATE KEY-----
          jPay5FNbtfwDVN91InyRdFrt+14cFD8fM9ItDG4AS4WTajSP0Zdgf2PxcUBiFfMj
          …
          -----BEGIN OPENSSH PRIVATE KEY——

          所以,需要生成rsa密鑰格式的。用開頭說的ssh-keygen加其他參數(shù)生成即可。

          私鑰開頭結(jié)尾如下:

          ----BEGIN RSA PRIVATE KEY-----
          fiUBpwmwPki3PU4jagpIhQuX6qokcLBb/E3B0QXC2Ws+mVwCD64q1nd/zA8=
          .....
          -----END RSA PRIVATE KEY-----

          再次測(cè)試,顯示success,則成功。然后點(diǎn)擊save保存即可。

          3:構(gòu)建任務(wù)項(xiàng)目

          首頁(yè)創(chuàng)建任務(wù)或者一個(gè)項(xiàng)目

          命名為web-project,選擇為freestyle project 自由項(xiàng)目。然后ok確認(rèn)。

          3.1):源碼管理 Source Code Management

          選擇源碼管理,添加gitlab的項(xiàng)目clone地址。

          注:最后路徑選擇分支,我gitlab主分支名字為main,如果是master,則寫master,或者合并的其他分支。

          在add添加用戶

          添加完成后,選擇git用戶,這時(shí)沒有紅色提醒,說明已成功連接

          3.2):構(gòu)建觸發(fā)器 Build Triggers

          現(xiàn)在Build Triggers,勾選build when....,其他默認(rèn),并記下鏈接http://192.168.152.130:8080/project/web-project

          點(diǎn)擊高級(jí) advance 選項(xiàng)。

          勾選filter branches regex選擇,填寫分支,生產(chǎn)token。其他默認(rèn)

          3.3):構(gòu)建 Build

          選擇Build 選項(xiàng)。選擇ssh

          添加web服務(wù)器

          添加完畢,最后save保存。

          四:再次配置Gitlab

          1:添加鉤子webhooks.

          選擇自己的項(xiàng)目Test Project,在設(shè)置setting里,選擇鉤子webhooks.

          填寫剛才記下的http://192.168.152.130:8080/project/web-project和token值。

          最后Add webhook完成:

          2:如添加失敗,報(bào)錯(cuò),更改Network

          注:如填寫失敗提示Url is blocked: Requests to the local network are not allowed

          還需更改Network選項(xiàng)。

          3:測(cè)試鉤子

          添加完成后,下面會(huì)出現(xiàn)鉤子選擇。點(diǎn)擊test中的,push event。

          出現(xiàn)successful,即添加成功。

          在Jenkins也可以看到剛才的測(cè)試時(shí)間信息。

          五:測(cè)試提交代碼是否會(huì)部署到遠(yuǎn)程主機(jī)

          在開發(fā)電腦上測(cè)試提交,我這里為Windows電腦測(cè)試。

          打開Git Bash,輸入以下命令:

          #進(jìn)入代碼目錄
          $ cd D:/code
          #進(jìn)入代碼項(xiàng)目目錄
          $ cd test-project/
          #添加內(nèi)容到原測(cè)試網(wǎng)頁(yè)
          $ echo "test jenkins" >> index.html
          $ git add .
          $ git commit -m "test commit"
          #最后提交
          $ git push

          提交成功,回到Jenkins,查看是否構(gòu)建成功:

          綠色顯示構(gòu)建成功,無錯(cuò)誤顯示。回到gitlab查看項(xiàng)目。

          時(shí)間顯示剛才也提交成功,無錯(cuò)誤。最后在瀏覽器輸入web地址測(cè)試,本人配置了web訪問端口8082。所以輸入IP加端口訪問。

          內(nèi)容也已經(jīng)自動(dòng)更新成功。

          完結(jié)撒花!!!

          ?本文介紹使用Jenkins一鍵將NodeJS(Vue)前端項(xiàng)目打包并上傳到生產(chǎn)環(huán)境服務(wù)器,這里使用的是直接打包靜態(tài)頁(yè)面,發(fā)送到遠(yuǎn)程服務(wù)器Nginx配置目錄的方式,首先確保服務(wù)器環(huán)境配置好,安裝Nginx,運(yùn)行目錄,日志存放目錄等。

          一、服務(wù)器環(huán)境配置

          ??Nginx安裝也有多種方式,源碼安裝、yum安裝、Docker安裝等,安裝并不復(fù)雜,我們這里采用Docker安裝的方式,由于習(xí)慣于標(biāo)準(zhǔn)化及存檔,方便在不同服務(wù)器部署相同的環(huán)境,我們這里使用了Docker Compose來定義Nginx容器配置信息。

          1. Nginx的docker-compose-nginx.yml定義文件編寫

          ??Docker及Docker Compose安裝配置,前面有詳細(xì)介紹,這里不再贅述,以下是Nginx容器的Docker Compose定義文件內(nèi)容:

          version: '3'
          services:
              ##nginx配置
              nginx:
                image: nginx:latest
                restart: always
                container_name: nginx
                environment:
                  - TZ=Asia/Shanghai
                ports:
                   #端口映射,前面是宿主機(jī)端口,后面是服務(wù)端口
                  - 80:80
                  - 443:443
                volumes:
                  - /data/container/nginx/html:/nginx/html
                  - /data/container/nginx/www:/var/www
                  - /data/container/nginx/logs:/var/log/nginx
                  - /data/container/nginx/etc:/etc/nginx
                  - /data/container/nginx/etc/nginx.conf:/etc/nginx/nginx.conf
                  - "/etc/localtime:/etc/localtime"
                  - "/usr/share/zoneinfo/Asia/Shanghai:/etc/timezone"
                  #若用到ssl,可以引入
                  - /bxl/container/nginx/ssl:/nginx/ssl
          

          部分參數(shù)說明:

          • ports:端口映射,前面是宿主機(jī)端口,后面是容器內(nèi)部服務(wù)端口
          • volumes:目錄映射,前面是宿主機(jī)目錄,后面是容器內(nèi)部目錄

          2. 部署及備份目錄準(zhǔn)備

          • 新建 /opt/tmp 目錄,用于Jenkins打包后,通過 Publish Over SSH插件將包傳輸?shù)椒?wù)器的臨時(shí)目錄(如果前面創(chuàng)建過,這里無需再創(chuàng)建)。
          • 新建 /opt/bak 目錄,用于存儲(chǔ)所有部署過的包備份,方便后續(xù)版本回滾。此目錄可能會(huì)占用很大空間,所以需要選擇一個(gè)磁盤空間大的掛載目錄(如果前面創(chuàng)建過,這里無需再創(chuàng)建)。
          • 新建 /opt/script 目錄,用于Jenkins將包傳輸完成之后,執(zhí)行安裝、備份操作的相關(guān)命令腳本(如果前面創(chuàng)建過,這里無需再創(chuàng)建)。
          • 新建 /data/container/nginx/html,用與存放發(fā)布后的靜態(tài)頁(yè)面。
          • 新建 /data/container/nginx/www,映射Nginx容器內(nèi)的/var/www目錄。
          • 新建 /data/container/nginx/logs,映射Nginx容器內(nèi)的/var/log/nginx目錄,存放nginx運(yùn)行日志。
          • 新建 /data/container/nginx/etc,映射Nginx容器內(nèi)的/etc/nginx目錄
          • 新建 /data/container/nginx/etc/nginx.conf,映射Nginx容器內(nèi)的/etc/nginx/nginx.conf配置文件
          • 新建 /bxl/container/nginx/ssl,映射Nginx容器內(nèi)的/nginx/ssl目錄
          mkdir -p /opt/tmp /opt/bak /opt/script /data/container/nginx/html /data/container/nginx/www /data/container/nginx/logs  /data/container/nginx/etc  /bxl/container/nginx/ssl
          
          chmod -R 777 /opt/tmp /opt/bak /opt/script /data/container/nginx/html /data/container/nginx/www /data/container/nginx/logs  /data/container/nginx/etc  /bxl/container/nginx/ssl

          3.根據(jù)系統(tǒng)部署要求編寫Nginx配置文件nginx.conf,以下是簡(jiǎn)單的配置方法,正常情況下https請(qǐng)求還需要配置ssl證書,還有ipv6配置等,后面詳細(xì)講解Nginx配置。一定要將修改后的nginx.conf文件放到/data/container/nginx/etc/目錄下,否則nginx啟動(dòng)時(shí)會(huì)報(bào)錯(cuò)找不到配置文件。

              server {
                  listen 80;
                  server_name  域名;
          
                  gzip on;
                  gzip_buffers 32 4K;
                  gzip_comp_level 6;
                  gzip_min_length 100;
                  gzip_types application/javascript text/css text/xml text/plain application/x-javascript image/jpeg image/gif image/png;
                  gzip_disable "MSIE [1-6]\."; 
                  gzip_vary on;
          
                  #charset koi8-r;
          
                  access_log  /var/log/nginx/portal.access.log  main;
          
                  location / {
                          root /nginx/html/gitegg_portal;
                          try_files $uri $uri/ /index.html;
                          index  index.html index.htm;
                  }
          
                  location /gitegg-api/ {
                      proxy_set_header Host $http_host;               
                      proxy_set_header X-Real-Ip $remote_addr;
                      proxy_set_header REMOTE-HOST $remote_addr;
                      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                      proxy_pass http://172.17.0.1:8080/;
                  }
              }
          

          4. 部署腳本編寫說明

          • 定義入?yún)ⅲ梢酝ㄟ^Jenkins任務(wù)將參數(shù)傳入腳本中,我們定義了下面2個(gè)參數(shù):
            project_name="portal" : 服務(wù)名稱
            portal_home="/data/container/nginx/html" : 靜態(tài)頁(yè)面路徑
          • 對(duì)參數(shù)進(jìn)行檢查,是否未傳入?yún)?shù),這里根據(jù)自己的實(shí)際情況判斷,比如必須傳入哪些參數(shù),就設(shè)置參數(shù)的個(gè)數(shù)不能小于幾。
          #param validate
          if [ $# -lt 1 ]; then  
            echo "you must use like this : ./publish_portal.sh <project_namename> [portal home dir]"  
            exit  
          fi
          
          • 入?yún)①x值,如果有參數(shù)傳入,則取服務(wù)參數(shù),如果沒有參數(shù)傳入則取默認(rèn)值
          if [ "$1" != "" ]; then
             project_name="$1"
          fi
          if [ "$2" != "" ]; then
             portal_home="$2"
          fi
          
          • 刪除原部署的靜態(tài)文件,解壓當(dāng)前發(fā)布包
          # 刪除
          rm -rf "$portal_home"/index.html "$portal_home"/favicon.ico "$portal_home"/_app.config.js "$portal_home"/logo.png "$portal_home"/resource/ "$portal_home"/assets/
          # 解壓
          cd /opt/tmp/portal
          tar -zxvf portal.tar.gz
          
          
          • 備份當(dāng)前發(fā)布的靜態(tài)文件包
          #bak project_name
          BAK_DIR=/opt/bak/portal/$project_name/`date +%Y%m%d`
          mkdir -p "$BAK_DIR"
          cp /opt/tmp/portal/portal.tar.gz "$BAK_DIR"/"$project_name"_`date +%H%M%S`.tar.gz
          #remove tmp
          rm -rf portal.tar.gz
          
          • 將解壓的靜態(tài)文件copy到Nginx目錄下
          #copy portal code
          cp -r * "$portal_home"
          • 刪除臨時(shí)文件
          #remove tmp
          rm -rf index.html favicon.ico _app.config.js logo.png resource assets
          • 打印執(zhí)行完成的命令
          echo "Portal is starting,please try to access $project_name conslone url"
          • 完整的安裝部署腳本
          project_name="portal"
          portal_home="/data/container/nginx/html"
          #param validate
          if [ $# -lt 1 ]; then  
            echo "you must use like this : ./publish_portal.sh <project_namename> [portal home dir]"  
            exit  
          fi
          if [ "$1" != "" ]; then
             project_name="$1"
          fi
          if [ "$2" != "" ]; then
             portal_home="$2"
          fi
          
          echo "portal code copy"
          #publish project_name
          echo "$project_name publishing"
          rm -rf "$portal_home"/index.html "$portal_home"/favicon.ico "$portal_home"/_app.config.js "$portal_home"/logo.png "$portal_home"/resource/ "$portal_home"/assets/
          cd /opt/tmp/portal
          tar -zxvf portal.tar.gz
          #bak project_name
          BAK_DIR=/opt/bak/portal/$project_name/`date +%Y%m%d`
          mkdir -p "$BAK_DIR"
          cp /opt/tmp/portal/portal.tar.gz "$BAK_DIR"/"$project_name"_`date +%H%M%S`.tar.gz
          #remove tmp
          rm -rf portal.tar.gz
          #copy portal code
          cp -r * "$portal_home"
          #remove tmp
          rm -rf index.html favicon.ico _app.config.js logo.png resource assets
          #start portal
          echo "Portal is starting,please try to access $project_name conslone url"
          • 將部署腳本上傳到服務(wù)器的/opt/script目錄下,并賦予可執(zhí)行權(quán)限
          chmod 755 publish_portal.sh

          二、新建Jenkins配置打包任務(wù),部署打包后的Vue頁(yè)面

          1. Dashboard > 新建任務(wù),輸入任務(wù)名稱,選擇“構(gòu)建一個(gè)自由風(fēng)格的軟件項(xiàng)目”,點(diǎn)擊確定。



          2. 項(xiàng)目配置,進(jìn)入到任務(wù)配置頁(yè)

          • 丟棄舊的構(gòu)建 :這里在保持構(gòu)建的最大個(gè)數(shù)填寫5,當(dāng)然可以根據(jù)自己情況填寫,否則舊的構(gòu)建包會(huì)一直存在占用磁盤空間。

          • 源碼管理:配置git代碼地址、用戶名密碼和版本分支,如果是需要用戶名密碼的git庫(kù),那么下面需要選擇訪問的用戶名密碼,這里一定要使用用戶名密碼方式,使用token的方式無法選中。可以在下方add,也可以在Jenkins全局Credentials 中添加,方便其它任務(wù)使用。

          • 構(gòu)建觸發(fā)器:可選可不選,這個(gè)根據(jù)自己的需求選擇,任務(wù)在什么情況下出發(fā)構(gòu)建。

          • 構(gòu)建環(huán)境:這里選擇Provide Node & npm bin/ folder to PATH,選擇我們?cè)谙到y(tǒng)配置中配置的Node版本。

          • Build Steps:選擇執(zhí)行shell,在shell窗口中輸入需要執(zhí)行的打包命令。

          • shell腳本完整內(nèi)容:
          echo $PATH
          node -v
          pnpm -v
          pnpm install
          pnpm run build
          cd dist
          rm -rf portal.tar.gz
          tar -zcvf portal.tar.gz *
          cd ../
          
          • 構(gòu)建后操作:選擇構(gòu)建后將包發(fā)送到服務(wù)器

          • Post Steps:將打包后的文件發(fā)送到服務(wù)器,并執(zhí)行設(shè)置好的腳本,這里選擇Run only if build succeeds,當(dāng)構(gòu)建成功時(shí)Post。

          • Exec command:將打好的包發(fā)布到環(huán)境之后,在環(huán)境上執(zhí)行的部署腳本命令。/opt/script/publish_portal.sh 是腳本文件、portal 是項(xiàng)目名稱、/data/container/portal 是前端代碼存放路徑。
          /opt/script/publish_portal.sh portal /data/container/portal

          3. 運(yùn)行構(gòu)建任務(wù)

          • 立即構(gòu)建

          • 查看構(gòu)建日志:點(diǎn)擊立即構(gòu)建之后,下方會(huì)出現(xiàn)進(jìn)度條,點(diǎn)擊進(jìn)度條就可以進(jìn)入構(gòu)建日志界面。

          4. 構(gòu)建成功后,下方會(huì)給出構(gòu)建成功提示,此時(shí)登錄遠(yuǎn)程服務(wù)器查看文件是否部署成功即可。

          任何簡(jiǎn)單操作的背后,都有一套相當(dāng)復(fù)雜的機(jī)制。本文將以SpringBoot應(yīng)用的在Docker環(huán)境下的打包部署為例,詳細(xì)講解如何使用Jenkins一鍵打包部署SpringBoot應(yīng)用。

          Jenkins簡(jiǎn)介

          Jenkins是開源CI&CD軟件領(lǐng)導(dǎo)者,提供超過1000個(gè)插件來支持構(gòu)建、部署、自動(dòng)化,滿足任何項(xiàng)目的需要。我們可以用Jenkins來構(gòu)建和部署我們的項(xiàng)目,比如說從我們的代碼倉(cāng)庫(kù)獲取代碼,然后將我們的代碼打包成可執(zhí)行的文件,之后通過遠(yuǎn)程的ssh工具執(zhí)行腳本來運(yùn)行我們的項(xiàng)目。

          Jenkins的安裝及配置

          Docker環(huán)境下的安裝

          • 下載Jenkins的Docker鏡像:
          docker pull jenkins/jenkins:lts
          復(fù)制代碼
          • 在Docker容器中運(yùn)行Jenkins:
          docker run -p 8080:8080 -p 50000:5000 --name jenkins \
          -u root \
          -v /mydata/jenkins_home:/var/jenkins_home \
          -d jenkins/jenkins:lts
          復(fù)制代碼

          Jenkins的配置

          • 運(yùn)行成功后訪問該地址登錄Jenkins,第一次登錄需要輸入管理員密碼:http://192.168.6.132:8080/



          • 使用管理員密碼進(jìn)行登錄,可以使用以下命令從容器啟動(dòng)日志中獲取管理密碼:
          docker logs jenkins
          復(fù)制代碼
          • 從日志中獲取管理員密碼:



          • 選擇安裝插件方式,這里我們直接安裝推薦的插件:



          • 進(jìn)入插件安裝界面,聯(lián)網(wǎng)等待插件安裝:



          • 安裝完成后,創(chuàng)建管理員賬號(hào):



          • 進(jìn)行實(shí)例配置,配置Jenkins的URL:



          • 點(diǎn)擊系統(tǒng)管理->插件管理,進(jìn)行一些自定義的插件安裝:



          • 確保以下插件被正確安裝: 根據(jù)角色管理權(quán)限的插件:Role-based Authorization Strategy 遠(yuǎn)程使用ssh的插件:SSH plugin
          • 通過系統(tǒng)管理->全局工具配置來進(jìn)行全局工具的配置,比如maven的配置:



          • 新增maven的安裝配置:



          • 在系統(tǒng)管理->系統(tǒng)配置中添加全局ssh的配置,這樣Jenkins使用ssh就可以執(zhí)行遠(yuǎn)程的linux腳本了:



          角色權(quán)限管理

          我們可以使用Jenkins的角色管理插件來管理Jenkins的用戶,比如我們可以給管理員賦予所有權(quán)限,運(yùn)維人員賦予執(zhí)行任務(wù)的相關(guān)權(quán)限,其他人員只賦予查看權(quán)限。

          • 在系統(tǒng)管理->全局安全配置中啟用基于角色的權(quán)限管理:



          • 進(jìn)入系統(tǒng)管理->Manage and Assign Roles界面:



          • 添加角色與權(quán)限的關(guān)系:



          • 給用戶分配角色:



          打包部署SpringBoot應(yīng)用

          這里我們使用mall-learning項(xiàng)目中的mall-tiny-jenkins模塊代碼來演示下如何使Jenkins一鍵打包部署SpringBoot應(yīng)用。

          將代碼上傳到Git倉(cāng)庫(kù)

          • 首先我們需要安裝Gitlab(當(dāng)然你也可以使用Github或者Gitee),然后將mall-tiny-jenkins中的代碼上傳到Gitlab中去,Gitlab的使用請(qǐng)參考:10分鐘搭建自己的Git倉(cāng)庫(kù)
          • mall-tiny-jenkins項(xiàng)目源碼地址:github.com/macrozheng/…
          • 上傳完成后Gitlab中的展示效果如下:



          • 有一點(diǎn)需要注意,要將pom.xml中的dockerHost地址改成你自己的Docker鏡像倉(cāng)庫(kù)地址:



          執(zhí)行腳本準(zhǔn)備

          • 將mall-tiny-jenkins.sh腳本文件上傳到/mydata/sh目錄下,腳本內(nèi)容如下:
          #!/usr/bin/env bash
          app_name='mall-tiny-jenkins'
          docker stop ${app_name}
          echo '----stop container----'
          docker rm ${app_name}
          echo '----rm container----'
          docker run -p 8088:8088 --name ${app_name} \
          --link mysql:db \
          -v /etc/localtime:/etc/localtime \
          -v /mydata/app/${app_name}/logs:/var/logs \
          -d mall-tiny/${app_name}:1.0-SNAPSHOT
          echo '----start container----'
          復(fù)制代碼
          • 給.sh腳本添加可執(zhí)行權(quán)限:
          chmod +x ./mall-tiny-jenkins.sh  
          復(fù)制代碼
          • windows下的.sh腳本上傳到linux上使用,需要修改文件格式,否則會(huì)因?yàn)橛刑厥飧袷酱嬖诙鵁o法執(zhí)行:
          #使用vim編輯器來修改
          vi mall-tiny-jenkins.sh
          # 查看文件格式,windows上傳上來的默認(rèn)為dos
          :set ff 
          #修改文件格式為unix
          :set ff=unix 
          #保存并退出
          :wq
          復(fù)制代碼
          • 執(zhí)行.sh腳本,測(cè)試使用,可以不執(zhí)行:
          ./mall-tiny-jenkins.sh
          復(fù)制代碼

          在Jenkins中創(chuàng)建執(zhí)行任務(wù)

          • 首先我們需要新建一個(gè)任務(wù):

          • 設(shè)置任務(wù)名稱后選擇構(gòu)建一個(gè)自由風(fēng)格的軟件項(xiàng)目:



          • 然后在源碼管理中添加我們的git倉(cāng)庫(kù)地址:http://192.168.6.132:1080/macrozheng/mall-tiny-jenkins



          • 此時(shí)需要添加一個(gè)憑據(jù),也就是我們git倉(cāng)庫(kù)的賬號(hào)密碼:



          • 填寫完成后選擇該憑據(jù),就可以正常連接git倉(cāng)庫(kù)了;



          • 之后我們需要添加一個(gè)構(gòu)建,選擇調(diào)用頂層maven目標(biāo),該構(gòu)建主要用于把我們的源碼打包成Docker鏡像并上傳到我們的Docker鏡像倉(cāng)庫(kù)去:



          • 選擇我們的maven版本,然后設(shè)置maven命令和指定pom文件位置:



          • 之后添加一個(gè)執(zhí)行遠(yuǎn)程shell腳本的構(gòu)建,用于在我們的鏡像打包完成后執(zhí)行啟動(dòng)Docker容器的.sh腳本:



          • 需要設(shè)置執(zhí)行的shell命令如下:/mydata/sh/mall-tiny-jenkins.sh



          • 之后點(diǎn)擊保存操作,我們的任務(wù)就創(chuàng)建完成了,在任務(wù)列表中我們可以點(diǎn)擊運(yùn)行來執(zhí)行該任務(wù);



          • 我們可以通過控制臺(tái)輸出來查看整個(gè)任務(wù)的執(zhí)行過程:



          • 運(yùn)行成功后,訪問該地址即可查看API文檔:http://192.168.6.132:8088/swagger-ui.html



          作者:MacroZheng
          鏈接:https://juejin.im/post/5df780d3e51d4557ff140b30


          主站蜘蛛池模板: 亚洲视频一区二区三区| 538国产精品一区二区在线| 精品亚洲AV无码一区二区| 久久久久人妻一区精品| 不卡无码人妻一区三区音频| 夜夜添无码试看一区二区三区| 国产一区视频在线| 国产电影一区二区| 国产一区二区精品久久岳√| 一区二区三区四区无限乱码 | 日本在线视频一区二区三区| 日本夜爽爽一区二区三区| 波多野结衣一区二区三区aV高清| 无码人妻精品一区二区三 | 极品少妇伦理一区二区| 国产激情精品一区二区三区| 污污内射在线观看一区二区少妇| 精品无人区一区二区三区在线| 国产免费一区二区三区VR| 中文字幕无码一区二区三区本日 | 国产成人亚洲综合一区| 波多野结衣中文字幕一区| 奇米精品一区二区三区在| 国产精品香蕉在线一区| 人妻无码一区二区视频| 精品少妇ay一区二区三区| 国产成人久久精品麻豆一区| 精品欧洲av无码一区二区 | 久久久无码一区二区三区| 国产萌白酱在线一区二区| 久久国产精品亚洲一区二区| 精品一区二区三区四区电影| 久久久av波多野一区二区| 亚洲A∨精品一区二区三区| 精品人无码一区二区三区| 一区二区三区中文| 日韩在线视频不卡一区二区三区 | 亚洲午夜一区二区电影院| 亚洲免费一区二区| 成人国产精品一区二区网站公司| 国99精品无码一区二区三区|