
#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-latest3)リポジトリの取得
uses: actions/checkout@v3GitHub のコードを Actions 実行環境にチェックアウトする。
チェックアウトとは
GitHub Actions の Ubuntu マシンが起動
リポジトリが ./ に展開
GitHub 上でコードを実行してチェックやコードを検証は行いません
checkout はただのコピーでビルドは別のステップです
4)さくらVPS へファイルをアップロード
uses: appleboy/scp-action@v0.1.7VPS に 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へコピペして質問するとアドバイスをもらえます。