🚀 GitHubにpushしたら何が起こるの?〜サーバーの裏側をやさしく図解〜
「git push したら、GitHubで何が起きてるの?」
「GitHub Actionsって、いつどうやって動くの?」
日常的に使っているけど、実はよく知らない“GitHubの裏側”を
図とストーリーで解説します 💡
🧭 この記事でわかること
-
git pushの正体 - GitHubサーバーで自動的に行われる処理
- GitHub Actionsがどこでどう動くのか
- Self-hosted Runnerとの違い(発展編)
🧩 まずは全体の流れをざっくり把握!
🧠 Step 1:git push は「変更の荷物を送る」操作
自分のパソコン(ローカルリポジトリ)にあるコミットを、
インターネット上のGitHubリポジトリに送ります。
- 通信方法:HTTPS または SSH
- 送られるもの:コミットオブジェクト(=変更の履歴データ)
- 目的:「リモート(GitHub)を最新状態に更新する」
🪄 イメージ:郵便局(GitHub)に荷物(コミット)を送る感じです。
☁️ Step 2:GitHubサーバー側で起きること
pushを受け取ったGitHubは、裏で次のような処理を自動で行います。
| 処理 | 内容 |
|---|---|
| コミットを保存 | 送られてきた履歴データを内部DBに格納 |
| ブランチポインタ更新 | 「mainブランチの最新」を新しいコミットに指し替え |
| UI更新 | Web画面のコミット履歴や差分を更新 |
| pushイベント発火 | 「pushされたよ!」をトリガーに自動処理を起動 |
すべてGitHubサーバーが自動で実行しています。
⚙️ Step 3:pushイベント → GitHub Actionsが動く!
.github/workflows/ にワークフロー定義(例:deploy.yml)がある場合、
pushイベントを検知したGitHubが 自動的にActionsを起動 します。
on:
push:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npm run build
ここで runs-on: ubuntu-latest と書かれているのがポイント。
GitHubが自分のクラウド上で仮想マシン(Runner)を立ち上げて実行します。
💻 Step 4:GitHub Actionsの中で何が起きているの?
- GitHubのクラウド上に一時的なUbuntuマシンを起動
-
actions/checkoutでリポジトリのソースコードを取得 -
run:に書かれたコマンド(テスト・ビルド・デプロイ)を実行 - 実行結果(ログ・成功/失敗)をGitHubの画面に反映
👀 Actionsタブを開くと、「どんな処理がどの順番で走ったか」が見られます。
🪄 Step 5:まとめ(通常のGitHub-hostedの場合)
👉 自分は git push するだけ。
その後の一連の処理は GitHubが全自動で実行 してくれます。
🌱 発展編:Self-hosted Runnerとは?
通常、GitHub ActionsはGitHubが用意したクラウド上で動きます。
でも、「自分のサーバーで動かしたい」 というケースもあります。
そのときに使うのが Self-hosted Runner(セルフホステッドランナー) です。
🔧 Self-hosted Runnerを使うと…
つまり:
| 項目 | GitHub-hosted | Self-hosted |
|---|---|---|
| 実行環境 | GitHubのクラウド上 | 自分で用意したマシン |
| 管理 | GitHubが自動 | 自分が管理 |
| 用途 | 通常のCI/CD | 特殊環境(GPU, VPN, 社内ネットワークなど) |
| コスト | 無料枠あり | 自前マシンなので自由 |
🧠 GitHubが自分のサーバーに「このジョブ実行してね!」と依頼し、
自分のマシンがActionsの一部として動くイメージです。
🧩 最後に:pushは「スタートの合図」
| 役割 | 実行者 | 内容 |
|---|---|---|
| コミットを送る | 自分 | git push |
| 受け取って保存 | GitHub | リモートの更新 |
| 自動処理を走らせる | GitHub Actions | CI/CDの実行(Runner上) |
💬 一言でまとめると:
push は「GitHubにお願い!」の合図。
受け取ったGitHubが裏で、保存・更新・自動処理まで全部やってくれる。
Discussion