Github Actions でVPSにデプロイする最小コード
まず最終的なworkflowがこちら
name: Deploy
on:
push:
branches:
- main # メインブランチがプッシュされたときに実行
jobs:
deploy:
runs-on: ubuntu-24.04
steps:
- name: SSH and Pull or Clone
uses: appleboy/ssh-action@v0.1.10
with:
host: "${{ secrets.SSH_HOST }}"
username: ${{ secrets.SSH_USER }}
key: ${{ secrets.SSH_KEY }}
port: 22
script: |
if [ ! -d "/home/ubuntu/gha-training" ]; then
git clone https://0fuzimaru0:${{ secrets.GH_TOKEN }}@github.com/0fuzimaru0/gha-training.git /home/ubuntu/gha-training
else
cd /home/ubuntu/gha-training
git pull origin ${{ github.ref_name }}
fi
以下は各セクションの説明です
name
name: Deploy
対象のGitHubリポジトリの「Actions」タブに表示される名称を指定します。

on
on:
push:
branches:
- main
これは下記に記す「job」の発火条件です。今回はmainブランチにpushされた際に発火します。
runs-on
jobs:
deploy:
runs-on: ubuntu-24.04
ジョブを実行するOSとバージョンを指定します。
steps
steps:
- name: SSH and Pull or Clone
uses: appleboy/ssh-action@v0.1.10
with:
host: "${{ secrets.SSH_HOST }}"
username: ${{ secrets.SSH_USER }}
key: ${{ secrets.SSH_KEY }}
port: 22
script: |
if [ ! -d "/home/ubuntu/gha-training" ]; then
git clone https://0fuzimaru0:${{ secrets.GH_TOKEN }}@github.com/0fuzimaru0/gha-training.git /home/ubuntu/gha-training
else
cd /home/ubuntu/gha-training
git pull origin ${{ github.ref_name }}
fi
Actionsのログに表示されるステップ名を指定します。

uses: appleboy/ssh-action を使ってリモートサーバーに SSH でアクセスし、指定された script を実行することを宣言します。
with: SSH 接続情報をGithubに保存したシークレットから取得します。
script: 指定したディレクトリ (/home/ubuntu/gha-training) が存在しない場合はリポジトリを git clone、すでに存在する場合は最新の変更を取得するために git pull origin <branch名> を実行します。
onで設定できる条件一覧
GitHub Actionsのonでは、ワークフローを発火させるさまざまな条件を指定できます。以下に主要な条件を列挙します。
push
特定のブランチやタグへのプッシュ時にワークフローを実行します。ブランチやパスのフィルタリングが可能です。
pull_request
プルリクエストが作成・更新された際にワークフローを実行します。レビュー前の自動テストなどに使用されます。
pull_request_target
プルリクエストのベースブランチのコンテキストでワークフローを実行します。外部貢献者からのPRでもシークレットにアクセスできるため、セキュリティに注意が必要です。
workflow_dispatch
GitHub UIやAPIから手動でワークフローを実行できるようにします。任意のタイミングでの実行に便利です。
schedule
cron記法でスケジュール実行を設定します。定期的なバックアップやレポート生成などに使用されます。
release
リリースが作成・公開・編集された際にワークフローを実行します。リリース時の自動デプロイなどに活用できます。
create
ブランチやタグが作成された際にワークフローを実行します。新規ブランチの初期設定などに使用されます。
delete
ブランチやタグが削除された際にワークフローを実行します。削除時のクリーンアップ処理などに使用されます。
issues
イシューが作成・編集・クローズされた際にワークフローを実行します。イシューの自動ラベリングなどに活用できます。
issue_comment
イシューやプルリクエストにコメントが追加された際にワークフローを実行します。特定のコメントをトリガーにした処理に使用されます。
workflow_run
他のワークフローが完了した後に実行されます。複数のワークフローを連鎖させる際に使用されます。
repository_dispatch
外部システムからのWebhookでワークフローを実行します。カスタムイベントによる柔軟なトリガー設定が可能です。
fork
リポジトリがフォークされた際にワークフローを実行します。フォーク時の通知やウェルカムメッセージの送信などに使用されます。
watch
リポジトリがスターされた際にワークフローを実行します。スター数の記録や感謝メッセージの送信などに活用できます。
workflow_call
他のワークフローから再利用可能なワークフローとして呼び出されます。共通処理のモジュール化に便利です。
Discussion