[Deploy] 整合 semantic-release 和 travis-ci 自動化部屬
keywords: deploy
, publish
, release
, CLI
, CI
, semantic-release
, changelog
STEP
- 讓 Travis CI 擁有 Github Repository 的存取權限 @ Github App Installation
- 安裝 semantic-release CLI
- 透過 semantic-release CLI 執行設置
# 進到專案後
$ semantic-release-cli setup
- 3.1. 輸入 npm 和 github 帳號
- 3-2. 選擇 CI 來源,這裡如果是專案是在
travis-ci.com
的話則選擇Travis CI Pro
;如果是travis-ci.org
則選擇Travis CI
- 3-3. 執行完成後,semantic-release 會幫我們分別在 Github 和 NPM 上產生對應的 Token,並設定在 Travis CI 的專案的設定(settings)的環境變數(Environment Variables)中。
- 安裝
@semantic-release/changelog
和@semantic-release/git
# @semantic-release/changelog 用來產生 changelog 的檔案
# @semantic-release/git 用來將產生的 changelog 檔案新增到 git 中
$ npm install @semantic-release/changelog @semantic-release/git -D
- 在根目錄建立
.travis.yml
# .travis.yml
language: node_js
node_js:
- 12
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 # 若需要在 travis 上執行 build 後才發到 npm 上則要保留這行
⚠️ 檔名一定要是
.travis.yml
才會觸發 Travis CI 執行。.travis.yaml
是不可以的!
- 建立
.releaserc.json
// .releaserc.json
{
"plugins": [
"@semantic-release/commit-analyzer",
"@semantic-release/release-notes-generator",
"@semantic-release/changelog",
[
"@semantic-release/npm",
{
"npmPublish": true // 若想要發佈到 npm 則設為 true
}
],
"@semantic-release/git"
]
}
若不需要發佈到 npm 只需要 changelog 的檔案則可參考:
// .releaserc.json
{
"plugins": [
"@semantic-release/commit-analyzer",
"@semantic-release/release-notes-generator",
"@semantic-release/changelog",
"@semantic-release/git"
]
}