GitHub Actionsのrelease automation修正を解説|実行時刻とブランチ作成の確認ポイント

GitHub Actionsのリリース自動化を運用しているチームにとって、「GitHub documentation update: fix: release automation trigger time and branch creation」は、リリース当日の作業タイミングとブランチ作成元を見直すべき更新です。結論から言うと、通常のGitHub利用者やアプリ利用者への直接影響は限定的ですが、リリース用ワークフロー、スケジュール実行、ブランチ保護、CD承認フローを管理している担当者は確認が必要です。

この更新では、OfficeDev/microsoft-365-agents-toolkitリポジトリの.github/workflows/release-automation.ymlが修正されました。公開PRでは、2026年5月18日にdevブランチへマージされ、変更は1ファイル、15行追加・12行削除とされています。主な変更点は、スケジュール実行時刻の変更、選択するcut_dateの基準変更、安定版リリースブランチ作成時の元ブランチ決定ロジックの変更です。(GitHub)

目次

GitHub documentation update: fix: release automation trigger time and branch creationの概要

今回の更新は、GitHub自体の画面や一般ユーザー向け機能が変わるアップデートではありません。GitHub Actionsで動くリリース自動化ワークフローの修正です。

対象となるのは、Microsoft 365 Agents Toolkitのリリース工程で使われるrelease-automation.ymlです。このワークフローは、手動実行、スケジュール実行、リリースブランチ向けプルリクエストのクローズを契機に動く構成になっています。公開されている差分では、特にスケジュール実行とブランチ作成ロジックが見直されています。(GitHub)

管理者や開発者が押さえるべきポイントは次の3つです。

確認ポイント変更内容実務上の影響
スケジュール実行時刻21:00 UTCから12:00 UTCへ変更UTC+8基準では翌日早朝ではなく前日夜に動く
リリース選択日TODAY_UTC8ではなくTOMORROW_UTC8を参照翌日のcut_dateを前日夜に拾う設計になる
安定版ブランチの作成元スケジュール内の直前プレリリースではなく、ブランチ名から算出release/6.N形式の命名規則がより重要になる

何が変わったのか

スケジュール実行がUTC+8の20時に変更された

これまでのスケジュールは、cron: "0 21 * * *"で、コメント上はUTC+8の05:00に毎日実行する設定でした。更新後はcron: "0 12 * * *"になり、UTC+8では20:00に実行される設定へ変更されています。日本時間では21:00です。(GitHub)

schedule:
  - cron: "0 12 * * *" # Run daily at 20:00 (UTC+8) => 12:00 UTC

この変更の意味は、単に「実行時刻が早まった」だけではありません。リリース当日の早朝に処理するのではなく、翌日のリリース対象を前日夜に準備する方向へ寄せた修正と考えるのが自然です。

GitHub Actionsのスケジュールは、基本的にUTCで解釈されます。現在のGitHub ActionsではIANAタイムゾーンを指定する方法も用意されていますが、このワークフローではUTC指定とシェル側の日付計算でUTC+8基準を扱っています。(GitHub Docs)

cut_dateの選択が「今日」から「明日」に変わった

スケジュール実行時に対象リリースを選ぶ処理も変わっています。従来はTODAY_UTC8を使い、UTC+8基準の当日cut_dateに一致するリリースを選んでいました。更新後はTOMORROW_UTC8が追加され、通常のスケジュール実行では翌日のcut_dateを選ぶようになっています。(GitHub)

TODAY_UTC8=$(date -u -d '+8 hours' +%Y-%m-%d)
TOMORROW_UTC8=$(date -u -d '+8 hours +1 day' +%Y-%m-%d)

REASON="cut_date=$TOMORROW_UTC8 (tomorrow UTC+8)"
RELEASE=$(jq -c --arg d "$TOMORROW_UTC8" '[.[] | select(.cut_date == $d)] | .[0]' releases.json)

たとえば、UTC+8で2026年5月18日20:00にワークフローが動いた場合、対象になるのは2026年5月19日のcut_dateです。日本時間では2026年5月18日21:00に、翌日分のリリース準備が始まるイメージです。

この変更により、リリース当日の朝に慌てて同期やブランチ作成を行うよりも、前日夜の段階でブランチやPRの状態を確認しやすくなります。一方で、既存の運用手順が「当日の朝に自動実行される」前提で作られている場合は、通知、承認、担当者の待機時間を見直す必要があります。

安定版リリースブランチの作成元がブランチ名ベースになった

もう一つ重要なのが、安定版リリースブランチを作成するときのsource_branchの決め方です。

以前の処理では、リリーススケジュール内のプレリリース項目を探し、最後のプレリリースのブランチを元ブランチとして使うロジックでした。更新後は、安定版ブランチ名がrelease/6.N形式であれば、1つ前のマイナーバージョンのリリースブランチを元にする形へ変更されています。(GitHub)

# release/6.N -> release/6.(N-1)
if [[ "$BRANCH" =~ ^release/([0-9]+)\.([0-9]+)$ ]]; then
  MAJOR="${BASH_REMATCH[1]}"
  MINOR="${BASH_REMATCH[2]}"
  if (( MINOR > 0 )); then
    SOURCE_BRANCH="release/${MAJOR}.$((MINOR - 1))"
  else
    SOURCE_BRANCH="dev"
  fi
else
  SOURCE_BRANCH="dev"
fi

たとえば、作成対象がrelease/6.10なら、作成元はrelease/6.9になります。release/6.0のようにマイナーバージョンが0の場合はdevが使われます。release/v6.10やrelease/6.10.0のように想定外の形式だと、正規表現に一致せずdevへフォールバックします。

この変更は、リリーススケジュールの書き方に依存しすぎない点では安定します。ただし、ブランチ命名規則から外れたリポジトリでは、意図しない大きな差分を持つブランチが作られる可能性があります。独自にフォークしているチームや、類似のリリース自動化を運用しているチームは、ここを最優先で確認してください。

影響を受ける対象者

今回の更新で影響を受けるのは、主にリリース運用に関わる担当者です。一般的なGitHubユーザー、Microsoft 365 Agents Toolkitをインストールして使うだけの開発者、通常のIssueやPull Request利用者には、直接の操作変更はほとんどありません。

対象者影響度確認すべきこと
リリース管理者高実行時刻、cut_date、承認タイミング
GitHub Actions管理者高スケジュール、トークン権限、環境保護ルール
開発リード中リリースブランチの作成元、PR同期の流れ
フォーク運用者中自社ブランチ命名規則との互換性
一般開発者低リリース通知やブランチ名の変化があるか

特に注意が必要なのは、リリースブランチを自動生成している組織です。ブランチ作成元が変わると、後続のバージョン更新PR、同期PR、CDパイプラインの差分が変わることがあります。

管理者が確認すべきGitHub Actions設定

スケジュールがデフォルトブランチに反映されているか

GitHub Actionsのon.scheduleは、ワークフローファイルがデフォルトブランチに存在している場合に動作し、スケジュール実行はデフォルトブランチの最新コミットで実行されます。修正を作業ブランチに入れただけでは、意図した時刻に動かない可能性があります。(GitHub Docs)

確認すべき項目は次の通りです。

  • .github/workflows/release-automation.ymlがデフォルトブランチに入っている
  • ActionsがリポジトリまたはOrganizationで無効化されていない
  • スケジュール時刻をUTC、UTC+8、日本時間のどれで運用資料に書いているか統一されている
  • 次回実行時に選ばれるcut_dateが「翌日」で問題ない

GitHub Actionsの公式ドキュメントでは、毎時0分付近は負荷が高く、スケジュール実行が遅延したり、状況によってはキューされたジョブが破棄されたりする可能性があると説明されています。今回のワークフローは0 12 * * *のように0分実行です。厳密な実行時刻が重要な派生ワークフローでは、7 12 * * *や13 12 * * *のように分をずらす設計も検討すると安全です。(GitHub Docs)

workflow_dispatchで手動検証できるか

このワークフローにはworkflow_dispatchがあり、手動実行時にrelease_version、dry_run、create_branch、rerun_cd_onlyなどの入力を指定できる構成です。GitHub Actionsではworkflow_dispatchに入力値を定義でき、手動実行時にその値をワークフローへ渡せます。(GitHub)

公開前に確認するなら、まずはdry_run: trueで実行し、次の内容をチェックします。

検証項目見るべき結果
選択されたリリース想定した翌日のcut_dateになっている
対象ブランチrelease/6.N形式で解釈されている
安定版の作成元release/6.(N-1)または想定どおりのdevになっている
PR作成有無既存ブランチがある場合とない場合で期待どおり
CD再実行rerun_cd_only時にブランチ作成やPR作成をしない

手動実行でrelease_versionを明示した場合は、日付選択よりバージョン指定が優先されます。定期実行の確認と手動実行の確認を混同しないようにしてください。

トークンと権限が足りているか

この種のリリース自動化では、ブランチ作成、PR作成、別リポジトリのチェックアウト、CDの起動など、読み取り専用では足りない操作が含まれます。GitHubのGITHUB_TOKENはpermissionsで必要最小限の権限に絞るのが推奨されており、必要な権限がGITHUB_TOKENで足りない場合はGitHub Appのインストールトークンやシークレット化したトークンを使う選択肢があります。(GitHub Docs)

