deployment について
リポジトリ内のアプリ仕様を使い、GitHub Actions と `app_action` で DigitalOcean App Platform にアプリをデプロイするスキルです。環境設定、ワークフロー選択、検証、トラブルシューティングを扱います。
主な機能
- 01GitHub Actions のデプロイワークフロー
- 02アプリ仕様の作成と更新
- 03ステージングと本番環境の設定
- 04プルリクエストプレビューの案内
- 05デプロイのトラブルシューティング
活用シーン
- 01GitHub からアプリ仕様とコード変更をデプロイ
- 02ステージングと本番のデプロイを分離
- 03マージ前に変更をプレビュー
- 04App Platform のビルド失敗を診断
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ digitalocean-labs/ do-app-platform-skills --skill deploymentインストール後、Claude Code で/deploymentを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
README.mdreference/command-reference.mddebug-container-deployment.mdinitial-setup.mdworkflow-templates.md詳細
デプロイスキル
GitHub Actions と app_action ワークフローを使って App Platform にデプロイします。
方針:PUSH モードでのデプロイ
このスキルでは、インフラストラクチャをコードとして定義し、GitHub Actions がデプロイを実行する PUSH モード に焦点を当てています。
PULL MODE (Console-driven) — NOT covered by this skill
• Go to DigitalOcean Console → Create App → Point to GitHub
• App Platform auto-generates app spec
• Good for: Quick starts, manual one-offs
PUSH MODE (CLI/Actions-driven) — THIS SKILL
• Define app spec in repo (.do/app.yaml)
• Use GitHub Actions + app_action to deploy
• Good for: CI/CD, automation, GitOps, multi-environment
ヒント:複雑なプロジェクトでは、段階的なアプローチとして planner スキルを検討してください。すべてのスキルについては、ルートの SKILL.md を参照してください。
クイック判断ガイド
Using GitHub Actions? (RECOMMENDED)
├── YES → Use digitalocean/app_action/deploy@v2
│ • Handles spec updates AND code deployments
│ • Manages app creation if doesn't exist
│ • Supports PR previews
│
└── NO (Manual/Scripting)
├── Spec changed? → doctl apps update --spec
└── Code only? → doctl apps create-deployment
| コマンド | 目的 | 使用するタイミング |
|---|---|---|
doctl apps create --spec | 新しいアプリを作成 | 初回デプロイのみ |
doctl apps update --spec | アプリのスペックを更新 | 設定の変更時 |
doctl apps create-deployment | 再ビルドを実行 | コードの変更のみ |
| app_action v2 | スペックと再ビルドの両方 | 推奨:すべてを処理します |
クイックスタート:環境のセットアップ
# 1. Create DigitalOcean projects
doctl projects create --name "myapp-staging" --environment "Staging"
doctl projects create --name "myapp-production" --environment "Production"
# 2. Create GitHub environments
gh api --method PUT repos/:owner/:repo/environments/staging
gh api --method PUT repos/:owner/:repo/environments/production
# 3. Set secrets per environment (user fills in values)
gh secret set DIGITALOCEAN_ACCESS_TOKEN --env staging
gh secret set DIGITALOCEAN_ACCESS_TOKEN --env production
gh variable set DO_PROJECT_ID --env staging --body "PROJECT_ID"
gh variable set DO_PROJECT_ID --env production --body "PROJECT_ID"
セットアップの完全なガイド:initial-setup.md を参照してください。
クイックスタート:基本的なワークフロー
# .github/workflows/deploy.yml
name: Deploy
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
environment: staging
steps:
- uses: actions/checkout@v4
- uses: digitalocean/app_action/deploy@v2
env:
DATABASE_URL: ${{ secrets.DATABASE_URL }}
with:
token: ${{ secrets.DIGITALOCEAN_ACCESS_TOKEN }}
project_id: ${{ vars.DO_PROJECT_ID }}
すべてのワークフローテンプレート:workflow-templates.md を参照してください。
ワークフローの選択
| シナリオ | ワークフロー | リファレンス |
|---|---|---|
| シンプルな単一環境 | 最小構成 | workflow-templates.md |
| ステージング + 本番環境 | 環境ベース | workflow-templates.md |
| 本番環境で承認が必要 | 保護された環境 | workflow-templates.md |
| マージ前に PR をテスト | PR プレビュー | workflow-templates.md |
| 複数の環境で 1 つのワークフローを使用 | 統合ワークフロー | workflow-templates.md |
| 元に戻す必要がある | ロールバック | workflow-templates.md |
クイックスタート:デバッグコンテナ
複数のインテグレーションを含む複雑なアプリでは、まずデバッグコンテナをデプロイします。
# Add to .do/app.yaml temporarily
workers:
- name: debug
image:
registry_type: GHCR
registry: ghcr.io
repository: bikramkgupta/do-app-debug-container-python
tag: latest
instance_size_slug: apps-s-1vcpu-2gb
envs:
- key: DATABASE_URL
scope: RUN_TIME
value: ${db.DATABASE_URL}
# Connect and verify
doctl apps console $APP_ID debug
./diagnose.sh
完全なガイド:debug-container-deployment.md を参照してください。
コマンドのクイックリファレンス
| タスク | コマンド |
|---|---|
| スペックを検証 | doctl apps spec validate .do/app.yaml |
| アプリを作成 | doctl apps create --spec .do/app.yaml --project-id $PROJECT_ID |
| アプリを更新 | doctl apps update $APP_ID --spec .do/app.yaml |
| 再デプロイ | doctl apps create-deployment $APP_ID |
| ログを表示 | doctl apps logs $APP_ID --type run |
| シークレットを設定 | gh secret set NAME --env staging |
| シークレットを一覧表示 | gh secret list --env staging |
完全なリファレンス:command-reference.md を参照してください。
リファレンスファイル
| ファイル | 内容 |
|---|---|
| initial-setup.md | プロジェクト、環境、シークレット、アプリスペックのセットアップ |
| workflow-templates.md | GitHub Actions ワークフロー YAML テンプレート一式 |
| debug-container-deployment.md | インフラストラクチャを検証するためのデバッグコンテナ |
| command-reference.md | doctl と gh CLI コマンドの完全なリファレンス |
クイックトラブルシューティング
| 問題 | 症状 | 対処方法 |
|---|---|---|
| アプリスペックが見つからない | Error: spec file not found | .do/app.yaml が存在することを確認してください |
| トークンが無効 | 401 Unauthorized | DIGITALOCEAN_ACCESS_TOKEN シークレットを確認してください |
| プロジェクトが見つからない | project_id is invalid | DO_PROJECT_ID 変数を確認してください |
| ビルドに失敗 | BuildJobFailed | ビルドログを確認してください:doctl apps logs $APP_ID --type build |
| 環境変数がリテラルとして表示される | 値が ${...} と表示される | バインド可能な変数名が一致しているか確認してください |
意見のあるデフォルト設定
| 決定事項 | デフォルト | 理由 |
|---|---|---|
| CI プラットフォーム | GitHub Actions | app_action による DO との連携が最適です |
| デプロイアクション | app_action/deploy@v2 | 仕様の適用とデプロイを 1 ステップで処理します |
| シークレット | 環境ごとの GitHub Secrets | 安全で、AI に値が見えることもありません |
| deploy_on_push | app spec では false | デプロイは GitHub Actions で制御します |
| App spec の配置場所 | .do/app.yaml | 慣例に沿っており、DO ボタンと一致します |
他のスキルとの連携
- ← designer: デプロイで使用する
.do/app.yamlを作成します - ← postgres: データベースのセットアップを担当し、
DATABASE_URLを GitHub Secrets に保存します - → troubleshooting: デプロイの失敗をデバッグします
- ← devcontainers: ローカル開発環境が本番環境と一致するようにします
本番環境のチェックリスト
- 環境タグを付けた DO Projects を作成済み
- GitHub environments を作成済み(staging、production)
- 環境ごとに
DIGITALOCEAN_ACCESS_TOKENシークレットを設定済み - 環境ごとに
DO_PROJECT_ID変数を設定済み -
deploy_on_push: falseを指定した.do/app.yamlを作成済み -
.github/workflows/deploy.ymlを作成済み - production の保護ルールを有効化済み
- staging へのデプロイをテスト済み
- production へのデプロイをテスト済み
ドキュメントへのリンク
コメント
Markdown 対応