WebUIからのデプロイ
この章では、GitHub の Web UI からデプロイを実行する方法を学びます。GitHub Actions を活用して、ブラウザから本番環境へのデプロイが可能です。
workflow_dispatch(手動実行)
Section titled “workflow_dispatch(手動実行)”workflow_dispatchとは
Section titled “workflow_dispatchとは”GitHub Actions ワークフローを Web UI から手動で実行できるトリガーです。
ワークフローファイルに workflow_dispatch を追加:
name: Deploy
on: workflow_dispatch: # 手動実行を有効化
jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Deploy run: echo "Deploying..."- リポジトリの「Actions」タブ
- 左側のワークフロー一覧から該当ワークフローを選択
- 「Run workflow」ボタンをクリック
- ブランチを選択
- 「Run workflow」で実行
入力パラメータの追加
Section titled “入力パラメータの追加”デプロイ時にパラメータを指定できます:
on: workflow_dispatch: inputs: environment: description: 'デプロイ先環境' required: true default: 'staging' type: choice options: - staging - production version: description: 'デプロイするバージョン' required: false type: string
jobs: deploy: runs-on: ubuntu-latest steps: - name: Deploy to ${{ github.event.inputs.environment }} run: | echo "Environment: ${{ github.event.inputs.environment }}" echo "Version: ${{ github.event.inputs.version }}"| タイプ | 説明 |
|---|---|
string | 自由入力テキスト |
choice | ドロップダウン選択 |
boolean | チェックボックス |
environment | 環境を選択 |
Releasesからのデプロイ
Section titled “Releasesからのデプロイ”リリーストリガーの設定
Section titled “リリーストリガーの設定”リリースを作成したときにデプロイを実行:
name: Release Deploy
on: release: types: [published]
jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4
- name: Get release info run: | echo "Tag: ${{ github.event.release.tag_name }}" echo "Name: ${{ github.event.release.name }}"
- name: Deploy to production run: | # デプロイコマンド echo "Deploying version ${{ github.event.release.tag_name }}"リリースの作成手順
Section titled “リリースの作成手順”- リポジトリの「Releases」(右側サイドバー)
- 「Draft a new release」
- タグを選択または新規作成
- リリースタイトルと説明を入力
- 「Publish release」→ デプロイが自動実行
プレリリース
Section titled “プレリリース”本番デプロイ前のテスト用:
on: release: types: [published]
jobs: deploy-staging: if: github.event.release.prerelease runs-on: ubuntu-latest steps: - name: Deploy to staging run: echo "Deploying to staging"
deploy-production: if: ${{ !github.event.release.prerelease }} runs-on: ubuntu-latest steps: - name: Deploy to production run: echo "Deploying to production"Environments(環境)と承認フロー
Section titled “Environments(環境)と承認フロー”Environmentsとは
Section titled “Environmentsとは”デプロイ先の環境を定義し、保護ルールや承認フローを設定できます。
- Settings → Environments
- 「New environment」
- 環境名を入力(例:
production,staging) - 「Configure environment」
環境の保護ルール
Section titled “環境の保護ルール”| ルール | 説明 |
|---|---|
| Required reviewers | 指定したユーザーの承認が必要 |
| Wait timer | 指定時間待機してからデプロイ |
| Deployment branches | 特定ブランチからのみデプロイ可能 |
承認フローの設定
Section titled “承認フローの設定”- 環境の設定ページ
- 「Required reviewers」にチェック
- 承認者を追加(最大6人)
- 「Save protection rules」
ワークフローでの使用
Section titled “ワークフローでの使用”jobs: deploy: runs-on: ubuntu-latest environment: name: production url: https://example.com steps: - name: Deploy run: echo "Deploying to production"- ワークフローが承認待ち状態になる
- 承認者に通知が届く
- Actions タブで「Review pending deployments」
- 環境を選択して「Approve and deploy」
デプロイ状況の確認
Section titled “デプロイ状況の確認”Actionsタブ
Section titled “Actionsタブ”- 「Actions」タブでワークフローの実行状況を確認
- 各ジョブの詳細ログを表示
- 失敗した場合はエラー内容を確認
Deploymentsページ
Section titled “Deploymentsページ”- リポジトリのメインページ右側「Deployments」
- 環境ごとのデプロイ履歴
- 各デプロイの状態とログへのリンク
ステータスバッジ
Section titled “ステータスバッジ”READMEにデプロイ状況を表示:
実践的なデプロイワークフロー
Section titled “実践的なデプロイワークフロー”ステージング→本番の段階デプロイ
Section titled “ステージング→本番の段階デプロイ”name: Deploy Pipeline
on: workflow_dispatch: inputs: skip_staging: description: 'Skip staging deployment' type: boolean default: false
jobs: deploy-staging: if: ${{ !inputs.skip_staging }} runs-on: ubuntu-latest environment: staging steps: - uses: actions/checkout@v4 - name: Deploy to staging run: echo "Deploying to staging"
deploy-production: needs: deploy-staging if: ${{ always() && (needs.deploy-staging.result == 'success' || inputs.skip_staging) }} runs-on: ubuntu-latest environment: production steps: - uses: actions/checkout@v4 - name: Deploy to production run: echo "Deploying to production"ロールバック機能
Section titled “ロールバック機能”name: Deploy with Rollback
on: workflow_dispatch: inputs: action: description: 'Action to perform' required: true type: choice options: - deploy - rollback version: description: 'Version to deploy/rollback to' required: true type: string
jobs: execute: runs-on: ubuntu-latest environment: production steps: - name: Deploy if: ${{ inputs.action == 'deploy' }} run: echo "Deploying version ${{ inputs.version }}"
- name: Rollback if: ${{ inputs.action == 'rollback' }} run: echo "Rolling back to version ${{ inputs.version }}"中級者向けTips
Section titled “中級者向けTips”並列デプロイと順次デプロイ
Section titled “並列デプロイと順次デプロイ”jobs: # 並列デプロイ deploy-region-1: runs-on: ubuntu-latest environment: region-1 steps: [...]
deploy-region-2: runs-on: ubuntu-latest environment: region-2 steps: [...]
# 順次デプロイ(needsで依存関係を指定) deploy-primary: runs-on: ubuntu-latest steps: [...]
deploy-secondary: needs: deploy-primary runs-on: ubuntu-latest steps: [...]Slack通知
Section titled “Slack通知”デプロイ結果をSlackに通知:
- name: Notify Slack if: always() uses: 8398a7/action-slack@v3 with: status: ${{ job.status }} fields: repo,message,commit,author,action,eventName,ref,workflow env: SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }}環境変数とシークレットの使い分け
Section titled “環境変数とシークレットの使い分け”jobs: deploy: runs-on: ubuntu-latest environment: production steps: - name: Deploy env: # 環境固有のシークレット API_KEY: ${{ secrets.PRODUCTION_API_KEY }} # 環境変数(vars.XXX) API_URL: ${{ vars.API_URL }} run: | echo "Deploying to $API_URL"デプロイゲート(カナリアリリース)
Section titled “デプロイゲート(カナリアリリース)”jobs: deploy-canary: runs-on: ubuntu-latest environment: canary steps: - name: Deploy to 10% of traffic run: echo "Canary deployment"
verify-canary: needs: deploy-canary runs-on: ubuntu-latest steps: - name: Run smoke tests run: echo "Verifying canary"
deploy-full: needs: verify-canary runs-on: ubuntu-latest environment: production steps: - name: Deploy to 100% of traffic run: echo "Full deployment"| 方法 | 用途 |
|---|---|
| workflow_dispatch | 手動でいつでもデプロイ |
| Releases | バージョンタグと連動 |
| Environments | 承認フロー、保護ルール |
デプロイのベストプラクティス
Section titled “デプロイのベストプラクティス”- ステージング環境を用意: 本番前に必ずテスト
- 承認フローを設定: 本番環境は承認必須
- ロールバック手段を確保: 問題発生時に素早く戻せるように
- 通知を設定: デプロイ結果をチームに共有
- ログを残す: デプロイ履歴を追跡可能に
次の章では、ブランチ戦略について学びます。
Q1. workflow_dispatchの役割はどれですか?
Q2. GitHub EnvironmentsのRequired reviewersの役割はどれですか?
Q3. Releaseトリガーで本番デプロイを実行する際、プレリリースと本番を区別する方法はどれですか?