Closed11

モノレポ(ECS,Fargarte)構成で、ブランチ戦略やCHANGELOG自動生成について考える

shuntakashuntaka
$ npm install --save @changesets/cli && npx changeset init

added 197 packages, and audited 1075 packages in 12s

129 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities
🦋  Thanks for choosing changesets to help manage your versioning and publishing
🦋
🦋  You should be set up to start using changesets now!
🦋
🦋  info We have added a `.changeset` folder, and a couple of files to help you out:
🦋  info - .changeset/README.md contains information about using changesets
🦋  info - .changeset/config.json is our default config

生成されたファイル
.changeset/README.md
# Changesets

Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works
with multi-package repos, or single-package repos to help you version and publish your code. You can
find the full documentation for it [in our repository](https://github.com/changesets/changesets)

We have a quick list of common questions to get you started engaging with this project in
[our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md)
.changeset/config.json
{
  "$schema": "https://unpkg.com/@changesets/config@2.2.0/schema.json",
  "changelog": "@changesets/cli/changelog",
  "commit": false,
  "fixed": [],
  "linked": [],
  "access": "restricted",
  "baseBranch": "main",
  "updateInternalDependencies": "patch",
  "ignore": []
}

shuntakashuntaka

spaceで選択できるみたい

$ npx changeset
🦋  Which packages would you like to include? …
◯ unchanged packages
  ◯ app
  ◯ infra

うーん、なんだこれ?と思ったが、各package.jsonのversionから拾ってきてるっぽい

$ npx changeset
🦋  Which packages would you like to include? · app, infra
🦋  Which packages should have a major bump? …
◯ all packages
  ◯ app@0.0.1
  ◯ infra@1.0.0
shuntakashuntaka

なんとなくこんな感じに運用できそう(?)
緩く管理できることを今は求めている

  1. とりあえず何も考えずdevelopで開発する
  2. ある程度開発したらmasterへマージし、ステージング環境へデプロイされる
  3. ステージング環境でテストが完了したら、npx changesetを実行してマイナー、メジャーなどを選択しmasterへpush
  4. 3後自動でchangesets/action@v1があれば、PR作成される(このPRはchangetを全て消し込んで、CHANGELOGにする。あとはpackage.jsonのアプデ)
  5. マージ後、npx changeset tagsでタグうち

やはりアプリによってライフサイクルが異なるので、npmのOSSのライブラリのワークロードとはあってるけどシステムで考えるとややこしいな、、

npx changeset publishがnpmトークンと依存していて、タグ打ちやGitHub Release発行は自前運用になりそう
タグ打ち自体は、npx changeset tagで代用は可能だけど、全てのpakcagesにタグが打たれるから、タグpush時にデプロイみたいなフローでは使うと事故る。

shuntakashuntaka

changeset自体はcommitに紐付いていて、これを毎回書くのはないなと思うし、そうしないようになっているはずだけどどうなんだろう。

shuntakashuntaka

@changesets/changelog-github 使えばPRとのマッピングをしてくれるね。これだと↑の問題はなくなるね。

shuntakashuntaka

こんな感じで運用できそう
前提

changesetsだけのサンプルは以下においた
https://github.com/shuntaka9576/changeset-sandbox


shuntakashuntaka

結構ライフサイクルわかり辛いからちゃんとした記事で書くかな、、、

このスクラップは2022/10/24にクローズされました