ワークフローを組み直そう
Enchan1207 opened this issue · comments
何がどうなってるのかもうわけわからんことになってる()
一旦ワークフロー消して、バージョンをPyPI準拠に合わせて各ブランチにpushします
一旦ドキュメントソースも消します
(gh-pagesブランチでやりくりします)
docs
をgitignoreして、ワークフローん中でビルド+生成+コミットまでやればいい…のかな?
もしかすっとコミットすらする必要ないかもしれないね
おけおけ
一旦マージしてワークフローの暴走を止めよう
ユニットテストワークフローを追加
パッケージとしてインストールしないと単体テストができないのはどう考えても何かがおかしいのでここは要修正(sys.pathをいじるだけでいいはずなんだけどなんでそうしないかは謎)
apidoc
なんてあったわねえ…
ドキュメントビルドワークフローを追加
apidocも多分これで問題なく動くと思う
sphinx-multiversionさん!!?!?
あーそうかビルド時に他のブランチの存在見えてないのか(checkoutの仕様的に他のブランチはcloneされない?)…
peaceiris/actions-gh-pages の仕様的に、それまで存在したファイルがリプレースされるらしいので…
そのあたりを自前で作る必要があるわけか
ホームメイドは草
修正
え、きたんじゃね? 一旦やってみるか
忘れてた…
一旦pullしないとダメかな?
mv、デフォルトで置き換えないのかこいつ…
まてよそうなるとdeletion検知できなくなるな??
deletionを検知するには…
やはり一旦rm -rfするのが一番では…?
一旦消して移動して、gitからはadd/delがあったように見せかける作戦!
いやまて変更なかったときcommitに失敗するぞこれ
ありえる…よな 全く同じ内容で実行すれば同じ内容が返るはず…
うーん
シェルってマジでなんでもできるな…()
自動でリリースブランチに飛ぶように あとはバージョン切り替えをどうするかだ
自動バージョニングも考えないとね
次期リリースバージョン番号を算出するスクリプトを別で持たせたほうがいい気がするのですよねぇ…
でもコミットスタイル的に自動算出はかなり難しそう.
FROM="HEAD"
TO="V2.0.6" # previous version
git log $FROM...$TO | grep "^ \[" | gsed -e 's/^ //' | cut -c 2-40 | uniq | gsed -r 's/^(.+?)\].*$/\1/'
を実行することで
Update #85
Modify #85
Update #85
Modify #85
Modify #85
Add #85
Add #85
Update #85
Modify #85
Delete #85
......
こんな感じで拾えるので、これを何かに使えないだろうか
とりあえず
- リポジトリ内のバージョンに関する記述を集約管理し、sedで置換するシェルスクリプト
- 指定したバージョンへ更新し、git commit してくれるシェルスクリプト
があれば 手動更新も自動更新も対応できそう.
アップデート時のコミットメッセージを [Release] v2.0.6...v3.0.0
みたいな感じにすれば、リリースワークフローの前に「自動バージョニングを行うべきか」を判定できる…のか?
問題は「自動リリースをいつ行うか」という点.
Releaseブランチへのmerge時と仮定すると、ブランチにmergeされた際に「[Release]
で指定されたコミットが前バージョンとHEADの間にあれば 手動バージョニングが行われたと判定し、そうでなければ例のスクリプトから算出する」みたいな感じにするか
そうなるとどのみち次期バージョンを算出するシェルを描くことになりますね
ci/*.sh
を作るか…
(正直どこでも使えるスクリプトになりそうなので、これとは完全に別のところで作るのもいいと思います)
とりあえずvercalc.sh
を作ってルートに置いておくので、グローバルで使えるようにするかどうかは後で考えましょう
% ./vercalc.sh | tail -n 20
Analyse commit history from v2.0.6 -> HEAD ...
Commits: 30
Breakdown:
Add 2
Update 10
Modify 14
Delete 2
Fix 2
Calculate version increments...
Recommended new version:
v2.1.0
めっちゃいい感じ
ちゃんとttyかどうか判断して色付けします サイコー
Makefileもいらないよね(誤解を招くだけ
あとはバージョニングスクリプトだ
今のところバージョン情報が書いてあるのは
setup.cfg
src.blueprintpy.core.version
importで読むよう修正docs/source/conf.py
.versioning_patterns.sh
みたいなのを作って管理するか、versioning.sh
で一元的にやるか
二つしかいじるファイルなかったのでversioning.sh
でまとめました
(CSV読んで置換とかやりたかったけど無理)
破壊的変更がないので一旦メインブランチにmergeして、新しいissueを立てよう