このワークフローでも、公開されている内容からRELEASE_AUTOMATION_TOKENやGitHub App関連の値を使う設計が確認できます。フォークや社内リポジトリへ展開する場合は、単にYAMLをコピーするだけでなく、次の設定を確認してください。(GitHub)

設定確認内容
RELEASE_AUTOMATION_TOKENブランチ作成、PR作成、対象リポジトリ読み取りに必要な権限があるか
GitHub App ID / Private KeyGitHub Appを使う場合、対象リポジトリへインストール済みか
permissionsワークフロー全体またはジョブ単位で過不足がないか
OrganizationのActions設定ワークフロー実行や外部アクション利用が許可されているか
シークレットのスコープRepository、Environment、Organizationのどこに置くべきか

権限不足の失敗は、ワークフロー構文エラーよりも見落とされやすいポイントです。特に「手動実行では動いたが、スケジュール実行やPRクローズ時に失敗する」場合は、イベントごとのトークン権限とシークレット参照可否を確認してください。

ブランチ作成ロジックで失敗しやすいポイント

release/6.N形式以外のブランチ名を使っている

今回の安定版ブランチ作成ロジックは、^release/([0-9]+)\.([0-9]+)$に一致することを前提にしています。つまり、次のような形式は想定どおりに前バージョンを算出できません。

ブランチ名判定起きること
release/6.10一致release/6.9から作成
release/6.0一致マイナー0のためdevから作成
release/v6.10不一致devへフォールバック
release/6.10.0不一致devへフォールバック
releases/6.10不一致devへフォールバック

devへフォールバックすること自体は安全策ですが、安定版リリースで本来release/6.9を元にしたかった場合、差分が大きくなりすぎる可能性があります。ブランチ命名規則を変更している組織は、正規表現を自社ルールに合わせるか、リリーススケジュール側のbranch値を標準形式へ寄せる必要があります。

リリーススケジュールの日付が翌日基準に合っていない

スケジュール実行は、更新後に「明日のcut_date」を探します。そのため、リリーススケジュールのcut_dateが担当者のローカル日付、UTC日付、UTC+8日付のどれなのか曖昧だと、対象リリースが選ばれません。

たとえば日本時間で2026年5月18日21:00に実行される場合、UTC+8では2026年5月18日20:00です。この実行で選ばれるのは、UTC+8基準の2026年5月19日です。日本時間のカレンダーだけを見て「今日分」として登録していると、期待とずれる場合があります。

おすすめは、リリース運用資料に次のように明記することです。

項目推奨する書き方
ワークフロー実行時刻12:00 UTC / 20:00 UTC+8 / 21:00 JST
選択される日付実行日の翌日、UTC+8基準
スケジュールファイルのcut_dateUTC+8基準のYYYY-MM-DD
手動実行時の例外release_version指定時は日付ではなくバージョン優先

PRクローズ時のトリガー条件を誤解している

