メインコンテンツへスキップ
見出し画像

#6 学ぶ!Webアプリ(GitHubActions)

    以下目次Step-2の[GitHubの利用−2]ー[GitHubActionsの設定]についての内容を公開します。

    GitHubActionsの設定

    GitHubは利用していても、GitHubActionsの利用を趣味の領域で利用されている方はそう多くないのではないでしょうか?とても便利な機能なので、ご紹介したいと思います。

    概要を説明するとこんな感じです。

    1.VScodeでコードを修正。
    2.GitHubへプッシュ。
    3.GitHubActionsでさくらVPSへ自動的にディプロイ。

    完全自動や、GitHubActionsボタン押して自動ディプロイの選択が行えます。

    まとめ:Docker利用していてもディプロイが簡単に行えます。

    • とても便利な機能なのですが、今まで説明したようなVScodeやさくらVPSでGitHubActions対応用の構成をとっていれば、設定には大きく2つの設定だけで対応が可能に必なります。

    • 1.VScodeでymlファイルの作成。

    • 2.キーペア(公開鍵・秘密鍵)の設定。

    1.VScodeでymlファイル

    具体的には下記のコードです。

    # deploy.yml
    name: Deploy to Sakura VPS
    
    on:
      push:
        branches:
          - master
      workflow_dispatch:
    
    jobs:
      deploy:
        runs-on: ubuntu-latest
    
        steps:
          - name: Checkout repository
            uses: actions/checkout@v3
    
          - name: Upload project to VPS (safe sync)
            uses: appleboy/scp-action@v0.1.7
            with:
              host: ${{ secrets.VPS_HOST }}
              username: ${{ secrets.VPS_USER }}
              key: ${{ secrets.VPS_SSH_KEY }}
    
              # ★ 隠しフォルダを含まないようにする
              source: "./*"
    
              # ★ VPS 側のデプロイ先
              target: "/home/debian/<ディプロイ先のディレクトリ>"
    
              # ★ exclude はスペース区切り(カンマ不可)
              #    Documents/ と dev/ を追加
              exclude: ".git/** .github/** .vscode/** Documents/** dev/**"
    
          - name: Restart Docker on VPS
            uses: appleboy/ssh-action@v1.0.3
            with:
              host: ${{ secrets.VPS_HOST }}
              username: ${{ secrets.VPS_USER }}
              key: ${{ secrets.VPS_SSH_KEY }}
              script: |
                cd /home/debian/apps/dash_db
                docker compose down
                docker compose up -d --build

    【コードの説明】
    1) トリガー条件
     `master` ブランチに push されたとき自動実行

    on:
    
    push:
    
    branches:
    
    - master

    下記を記載しておくと、コードを push しなくても、GitHub の画面からワンクリックでデプロイできる。

    workflow_dispatch:

    2) ジョブ構成 

    • GitHub Actions が「どの OS 上でジョブを実行するか」 を指定する設定

    • GitHub Actions の実行環境は `ubuntu-latest`(GitHub が用意した最新の Ubuntu 環境)

    • GitHub 側の実行環境であり、さくらVPS とは無関係

    jobs:
      deploy:
        runs-on: ubuntu-latest

    3)リポジトリの取得

    uses: actions/checkout@v3
    • GitHub のコードを Actions 実行環境にチェックアウトする。

    • チェックアウトとは

      • GitHub Actions の Ubuntu マシンが起動

      • リポジトリが ./ に展開

      • GitHub 上でコードを実行してチェックやコードを検証は行いません

      • checkout はただのコピーでビルドは別のステップです

    4)さくらVPS へファイルをアップロード

    uses: appleboy/scp-action@v0.1.7
    • VPS に SSH 鍵で接続

    • `./*` をアップロード(隠しフォルダは含まない)

    • `.git/ .github/ .vscode/ Documents/ dev/` は除外

    • `target:` で指定したディレクトリへ同期

    5) さくらVPS 上で Docker を再起動

    docker compose down
    docker compose up -d --build
    • デプロイ先ディレクトリへ移動

    • 既存コンテナを停止

    • 新しいコードで再ビルドして起動

    6)GitHub Actionsへ設定

    • GitHub Actions(New repository secret)へ設定した内容を利用するのは、下記の部分です。正確に記載すると、GitHub のリポジトリに登録した Secrets を、Actions の中で使っている、ということになります。

    host: ${{ secrets.VPS_HOST }}
    username: ${{ secrets.VPS_USER }}
    key: ${{ secrets.VPS_SSH_KEY }}
    • VPS_HOST(例:123.45.67.89)

    • VPS_USER(例:debian)

    • VPS_SSH_KEY(秘密鍵の中身)

    7)まとめ・・・下記のようなするワークフローです

    • VScodeでGitHub に push

    • ymlファイルに記載された内容に基づき

      • さくらVPS にコードを安全に同期

      • Docker を再ビルドして自動デプロイ

    2.キーペア(公開鍵・秘密鍵)の設定

    • さくらVPSのSSH設定やGitHubでも、キーペア(公開鍵・秘密鍵)を利用しました。ここで再度説明するのはその設定がもう少し複雑になるので。整理しておかないと混乱すると思ったからです。

    • 【公開鍵・秘密鍵利用の復習】

      • さくらVPSへのSSH用公開鍵設定

        • 【目的】秘密鍵を持ったPCからさくらVPSへのSSH接続可能

        • 【作業】PCでキーペア作成して公開鍵をさくらVPSのSSH用に登録

      • GitHubへのSSH用公開鍵設定

        • 【目的】秘密鍵を持ったPCからGitHubへのSSH接続可能

        • 【作業】PCでキーペア作成して公開鍵をGitHubのSSH用に登録

      • さくらVPSとGinHubで利用するキーペア(公開鍵・秘密鍵)は、セキュリティー上別のものを利用することが一般的な対応です。

      • アクセス(接続)する側でキーペアを作成して秘密鍵設定、アクセス(接続)される側に公開鍵設定と理解しやすいかと思います。

    • ところが今回のGitHubActionsのネットワーク接続の動作は

      • コードを修正したPC → GitHubActions → さくらVPSとなります

    • 分解すると下記のようになります

      • PC → GitHub(Actions)

      • GitHubActions → さくらVPS

    • PC → GitHub(Actions)の設定

      • すでにGitHub/SSH接続用の公開鍵を設定しているので今回は何もしなくて大丈夫です

    • GitHubActions → さくらVPSの設定
       - GtHubActionsが接続を依頼する側

      • さくらVPSが接続を受ける側になります、よって下記のようになります

        • GtHubActionsへ秘密鍵設定

        • さくらVPSへ公開鍵設定

    • 【作業−1】GtHubActionsへ秘密鍵設定が必要となります

      • ここでのポイントは下記2点です

        • 1)今までにはなかった秘密鍵の設定を行う

        • 2)GitHubの設定は、SSHの公開鍵設定と異なり、RipositoryのSettingsで行う

      • キーペアの作成はアクセスする側で行うのが基本と前述しましたが、ここではGitHubで作成することはできなので、自分のPCで作成します。

        • 形式は**で可能なので下記のコマンでで作成します。パスフレーズは不要なので「Enter」入力でスキップしてください。

      • 作成したキーペアの秘密鍵情報などをGtHubへ設定します。

        • GitHubActionsを利用するRipository外面へ移動してSettingsタブをクリック

        • 左メニューの[Secrets and variables]-[Actions]を選択

        • 「New repository secret」ボタンを押し新しい設定画面を表示

        • 入力後「Update secret」ボタンを押すのを忘れないようにしてください

      • 【作業−2】

        • さくらVPSへ公開鍵を設定。

          • さくらVPSへの公開鍵登録は “通常のSSH設定時とまったく同じ方法。

    • 以上でGitHubActionsの設定は完了です

    • これまでに設定した、ファイルの構成やyamlファイルやDockerfileを設定していれば、`git push`で、GitHubアクションが動作して、自動デプロイできます。

    • GitHubActionsでエラーが出た場合はエラー内容をAIへコピペして質問するとアドバイスをもらえます。

    #創作大賞2026
    #オールカテゴリ部門

     
     

    n-wada

     
     
    IoT関連の仕事をしています。プロトタイプの作成や、データ分析の見える化をPython/Dashで行っています。 プライべートでは、仕事と違った視点で、テキストを中心とした開発を行っており、Noteではその一端をご紹介させていただきます。

    あなたへのおすすめ