Angular 小試牛刀[2]:CI(travie+firebase)


持續集成(Continuous Integration)是一種軟件開發實踐,即團隊開發成員經常集成它們的工作,通過每個成員每天至少集成一次,也就意味着每天可能會發生多次集成。每次集成都通過自動化的構建(包括編譯,發布,自動化測試)來驗證,從而盡早地發現集成錯誤,減少一些反復的工作等等,使團隊更加有效的開發協作。

持續集成相當於將傳統工業的流水線作業的思想應用到現代的軟件工業中來。不同之處在於,工業流水線最終出來的是一個一個的產品復制體,但是軟件流水線最終出來的是一代一代更新迭代的版本,但是共同點在於:整體產出的效率將極大地增加。

CI解決的問題:

  1. 小步伐的產品迭代
  2. 高頻率的版本發布
  3. 隨時隨地的系統集成
  4. 穩定的系統演進線路圖

前言

在本篇文章中,我們將介紹如何將使用 Angular CLI 構建的 Angular 項目,通過 Travis CI 持續集成以及部署到 Firebase 上面。

它的工作流程大致是這樣的:

  1. 提交代碼到 Github。
  2. 喝一杯咖啡。
  3. TravisCI 開始拉取你的代碼,並安裝所有的依賴。
  4. 執行 Angular CLI 的 Build 命令,生成發布包。
  5. 將發布包部署到 Firebase 上面。

關於項目的創建,就不再多說,可以參考 Angular 初窺門徑[1]:Getting started

Firebase

Firebase是一家實時后端數據庫創業公司,它能幫助開發者很快的寫出Web端和移動端的應用。自2014年10月Google收購Firebase以來,用戶可以在更方便地使用Firebase的同時,結合Google的雲服務。Firebase能讓你的App從零到一。也就是說它可以幫助手機以及網頁應用的開發者輕松構建App。通過Firebase背后負載的框架就可以簡單地開發一個App,無需服務器以及基礎設施。

1.登陸 Firebase 控制台,如圖:

console

2.添加項目

點擊添加項目按鈕,如圖:

create

點擊創建項目按鈕

3.查看Hosting

hosting

到此,部署環境已創建完成。

發布項目

firebase-tools 是一個npm包,用來使用命令行的方式發布項目的工具

安裝firebase-tools

npm install -g firebase-tools

登錄

firebase login

執行完之后,會自動打開瀏覽器,並跳轉到 google 的登錄頁,然后授權給 firebase,如圖:

login

注:推薦使用Proxifier全局代理,只使用瀏覽器代理模式是不行的。

初始化

登錄成功之后,切換到你的項目根目錄,執行以下命令:

firebase init

init

輸入 y 繼續,然后是選擇要初始化的功能,在這里選擇 3-Hosting 就行了:

choice-func

然后還有以下幾個選項:

  • ? Select a default Firebase project for this directory - 選擇你的項目目錄
  • ? What do you want to use as your public directory? (public) - 輸入 dist ,與 Angular-CLI 工具生成的目錄一致。
  • ? Configure as a single-page app (rewrite all urls to /index.html)? (y/N) - 輸入 y,因為我們是 SPA 應用。

初始化完成,我們的項目里多了 .firebasercfirebase.json 兩個文件。

部署

首先使用 Angular-CLI 的 ng build --prod 命令,生成發布文件,然后再執行以下命令:

firebase deploy

deploy

然后在瀏覽器器中打開 Firebase Hosting 的URL,https://zero-admin.firebaseapp.com/dashboard,訪問成功!

獲取部署秘鑰

在部署成功后,我們需要獲取它的秘鑰,用於在 CI 中來自動部署:

firebase login:ci

key

Travis CI

Travis CI 是目前新興的開源持續集成構建項目,它與jenkins,GO的很明顯的特別在於采用yaml格式,簡潔清新獨樹一幟,目前已經支持大部分主流語言了,如:.NET、C、PHP、Ruby、Python、Nodejs、Java、Objective-C等等,Travis CI 與 Github 集成非常緊密,官方的集成測試托管只支持Github項目,不過你也可以通過 Travis CI 開源項目搭建一套你自己的方案。

登錄 Travis CI

首先我們要有一個 Github 賬號,接下來就打開 Travis CI 的 官網 ,然后使用Github進行授權登錄。

login

創建項目

登錄成功后顯示如下:

repos

點擊上圖中的 + 號,選擇我們想要創建持續集成的項目,點擊設置圖標:

tc_repos_add

然后跳轉到設置頁面:

setting

我們勾選 Build only if .travis.yml is present, 並且可以看到 Build PushesBuild Pull Requests 默認是勾選的,意味着將我們推送或者合並一個 Pull Requests 的時候,將出發 Travis CI 的構建任務。最后,我們添加了一個環境變量,Key 為 FIREBASE_TOKEN,Value 是我們之前從 Firebase 中獲取到的,用來在構建成功后部署到 Firebase 中去。

創建 .travis.yml 文件

接下來,在我們的項目中創建一個 .travis.yml 文件,用來配置 Travis CI 的構建步驟:

language: node_js
node_js:
  - "8.1.3"

branches:
  only:
    - master

before_script:
  - npm install -g firebase-tools
  - npm install -g @angular/cli

script:
  - ng build --prod

after_success:
  - firebase deploy --token $FIREBASE_TOKEN

cache:
  directories:
    - $HOME/.npm

notifications:
  email:
    on_failure: change
    on_success: change

before_script:構建之前要運行的腳本,在這里,我們使用 npm 安裝 firebase-tools@angular/cli

script:表示構建的腳本,使用 Angular CLIbuild 命令,來生成部署文件。

cache:表示要緩存的文件,在這里,我們緩存 npm 的資源包。

after_success:構建成功后要執行的腳本,我們是要發布到 Firebase 上面。

notifications:用來配置構建成功或失敗時的通知方式。

更加詳細的配置可以查看 Travis CI官方文檔

開始持續集成

經過上面對 FirebaseTravis CI 的配置,可以開始我們的持續集成了,首先提交代碼到 Github。由於我是在 dev 分支開發,而 Travis CI 中配置的是 master 分支,所以需要合並到 master 分支,才會觸發構建。當我們合並到主分支之后,便可以看到 Travis CI 中的構建日志:

build

等待構建完成,在瀏覽器中打開我們在 Firebase 中部署的域名 zero-admin,可以看到,已更新為我們剛剛提交的版本,大功告成。

總結

本文詳細介紹了 Angular 項目使用 Travis CI 持續集成並部署到 Firebase 的步驟,而 Firebase 需要 VPN 才能訪問,在國內還是多有不便,下次再介紹一下其它的部署方式。
附源碼地址:zero-admin-web


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM