Skip to content

本番の配布で GitHub Release の作成だけが失敗すると、タグが既にあるため release のステップを打ち直しても再開できない #2198

Closed

Description

@takemi-ohama

何を見つけたか

本番の配布(release-steps.py の release のステップ、--stage production)で、タグを push した後に gh release create が失敗すると、同じステップを打ち直しても先へ進めない。

  • 入力: ndf v10.26.0 の本番の配布(2026-10-30)
  • 状態: _publish_tag_and_release がタグ ndf--v10.26.0 を作って push した後、gh release create が GitHub API の HTTP 500 で失敗した
  • 観測: 打ち直すたびに冒頭の確認が「タグ ndf--v10.26.0 は既にある」で StepError を投げ、ステップが 5 回続けて失敗し、judge が stop した。GitHub Release を手で作り、次のステップ(record)から再開した

タグの push と Release の作成が 1 つのステップに入っていて、途中で失敗した後の再開の形(タグが既にあり、そのタグが本番チャネルの先頭を指し、Release だけが無い)を受けない。

どこで見つけたか

なぜこの変更の範囲外なのか

#2170 は factory/ の認証とプランの課題で、受け入れ条件と対象範囲に NDF の配布のスクリプトを含まない。根拠: Value 6(根本原因の場所で直す。配布のスクリプトの層で直す)(MVV 版 3)

直さないと何が起きるか

GitHub API の一時的な失敗が 1 回あるだけで、本番の配布が自動で再開できず、conductor がプランの外で Release を手で作る手当てが要る。手当ての形が記録に残らず、Value 4(決まった手順はスクリプトに)に反する。judge は同じ失敗を 5 回数えるまで止まらないため、その間の時間も失う。

起票者の推定

  • 再開の形は「タグが既にあり、本番チャネルの先頭(今回のマージのコミット)を指し、Release だけが無い」ときに Release の作成から続ける形が望ましい(推した出所: 起票者が release-steps.py の 714〜769 行と今回の失敗の経緯から推した)

由来

issue #2170

閉じた理由

直っています。本番の配布の release のステップは、本番の Pull Request がマージ済みなら照合とマージを飛ばし、タグと GitHub Release のうち無いものだけを作ります(コミット 53acbe1、#2436)。origin のタグが本番チャネルのコミットを指すことも確かめます。テスト test_release_after_the_production_pr_merged_makes_only_what_is_missing がタグ無し・タグだけ・タグと Release の 3 つの形で通ることを確かめました。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions