<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        使用Jenkins部署React項目的方法步驟

        來源:懂視網 責編:小采 時間:2020-11-27 22:00:12
        文檔

        使用Jenkins部署React項目的方法步驟

        使用Jenkins部署React項目的方法步驟:背景 公司的前端項目部署方式比較簡單,整個過程基本上是手動的; 目標 通過工具實現以下幾個任務: 編譯、部署自動化; 選擇指定版本進行回滾; 區分不同的分支(環境); 技術方案 選用 jenkins 作為部署工具;也便于后續 CI 的接入; 使用 do
        推薦度:
        導讀使用Jenkins部署React項目的方法步驟:背景 公司的前端項目部署方式比較簡單,整個過程基本上是手動的; 目標 通過工具實現以下幾個任務: 編譯、部署自動化; 選擇指定版本進行回滾; 區分不同的分支(環境); 技術方案 選用 jenkins 作為部署工具;也便于后續 CI 的接入; 使用 do

        背景

        公司的前端項目部署方式比較簡單,整個過程基本上是手動的;

        目標

        通過工具實現以下幾個任務:

      1. 編譯、部署自動化;
      2. 選擇指定版本進行回滾;
      3. 區分不同的分支(環境);
      4. 技術方案

      5. 選用 jenkins 作為部署工具;也便于后續 CI 的接入;
      6. 使用 docker 進行編譯,確保每次編譯的環境的穩定;
      7. 步驟

        步驟一:搭建 Jenkins

        搭建 Jenkins 有很多方案,這里選擇使用 docker 搭建。

        docker-compose.yml 的內容如下:

        version: '3'
        services:
         fejenkins:
         user: root
         image: jenkinsci/blueocean
         ports:
         - "8080:8080"
         - "50000:50000"
         volumes:
         - /data/jenkins_home:/var/jenkins_home
         - /data/nm_cache:/var/nm_cache
         - /var/run/docker.sock:/var/run/docker.sock

        通過 docker-compose up 命令啟動;啟動后通過初始密碼進行第一個用戶的創建和 Jenkins 初始化的一些列操作,初始密碼會打印在 jenkins docker 啟動命令行的輸出中,注意查看。

        當然也可以不使用 docker-compose:

        docker run --rm -u root -v /data/jenkins_home:/var/jenkins_home -v /data/nm_cache:/var/nm_cache -v /var/run/docker.sock:/var/run/docker.sock -p 8080:8080 -p 50000:50000 jenkinsci/blueocean

        稍做解釋:

      8. /data/jenkins_home:/var/jenkins_home /var/jenkins_home 是 jenkinsci image 的默認數據存放路徑,這里將路徑映射到宿主機的指定文件夾;
      9. /data/nm_cache:/var/nm_cache nm_cache 涵義是 node_modules cache,顧名思義,這里是想對編譯所需的 node_modules 做緩存,將緩存文件夾也映射到宿主機;
      10. /var/run/docker.sock:/var/run/docker.sock 這里是將宿主機運行 docker 后產生的 sock 文件映射到了 jenkins container 中。這樣,jenkins 中使用 docker 進行編譯時,其實是使用宿主機的 docker 來運行的,而不是在 docker container 中又啟動了 docker。這里稍微有點繞,若是暫時看不明白,需要找一些深入介紹 docker 的文章閱讀;
      11. 步驟二:配置 Jenkins

        添加 Credentials

        通過 Jenkins 進行 git 操作需要對應 git repo 的權限,這里需要用到有 git repo 權限的密鑰文件。同樣,通過 Jenkins 將編譯產物 scp 到服務器上的時候,也需要服務器的密鑰文件。

        這兩類密鑰文件需要配置在 Jenkins 中,在:Jenkins > Credentials > System > Global credentials (unrestricted) 里進行 Add Credentials 的操作。

        添加 Jenkins Item

        Jenkins > New Item,然后選擇 Pipeline,在下面的 Pipeline 配置區域的 Definition 中選擇 Pipeline script,Script 如下:

        pipeline {
         environment {
         SERVER_IP_1 = "11.22.33.44"
         SERVER_CREDENTIALSID = "abcd1234-abcd-abcd-abcd-abcd1234abcd"
         SERVER_DEPLOY_DIR = "/your/www/path/"
        
         CACHE_DIR = "/var/nm_cache/your_project_name/"
        
         GIT_URL = "git@github.com:example/example.git"
         GIT_BRANCH = "master"
         GIT_CREDENTIALSID = "abcd1234-abcd-abcd-abcd-abcd1234abcd"
         }
         agent none
         stages {
         stage('Checkout code') {
         agent any
         steps {
         git (
         branch: "${GIT_BRANCH}",
         credentialsId: "${GIT_CREDENTIALSID}",
         url: "${GIT_URL}",
         changelog: true
         )
         sh '''
         ls -al
         cache_dir="${CACHE_DIR}"
         cache_nm="${CACHE_DIR}node_modules"
         cache_lock="${CACHE_DIR}yarn.lock"
        
         if [ ! -d "$cache_dir" ]; then mkdir ${cache_dir}; fi
         if [ ! -d "$cache_nm" ]; then mkdir ${cache_nm}; fi
         if [ -d "$cache_nm" ]; then ln -sf ${cache_nm} ./; fi
         if [ -f "$cache_lock" ]; then mv -n ${cache_lock} .; fi
        
         ls -al
         '''
         }
         }
         stage('Build') {
         agent {
         docker {
         image 'node:8-alpine'
         args ''
         }
         }
         steps {
         sh '''
         npm config set registry https://registry.npm.taobao.org
         yarn install
         yarn build
         tar -cvf build.tar build
        
         ls -al
         mv ./yarn.lock ${CACHE_DIR}
         rm -rf ./node_modules
         ls -al
         '''
         archiveArtifacts artifacts: 'build.tar', fingerprint: true
         }
         }
         stage('Deploy') {
         agent any
         steps {
         unarchive mapping: ['build.tar': 'build.tar']
         echo '--- Deploy ---'
        
         sshagent(["${SERVER_CREDENTIALSID}"]) {
         sh "scp -o StrictHostKeyChecking=no build.tar root@${SERVER_IP_1}:${SERVER_DEPLOY_DIR}"
         sh "ssh -o StrictHostKeyChecking=no root@${SERVER_IP_1} \"rm -rf ${SERVER_DEPLOY_DIR}build; tar -xvf ${SERVER_DEPLOY_DIR}build.tar -C ${SERVER_DEPLOY_DIR}\""
         }
        
         }
         }
         }
        }

        稍做解釋:

        這個部署腳本分為三個步驟:

      12. Checkout code(在指定 git 倉庫通過指定證書文件獲取代碼)
      13. Build(通過指定命令進行編譯,將編譯后的產物存檔)
      14. Deploy(通過指定命令部署)
      15. 在 Build 階段前后,我們各做了一些工作,以求每次部署可以復用 node_modules,因為下載 node_modules 的時間可能很長,而并不是每次都會修改 package.json,所以其實 node_modules 大概率可以復用;

        編譯前:

      16. 看指定 node_modules 緩存文件夾是否存在,不存在則新建該文件夾;
      17. 看緩存文件夾中是否有 node_modules 文件夾,如果沒有則新建該文件夾;并且將該文件夾軟連接到當前目錄;
      18. 看緩存文件夾中是否有 yarn.lock 文件,如果有則移動到當前文件夾;
      19. 編譯后:

      20. 移除 node_modules 文件夾的軟連接;
      21. 將 yarn.lock 文件移動到緩存文件夾中;
      22. 這里使用了 yarn install 的某些特性:

      23. 沒有 node_modules 或者 yarn.lock 時會安裝全量依賴;
      24. 有 node_modules 和 yarn.lock 但是 yarn.lock 和 package.json 不匹配時,會安裝所需依賴;
      25. 有 node_modules 和 yarn.lock,且 yarn.lock 和 packge.json 配置時,跳過安裝依賴;
      26. 使用

        編譯和部署

        編譯和部署直接點擊 Build Now 即可;

        回滾

        回滾的本質其實是:重新部署某個歷史版本。在 Build History 找到想要重新部署的版本,點擊 Restart from Stage,在新頁面中選擇 Stage Name 為 Deploy。

        其他

        若是想要進入 docker container 交互,可以通過以下命令

        docker exec -i -t [dockername] /bin/bash

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        使用Jenkins部署React項目的方法步驟

        使用Jenkins部署React項目的方法步驟:背景 公司的前端項目部署方式比較簡單,整個過程基本上是手動的; 目標 通過工具實現以下幾個任務: 編譯、部署自動化; 選擇指定版本進行回滾; 區分不同的分支(環境); 技術方案 選用 jenkins 作為部署工具;也便于后續 CI 的接入; 使用 do
        推薦度:
        標簽: 過程 的步驟 項目
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 国产综合免费精品久久久| 免费手机在线看片| 日韩精品无码一区二区三区免费| 国产免费AV片无码永久免费| 欧美色欧美亚洲另类二区| 精品剧情v国产在免费线观看| 亚洲人成欧美中文字幕| 麻豆国产VA免费精品高清在线| 亚洲av午夜电影在线观看| 免费无码又爽又刺激高潮的视频 | 在线成人爽a毛片免费软件| 亚洲AV第一页国产精品| 13一14周岁毛片免费| 亚洲国产成人va在线观看网址| 成人在线视频免费| 粉色视频成年免费人15次| 亚洲精品亚洲人成在线观看下载| 男女一进一出抽搐免费视频| 亚洲av中文无码乱人伦在线咪咕| 57pao一国产成视频永久免费| 麻豆狠色伊人亚洲综合网站| 免费一级毛片免费播放| 美女巨胸喷奶水视频www免费| 久久亚洲中文字幕精品有坂深雪| 8x成人永久免费视频| 亚洲 欧洲 日韩 综合在线| 国产乱子伦精品免费无码专区| free哆拍拍免费永久视频| 亚洲国产精品久久久久网站| 免费人成视频在线| 国产精品美女久久久免费| 91嫩草私人成人亚洲影院| 免费看AV毛片一区二区三区| 国产精品免费观看视频| 亚洲六月丁香六月婷婷蜜芽| 亚洲AV永久无码精品一区二区国产| 天堂在线免费观看| 亚洲熟妇无码av另类vr影视| 亚洲精品无码不卡在线播放HE| 无码区日韩特区永久免费系列| 日韩毛片免费一二三|