国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答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

背景

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

目標

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

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

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

    步驟一:搭建 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

    稍做解釋:

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

    稍做解釋:

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

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

    編譯前:

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

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

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

    編譯和部署

    編譯和部署直接點擊 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
    主站蜘蛛池模板: 国产成人久久精品区一区二区 | 亚洲日本一区二区三区 | 久久精品一区二区三区不卡牛牛 | 日韩欧美亚洲综合 | 99久久精品国产综合一区 | 久久亚洲精品国产精品婷婷 | 交欧美| 亚洲高清视频一区 | 国产视频网 | 国产午夜精品视频 | 另类在线 | 激情综合亚洲欧美日韩 | 日本精品久久久一区二区三区 | 国产免费一区二区三区 | 国产色在线视频 | 国产91原创| 国产午夜高清一区二区不卡 | 国产91成人精品亚洲精品 | 国产精品3p视频 | 欧美在线免费播放 | 亚洲欧洲综合在线 | 国产成人麻豆精品 | 婷婷在线视频观看 | 一区二区三区在线观看免费 | 一区不卡在线观看 | 99国产精品高清一区二区二区 | 91久久精品国产91久久性色也 | 拍真实国产伦偷精品 | 99这里都是精品 | 国产成人精品三区 | 国产视频一区二区在线观看 | 亚洲精品高清国产一久久 | 极品美女一区二区三区 | 欧美性猛交一区二区三区精品 | 日韩欧美片 | 日韩毛毛片 | 免费精品在线观看 | 亚洲欧洲第一页 | 日韩午夜在线视频 | 久久艹精品 | 一97日本道伊人久久综合影院 |