このワークフローには、pull_requestのclosedイベントとrelease/**ブランチ条件も含まれています。GitHub Actionsのpull_requestにおけるbranchesフィルターは、PRのマージ先、つまりベースブランチに対して評価されます。(GitHub Docs)

つまり、branches: release/**は「release/**へ向かうPRが閉じられたとき」に反応する設定です。開発ブランチ名や作業ブランチ名がrelease/**である必要はありません。

ここを誤解すると、「PRを閉じたのにCDが始まらない」「想定外のPRでワークフローが動いた」といったトラブルにつながります。ブランチ保護ルール、必須チェック、リリースPRのベースブランチを合わせて確認してください。

デプロイ・展開前に確認したいチェックリスト

この更新を自社フォークや類似ワークフローへ取り込む場合は、いきなり本番リリース日に適用せず、少なくとも1回は手動実行で検証してください。

| 手順 | 作業内容 | 判断基準 |
| -: | ——————————– | ————————————– |
| 1 | 最新のrelease-automation.yml差分を確認 | スケジュール、cut_date、ブランチ作成部分だけでなく周辺処理も読む |
| 2 | リリーススケジュールを確認 | 翌日UTC+8基準で対象が選ばれる |
| 3 | ブランチ命名規則を確認 | release/6.N形式に統一されている |
| 4 | dry_runで手動実行 | 対象リリースと作成元ブランチが想定どおり |
| 5 | トークンとシークレットを確認 | ブランチ作成、PR作成、外部リポジトリ参照に必要な権限がある |
| 6 | Environment承認を確認 | CDが承認待ちで止まる場合、担当者が分かる |
| 7 | 次回スケジュール実行を監視 | 実行時刻、選択日、作成PR、通知内容を確認 |

GitHub ActionsのEnvironmentを使っている場合、環境保護ルールにより、承認、待機時間、デプロイ可能ブランチの制限を設定できます。Environmentのシークレットは、そのEnvironmentを参照するジョブでのみ利用され、承認が必要な場合は承認されるまでアクセスできません。(GitHub Docs)

リリース自動化では、この承認待ちが「失敗」に見えることがあります。実際には、保護ルールにより待機しているだけの場合もあります。運用担当者には、Actionsの実行ログだけでなく、DeploymentsやEnvironmentの承認画面も確認する手順を共有しておくと安心です。

既存運用から移行するときの注意点

通知時刻と担当者の稼働時間を見直す

実行時刻がUTC+8の05:00から20:00へ変わるため、通知を受ける時間帯も変わります。日本のチームでは朝6時頃の処理から夜9時頃の処理へ変わる計算です。

これは、夜のうちにPRや承認待ちを確認できるという利点があります。一方で、担当者が勤務時間外に通知を受ける設計になる可能性もあります。Slack、Teams、メール通知、オンコール体制を含めて、通知先を見直してください。

リリースブランチの保護ルールを確認する

安定版ブランチが前バージョンのリリースブランチから作られる場合、release/6.9からrelease/6.10を作るような流れになります。ここで、ブランチ保護やEnvironmentのデプロイ可能ブランチがrelease/*だけを許可しているのか、より細かくrelease/6.*まで指定しているのかを確認してください。

GitHubのEnvironmentでは、デプロイ可能なブランチやタグを制限できます。指定パターンとGITHUB_REFの一致条件を誤ると、ワークフロー自体は成功してもデプロイ段階で止まることがあります。(GitHub Docs)

ActionsのNode.js 24移行も合わせて確認する

今回のPRの主目的ではありませんが、GitHub Actionsを管理しているチームは、利用中のアクションバージョンも同時に確認しておくべきです。GitHubは、2026年6月16日からランナーでNode.js 24をデフォルトにし、Node.js 20の非推奨プロセスを進めると案内しています。Actions利用者には、Node.js 24で動く最新バージョンのアクションへ更新することが推奨されています。(The GitHub Blog)

actions/checkout、actions/setup-python、actions/github-scriptなどを使っているワークフローでは、公式アクションの最新版、サードパーティアクションのメンテナンス状況、セルフホストランナーのOS対応を確認してください。リリース自動化は失敗時の影響が大きいため、Node.js 24への移行確認は早めに行うのが安全です。

よくあるトラブルと対処法

スケジュール時刻になってもワークフローが動かない

まず、ワークフローファイルがデフォルトブランチに存在するか確認してください。GitHub Actionsのスケジュール実行は、デフォルトブランチ上のワークフローを対象にします。次に、Actionsが無効化されていないか、Organizationポリシーで制限されていないかを見ます。(GitHub Docs)

毎時0分のスケジュールは遅延する可能性もあります。数分遅れているだけなのか、そもそも実行されていないのかをActionsの履歴で切り分けてください。

「No release selected」になる

更新後の通常スケジュール実行では、翌日のcut_dateを探します。リリーススケジュールに翌日UTC+8基準の日付が入っていない場合、対象リリースは選ばれません。

対処としては、リリーススケジュールのcut_dateをUTC+8基準で見直し、手動実行時はrelease_versionを指定して対象を明示してください。

作成されたリリースブランチの差分が大きすぎる

ブランチ名がrelease/6.N形式に合っていない可能性があります。正規表現に一致しない場合、作成元はdevへフォールバックします。意図としては安全策でも、安定版リリースでは差分が大きくなりすぎることがあります。

まずActionsログに出ているSource Branch (derived)を確認し、想定外ならブランチ命名規則かワークフローの正規表現を修正してください。

CDが始まらない、または承認待ちで止まる

PRクローズ後のトリガー条件、Environmentの承認、デプロイ可能ブランチ、シークレット参照権限を順に確認します。Environmentに必須レビュー担当者を設定している場合、承認されるまでジョブは進みません。(GitHub Docs)

「失敗」ではなく「承認待ち」の状態で止まっていることもあるため、ActionsログだけでなくDeploymentsの状態も確認してください。

管理者・開発者が次に取るべき行動

今回の「GitHub documentation update: fix: release automation trigger time and branch creation」は、小さなYAML修正に見えますが、リリース運用のタイミングとブランチ作成元に関わる重要な変更です。

まず、リリース自動化を直接運用している場合は、次回スケジュール実行で選ばれるcut_dateを確認してください。次に、安定版リリースブランチがrelease/6.N形式になっているか、作成元がrelease/6.(N-1)で問題ないかを確認します。最後に、dry_runで手動実行し、トークン権限、PR作成、Environment承認、CD起動までの流れを一度通して検証してください。

この3点を確認しておけば、実行時刻の変更による取り違えや、意図しないブランチ差分によるリリース直前の手戻りを避けやすくなります。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次