Closed11
モノレポ(ECS,Fargarte)構成で、ブランチ戦略やCHANGELOG自動生成について考える
CHANGELOG自動生成は、changesetが良さそう。試してみる。
$ 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": []
}
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
参考になる
なんとなくこんな感じに運用できそう(?)
緩く管理できることを今は求めている
- とりあえず何も考えずdevelopで開発する
- ある程度開発したらmasterへマージし、ステージング環境へデプロイされる
- ステージング環境でテストが完了したら、
npx changeset
を実行してマイナー、メジャーなどを選択しmasterへpush - 3後自動で
changesets/action@v1
があれば、PR作成される(このPRはchangetを全て消し込んで、CHANGELOGにする。あとはpackage.jsonのアプデ) - マージ後、
npx changeset tags
でタグうち
やはりアプリによってライフサイクルが異なるので、npmのOSSのライブラリのワークロードとはあってるけどシステムで考えるとややこしいな、、
npx changeset publish
がnpmトークンと依存していて、タグ打ちやGitHub Release発行は自前運用になりそう
タグ打ち自体は、npx changeset tag
で代用は可能だけど、全てのpakcagesにタグが打たれるから、タグpush時にデプロイみたいなフローでは使うと事故る。
changeset自体はcommitに紐付いていて、これを毎回書くのはないなと思うし、そうしないようになっているはずだけどどうなんだろう。
@changesets/changelog-github
使えばPRとのマッピングをしてくれるね。これだと↑の問題はなくなるね。
npm使わない普通のシステムでも利用する光が見えてきた。こちらのスクリプトがちゃんと動く
こんな感じで運用できそう
前提
- ECRはクロスリージョンレプリケーション
- コンテナ系はmainにマージする前に、タグ打ちする(技術的にコミットはブランチに所属しているわけではないので、、あくまで運用の流れとして)
- インフラ系はmainにマージしてステージングテスト後に、タグ打ちする
- CHANGELOG生成には、changesets利用
- GitHub Releaseには、npm設定なしでもCHANGELOGの内容でGitHub Release作ってくれる君を利用(これはタグうちしたら実行されるCI設定にする)
changesetsだけのサンプルは以下においた
GitHubリリースはこんな感じ
CHANGELOGはこんな感じ
結構ライフサイクルわかり辛いからちゃんとした記事で書くかな、、、
このスクラップは2022/10/24にクローズされました