自動化部署到產線有這幾種方法

結論

- 目前有13 種方法 支持 自動化部署

 

一、Docker (Nginx)

在 Docker 容器中使用 Nginx 部署你的應用。

  1. 安裝 Docker

  2. 在項目根目錄創建 Dockerfile 文件

    FROM node:10
    COPY ./ /app
    WORKDIR /app
    RUN npm install && npm run build
    
    FROM nginx
    RUN mkdir /app
    COPY --from=0 /app/dist /app
    COPY nginx.conf /etc/nginx/nginx.conf
    

     

  3. 在項目根目錄創建 .dockerignore 文件

    設置 .dockerignore 文件能防止 node_modules 和其他中間構建產物被複制到鏡像中導致構建問題。

    **/node_modules
    **/dist
    

      

  4. 在項目根目錄創建 nginx.conf 文件

    Nginx 是一個能在 Docker 容器中運行的 HTTP(s) 服務器。它使用配置文件決定如何提供內容、要監聽的端口等。參閱 Nginx 設置文檔 以瞭解所有可能的設置選項。

    下面是一個簡單的 Nginx 設置文件,它會在 80 端口上提供你的 Vue 項目。頁面未找到 / 404 錯誤使用的是 index.html,這讓我們可以使用基於 pushState() 的路由。

    user  nginx;
    worker_processes  1;
    error_log  /var/log/nginx/error.log warn;
    pid        /var/run/nginx.pid;
    events {
      worker_connections  1024;
    }
    http {
      include       /etc/nginx/mime.types;
      default_type  application/octet-stream;
      log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                        '$status $body_bytes_sent "$http_referer" '
                        '"$http_user_agent" "$http_x_forwarded_for"';
      access_log  /var/log/nginx/access.log  main;
      sendfile        on;
      keepalive_timeout  65;
      server {
        listen       80;
        server_name  localhost;
        location / {
          root   /app;
          index  index.html;
          try_files $uri $uri/ /index.html;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
          root   /usr/share/nginx/html;
        }
      }
    }
    

      

  5. 構建你的 Docker 鏡像
    docker build . -t my-app
    # Sending build context to Docker daemon  884.7kB
    # ...
    # Successfully built 4b00e5ee82ae
    # Successfully tagged my-app:latest
    

      

  6. 運行你的 Docker 鏡像

    這個例子基於官方 Nginx 鏡像,因此已經設置了日誌重定向並關閉了自我守護進程。它也提供了其他有利於 Nginx 在 Docker 容器中運行的默認設置。更多信息參閱 Nginx Docker 倉庫

    docker run -d -p 8080:80 my-app
    curl localhost:8080
    # <!DOCTYPE html><html lang=en>...</html>
    

      

注:推薦此方案

 

二、GitLab Pages

根據 GitLab Pages 文檔的描述,所有的配置都在根目錄中的.gitlab-ci.yml 文件中。下面的範例是一個很好的入門:

# .gitlab-ci.yml 文件應放在你倉庫的根目錄下 

pages: # 必須定義一個名爲 pages 的 job
  image: node:latest
  stage: deploy
  script:
    - npm ci
    - npm run build
    - mv public public-vue # GitLab Pages 的鉤子設置在 public 文件夾
    - mv dist public # 重命名 dist 文件夾 (npm run build 之後的輸出位置)
  artifacts:
    paths:
      - public # artifact path 一定要在 /public , 這樣 GitLab Pages 才能獲取
  only:
    - master

通常, 你的靜態頁面將託管在 https://yourUserName.gitlab.io/yourProjectName 上, 所以你可以創建一個 initial vue.config.js 文件去 更新 BASE_URL 要匹配的值 :

// vue.config.js 位於倉庫的根目錄下
// 確保用 GitLab 項目的名稱替換了 `YourProjectName`

module.exports = {
  publicPath: process.env.NODE_ENV === 'production'
    ? '/yourProjectName/'
    : '/'
}

請閱讀在 GitLab Pages domains 的文檔來學習更多關於頁面部署 URL 的信息。注意,你也可以使用自定義域名

在推送到倉庫之前提交 .gitlab-ci.yml 和 vue.config.js 文件。GitLab CI 的管道將會被觸發: 當成功時候, 到 Settings > Pages 查看關於網站的鏈接。

 

注:此方案支持公司內部代碼存放

 

三、GitHub Pages 

 

使用 Travis CI 自動更新

  1. 仿照上面在 vue.config.js 中設置正確的 publicPath

  2. 安裝 Travis CLI 客戶端:gem install travis && travis --login

  3. 生成一個擁有“repo”權限的 GitHub 訪問令牌

  4. 授予 Travis 訪問倉庫的權限:travis set GITHUB_TOKEN=xxx (xxx 是第三步中的個人訪問令牌)

  5. 在項目根目錄下創建一個 .travis.yml 文件。

    language: node_js
    node_js:
      - "node"
    
    cache: npm
    
    script: npm run build
    
    deploy:
    provider: pages
    skip_cleanup: true
    github_token: $GITHUB_TOKEN
    local_dir: dist
    on:
      branch: master
    

      

  6. 將 .travis.yml 文件推送到倉庫來觸發第一次構建

使用 Nuxt 自動更新

   1. 鏈接

 

注:此方法不用於存放商業代碼,可以做類似 Demo 

 

四、Vercel

Vercel 是一個網站和無服務器 (Serverless) API 雲平臺,你可以使用你的個人域名 (或是免費的 .vercel.app URL) 部署你的 Vue 項目。

方案一:

  步驟一:安裝 Now CLI

  1. 要使用 npm 安裝其命令行界面,運行以下命令:
    npm install -g vercel
    

        

步驟二:部署

  1. 在項目根目錄運行以下命令部署你的應用:
    vercel

 

方案二:

   GitHub 或 GitLab 集成服務

 

注:此方案需要謹慎選擇

 

五、其他

我這邊已經抽出我們會經常用到的方案給到大家,其他的案例請參考 VueCli 給出的其他方案

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章