「自動化こそが正義」と語られるDevOpsの世界ですが、現場で本当に恐ろしいのは「何でもかんでも自動化してしまったがゆえに、制御不能になったパイプライン」です。
今日は、CI/CDの真髄である「人間による判断(意思)」と「マシンによる実行(作業)」を、最もエレガントに融合させる方法を伝授します。それがGitHub Actionsの `workflow_dispatch` です。
—
なぜ「手動トリガー」が必要なのか?
初心者のうちは「全部自動で動くのが最高!」と思いがちです。しかし、本番環境へのデプロイや、特定のバージョンを任意のタイミングでロールバックしたい時、機械的な自動化は往々にして牙を剥きます。
`workflow_dispatch` は、「いつでも実行できるボタン」をGitHubの管理画面に設置する機能です。これにより、コマンドラインやCIツールを直接触れないメンバーでも、ボタン一つで安全かつ確実にデプロイや環境構築を行えるようになります。
—
1. 最重要:HelloWorld的な「手動ボタン」の作り方
まずは、`.github/workflows/deploy.yml` というファイルを作成し、以下のコードを記述してください。これが全ての始まりです。
name: Manual Deployment
ここが肝!これが「手動実行可能」にする魔法のトリガーです
on:
workflow_dispatch:
inputs:
environment:
description: ‘デプロイ先環境を選択してください’
required: true
default: ‘staging’
type: choice
options:
- staging
- production
version:
description: ‘デプロイするバージョン(タグ)’
required: true
default: ‘main’
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Deploy Simulation
# ここで受け取った値を使って処理を分岐させます
run: |
echo “🚀 ${{ github.event.inputs.environment }} 環境へデプロイを開始します…”
echo “📦 バージョン: ${{ github.event.inputs.version }}”
# 実際にはここに AWS S3 への同期や Kubernetes の更新コマンドが入ります
設定のポイント:
- `on.workflow_dispatch`: これを記述するだけで、GitHub Actionsのタブに「Run workflow」ボタンが出現します。
- `inputs`: 実行時にユーザーに選択させる項目を定義します。環境の切り替え(Staging/Production)や、タグの指定をUI上で完結できるため、入力ミスによる事故を劇的に減らせます。
—
2. 現場で震えるほど役立つ「活用術」
この機能を使いこなすと、開発チームのオペレーションは劇的に変わります。
① 環境ごとの「デプロイゲート」を設ける
`type: choice` を使えば、誤操作を物理的に防げます。例えば「本番環境へのデプロイには、必ず特定の承認済みブランチを指定させる」といった制約を、GitHubのUI上で強制できるのです。
② 「検証済みビルド」の再デプロイ
CIが失敗したとき、わざわざコミットを積み直す必要はありません。`workflow_dispatch` で以前成功した特定のコミットハッシュやタグを指定して再実行すれば、環境の再現性が完璧に保たれます。
③ 非エンジニアへの権限委譲
PMやQA担当者に、「このボタンを押してStagingに反映しておいて」と依頼できるようになります。エンジニアが「デプロイ係」として時間を奪われる時代は、これで終わりです。
—
3. 注意点:この「ボタン」の流儀
非常に強力な機能ですが、一つだけ忘れないでください。
「ボタンを押す」という行為には責任が伴います。
- 誰が押したかをログに残す: GitHub Actionsの実行ログには誰がトリガーしたかが確実に残ります。これは監査ログとして極めて重要です。
- 権限管理: `Settings > Actions > General` から、この手動実行を行えるユーザーを制限することをお勧めします。本番環境へのボタンは、リードエンジニアのみに制限するなど、権限の分離を徹底してください。
—
まとめ:自動化の先にある「究極の統制」
GitHub Actionsの `workflow_dispatch` は、単なる「ボタン」ではありません。それは、「人間が判断し、機械が遂行する」という、最も人間的で最も安全なプロフェッショナルなワークフローへの入り口です。
まずはこのコードをリポジトリに入れて、GitHubのActionsタブを見てみてください。そこに、あなたのチームの作業を劇的に楽にする「魔法のボタン」が生まれています。
さあ、次はどんな作業をこのボタンに託しますか?あなたのエンジニアリングライフが、より創造的で軽快なものになることを願っています。