やりたいこと
GitHubのmainブランチにマージしたら勝手にデプロイサーバーも更新。
やりたいことの流れ
- GitHubのmainブランチにpushしたら、
- GitHub Actionsを使ってさくらサーバーにsshで接続して、
- GitHub Actionsを使ってサーバーで
git pull origin mainを実行する
やりかた
さくらサーバーの設定
これしないと沼る。
さくらレンタルサーバーのサーバーコントロールパネルで
セキュリティ→国外IPアドレスフィルタリング→無効(制限しない)
にチェックして保存。

GitHub Actionsの設定
設定の流れ
- ssh設定して、
- サーバーに一旦デプロイして、
- GitHub Actionsで使う変数を登録
- GitHub ActionsのWorkflowを書く
sshの設定
sshの公開鍵は、登録の仕方が2つある。
①どのレポジトリでも使えるのと、②各リポジトリで使えるのと2つあるみたい。
①どのプロジェクトでも使えるのは、作業PCのsshを保存して、
②各リポジトリで使うのは、サーバーとかを登録する。
多分今回は②が良い。
①は右上の自分のアイコン→settings→SSH and GPG keys→New SSH key
②はリポジトリ→Settings→Deploy keys→Add deloy key
で公開鍵を登録する。
公開鍵はcat ~/.ssh/id_rsa.pubで表示できるのでそれをコピペする。
サーバーで一旦デプロイ
初回だけは環境整備とかする。
サーバーにsshで接続して、cloneして、環境整えて、一旦デプロイ。
さくらサーバーの場合は、
ssh [アカウント名]@[ホスト]でその後にサーバーパスワードを入力する。
こんな感じだと思う。
ssh hoge@hoge.sakura.ne.jp
GitHub Actionsで使う公開したくない変数を登録
GitHub ActionsはWorkflowというファイルに処理手順とかを書く。これはgitで管理されて、公開されるため、ここに直接sshのパスワードなどを書くわけにはいかない。なので、秘密の変数に入れておく。
レポジトリ→Settings→Secrets and variables→Actions→New repository secret
Nameが変数名、Secretが値。
こんな感じで登録しておく
| Name | Secret |
|---|---|
| SERVER_DEPLOY_DIR |
cdで移動するディレクトリ |
| SERVER_HOST | ホスト |
| SERVER_USERNAME | ユーザー名 |
| SERVER_PASS | 今回はパスワードを使ってssh接続する |
Workflowを書く
リポジトリのActionsタブ
set up a workflow yourself
を選択
.github/workflows/ に***.ymlファイルができる。
上のパスのところにファイル名を入力する。
中身はこんな感じ。
name: sakura
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v3
- name: Deploy
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SERVER_USERNAME }}
password: ${{ secrets.SERVER_PASS }}
script: |
cd ${{ secrets.SERVER_DEPLOY_DIR }}
git pull origin main
name:sakura:ワークフローの名前
on::なにをきっかけでActionを起こすか。今回はpushとpull_request
jobs::ワークフローの中に複数のjosを設定可能。複数のjosを行う1つのワークフロー。こんかいはjobは1つしかない。
build::jobの名前はbuild
runs-on: ubuntu-latest:このjobをどこで実行するか。ubuntuの最新で実行する。
steps::各jobの実行単位
name::そのstepの名前
uses:何を使うか。[リポジトリの場所]@[バージョン]となっていて、URLの、github.com/以降に[リポジトリの場所]を貼り付けるとそのリポジトリを見れる。
例えば、
uses: appleboy/ssh-action@masterはappleboy/ssh-actionというリポジトリのmasterブランチを使う。
appleboy/ssh-action
with:など、uses以降はなにを使うかによって書き方が変わるので、リポジトリのRead.meを見て書き方を見るのが良さげ。
ここでは、script:を使って、ssh接続を行った後のコマンドを記述している。
記入が終わったら、下のStart commitボタンを押してコミットして終了。
Actionsタブで実行結果を確認できる。
以上!
GitHub Actionsを使ってさくらサーバーにsshしてコマンド叩くWorkflowの設定でした。
さくらサーバーの設定で沼らなければ簡単..!?