跳至主要内容

[Deploy] 整合 semantic-release 和 travis-ci 自動化部屬

keywords: deploy, publish, release, CLI, CI, semantic-release, changelog

STEP

  1. 讓 Travis CI 擁有 Github Repository 的存取權限 @ Github App Installation
  2. 安裝 semantic-release CLI
  3. 透過 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)中。
  1. 安裝 @semantic-release/changelog@semantic-release/git
# @semantic-release/changelog 用來產生 changelog 的檔案
# @semantic-release/git 用來將產生的 changelog 檔案新增到 git 中
$ npm install @semantic-release/changelog @semantic-release/git -D
  1. 在根目錄建立 .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 是不可以的!

  1. 建立 .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"
]
}