[Deploy] Travis CI 筆記
keywords: deploy
, publish
, release
, CI
, 持續整合
Core Concepts for Beginners @ Travis CI Docs
當你執行 build 時,Travis CI 會複製一份 Github 專案到全新的虛擬環境上,接著執行一系列的任務(task)來打包和測試你的程式碼,如果有任何的任務失敗的話,該 build 過程會被視為 broken;如果沒有任務失敗,則該 build 過程會被視為 passed ,Travis CI 會將你的程式碼進行部署(deploy)。
- phase:在 job 中一系列的執行步驟,舉例來說包含
install
phase、script
phase,和deploy
phase。 - job:從複製專案到虛擬環境,並執行一系列 phases 的自動化歷程。如果
script
phase 回傳的值不是 0 的話,job 則視為失敗。 - build :一組一組的 jobs,舉例來說,一個 build 可能有兩個 jobs,分別測試不同版本的程式語言。當所有的 job 執行完成(finished)時,該 build 視為完成。
- stage:多組不同的 jobs 同時執行。
Job 的生命週期(Life Cycle)
Travis CI 中的 job 主要由兩個部分組成:
- install: install any dependencies required
- script: run the build script
其中可介入的時間點分別為:
- OPTIONAL Install
apt addons
- OPTIONAL Install
cache components
before_install
install
before_script
script
- OPTIONAL
before_cache
(for cleaning up cache) after_success
orafter_failure
- OPTIONAL
before_deploy
- OPTIONAL
deploy
- OPTIONAL
after_deploy
after_script
加密金鑰(encryption keys)
加密金鑰
$ gem install travis
$ travis login --pro
$ travis encrypt SOMEVAR="secretvalue" --add -r OWNER/REPO
取得 public key
透過 travis
工具取得 public key
$ travis pubkey -r OWNER/PROJECT
在帳戶頁可以取得用來發送 API 的 Token:
# travis-ci.com API v3
curl -H "Authorization: token <TOKEN>" https://api.travis-ci.com/v3/repo/<OWNER>%2f<REPO>/key_pair/generated
# travis-ci.org API v3
curl -H "Authorization: token <TOKEN>" https://api.travis-ci.org/v3/repo/<OWNER>%2f<REPO>/key_pair/generated
其他
避免清除掉 build 好後 dist 資料夾內的檔案
Uploading Files and skip_cleanup @ Travis-CI Docs
在 Travis CI 中,預設會把 build 好的檔案給清除,可以在 deploy
的階段加上 skip_cleanup: false
的參數:
# .travis.yml
# ...
jobs:
include:
- stage: release
node_js: lts/*
script: npm run build
deploy:
provider: script
script: npx -p @semantic-release/changelog -p @semantic-release/git -p semantic-release semantic-release
skip_cleanup: true # 💡加上這句
⚠️ 現在雖然有提到
skip_cleanup
已經 deprecated 了,但這是在 deployment API v2 後,因此現在仍然要加上,參考 Skip_cleanup: true is now deprecated. How to go for gradle publish?。