やりたいこと
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の設定でした。
さくらサーバーの設定で沼らなければ簡単..!?