Skip to content

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 23 Aug 06:35
· 21 commits to main since this release
7c2df16

v0.2.0 では 5 コマンドだった clrnd が、ecspresso 互換の 11 コマンドで一通り揃いました。
デプロイの安全性まわりに挙動の変更がいくつかあります。CI で使っている場合は先に目を通してください。

挙動の変更

  • deploy はロールアウトの完了を待ち、失敗すれば非ゼロで終わります。 Cloud Run は
    リビジョンが起動する前にリクエストを受理するため、これまでは壊れたリビジョンでも exit 0 で、
    CI が成功として扱っていました。差分がゼロのときも「今それが健全か」は確認するので、
    失敗したデプロイの後に同じマニフェストで再実行しても成功にはなりません。--no-wait で従来の挙動。
  • diff は既定で Cloud Run に既定値を解決させます。 これにより手書きの最小マニフェストでも
    差分が収束します。dry-run の書き込みを伴うので run.services.update が要ります。
    読み取り専用の権限で回している場合は --no-server-defaults を付けてください。
  • すべての書き込みが compare-and-swap になりました。 差分を計算した時点の
    metadata.resourceVersion を送るので、その後に他の変更が入っていれば上書きせずに失敗します。
    これまでは並走した deploy が互いの変更を黙って消していました。
  • 実行時エラーで usage 全文が出なくなりました。 エラー本文が読めるようになります。
  • init--config で指定した場所に書きます。 これまでは常に ./clrnd.yml でした。
    initrender -o の生成物は 0600 になります。
  • ソースからビルドする場合の必要バージョンが Go 1.26.7 以上になりました。

新しいコマンド

コマンド 説明
status サービスの現在の状態(Ready 条件、トラフィック配分、URL、全条件)。--format json あり
wait Ready になるまで待つ。Ready=False になった時点で待たずに失敗する
revisions リビジョン一覧を新しい順に、トラフィック配分・タグ付きで。--format json あり
rollback 1 つ前のリビジョンへトラフィックを戻す。新しいリビジョンは作らず、タグは 0% で残す
delete サービスを削除する。何を消すかをプロジェクト・リージョン込みで確認し、消えるまで待つ
refresh 定義を変えずに新しいリビジョンを作る(再起動、イメージタグの追従)

そのほかの追加

  • diff --exit-code — 差分があれば 2 で終わる(terraform plan -detailed-exitcode と同じ形)。
    ドリフト検知に使えます
  • verify がリモートの実在チェックをするようになりました。実行サービスアカウント、
    Secret Manager のシークレット、Artifact Registry のコンテナイメージ
    確認できないものは警告止まりで、verify を失敗させません
  • clrnd はリビジョン名を管理しなくなりました。 initspec.template.metadata.name
    書かず、diff/deploy は live 側の名前を無視します。自分で固定した場合は警告が出ます
  • リリース成果物に cosign の keyless 署名(checksums.txt)、SBOM、ビルド provenance が付きました。
    -trimpath とコミット時刻の埋め込みで再現性も上げています
  • README に「信用境界」と「clrnd が管理しないもの」の節を追加。コマンド別の必要 IAM 権限も表にしました

修正

  • rollback がカナリア中に安定版を飛び越していた(10%/90% のとき 90% 側を現行と誤認)
  • --no-server-defaults で消えない差分(cloud.googleapis.com/location ラベルなど)
  • diff が未存在のサービスで失敗していた(README の推奨手順の初回で落ちる)
  • verify が別プロジェクトのサービスアカウントを「存在しない」と誤判定していた
  • refresh が何も再起動しない状況(トラフィック固定時、同名リビジョン)を断るようになった
  • init --force で config の書き込みに失敗すると、上書きしたマニフェストが失われていた
  • render -o にレンダリング元と同じファイルを渡すと、テンプレートが結果で潰れていた
  • Ctrl-C が確認プロンプトで効かなかった

導入

# 例: macOS arm64
tar xzf clrnd_0.3.0_darwin_arm64.tar.gz
install clrnd /usr/local/bin/

成果物は checksums.txt と、それに対する cosign の keyless 署名 (checksums.txt.bundle)、
アーカイブごとの SBOM、ビルド provenance が付いています。

cosign verify-blob checksums.txt \
  --bundle checksums.txt.bundle \
  --certificate-identity-regexp '^https://github.com/masasuzu/clrnd/\.github/workflows/release\.yml@refs/tags/' \
  --certificate-oidc-issuer https://token.actions.githubusercontent.com

shasum -a 256 -c checksums.txt --ignore-missing

Full Changelog: v0.2.0...v0.3.0

コミット一覧