Misskeyを頻繁にdev最新に追従したかったのでシェルスクリプトを書いた
このスクリプトでバージョンを更新すると以下のようなバージョン表記になる
fishなのは好みなのだけど、bashならコードを少し書き換える必要がある
言うまでもないがdevelop最新はstableじゃないのでビルドできないとかビルドしても起動しないとかが平気で起こるのでちゃんと直せる人しか使ってはいけない
#!/usr/bin/env fish
alias getchangelog 'git log --pretty=format:"[%ad] %h %an : %s" --date=relative'
alias checkchangelog 'getchangelog HEAD...origin/develop | cat'
function postfromsystem
read text
curl 'http://127.0.0.1/api/notes/create' \
-X 'POST' \
-H 'Content-Type: application/json' \
--data-binary '{"text":"'"$text"'","channelId":null,"poll":null,"cw":null,"localOnly":true,"visibility":"public","reactionAcceptance":"nonSensitiveOnly","i":"***********"}'
end
# system update
apt update -y
apt upgrade -yqq
# pull latest misskey
cd misskey
git fetch --tags
# チェンジログをこねこねする
checkchangelog | postfromsystem
git reset origin/develop --hard
git submodule update --init
# バージョン表記の差し替え
set date (date '+%m.%d')
set hash (git rev-parse --short HEAD)
jq --arg date $date --arg hash $hash '.version += "-devbuild-\($date).\($hash)"' package.json > package.tmp.json
mv package.tmp.json package.json
npx prettier package.json -w
# install, build, migreate, and restart
pnpm i
pnpm build
pnpm migrate
systemctl restart redis-server
systemctl restart misskey
- pullするというかhard resetする対象は origin/develop origin は misskey-dev/misskey である
- dev版だとテキスト(翻訳ファイル)の変更があったときに再ビルドされないので package.json のバージョンを書き換える必要がある
- このときprettierをかけ直さないと差分がガタガタしてぐぬぬってなる
- たまにサブモジュールが増えたりするので initして updateしてある
- テーブルのマイグレーションがあってもいいようにbuildのあとにmigrateする
- 変更点を投稿したいので、postfromsystemという関数を定義している
- getchangelogはgit log をいい感じにフォーマットするやつ
- checkchangelogはHEADからorigin/developの間をgetchangelogするやつ
- checkchangelog | postfromsystem で標準入出力を使って投稿している
この記事は加筆修正リクエスト、コメント歓迎です。