【GitHub Actions】レンタルサーバに、SSH接続&コマンド操作

前提条件

・GitHubアカウント作成、リポジトリ作成を終えていること
・SSH設定が可能なサーバを借りており、その設定を終えていること

本題

秘密鍵、公開鍵の作成

SSH用に、レンタルサーバで秘密鍵と公開鍵を作成します。
*1.既にRSAで作成している場合、念のため別ディレクトリにて保存することをおすすめします。
*2.passphraseは、設定不要です。ここで設定してしまうと、接続する度に面倒事が増えます。
*3.passphraseを設定していない場合、何も入力せずにEnterで問題ありません。

ssh-keygen -t rsa -b 8192
# Generating public/private rsa key pair.
# Enter file in which to save the key (/home/../.ssh/id_rsa): *1
# Enter passphrase (empty for no passphrase): *2
# Enter same passphrase again:*3

GitHubに秘密鍵、公開鍵の登録

以下、デフォルトで生成されるファイル名で説明します。
1.生成されたid_rsa.pubを開き、末尾の改行を含んで全選択し、コピーします。
2.GitHub Actionsを実行しようとしているリポジトリを開き、Settings > Deploy keysに移動します。
3.Add deploy keyより記入欄内に、貼り付けます。
登録を終えると、以下の画像のようになります。

Deploy keys

サーバにアクセスするために必要な情報を登録します。
4.Settings > Secrets and variablesに移動し、変数名と以下の内容を保存します。

  • SSH_HOST:レンタルサーバにアクセスするためのIPアドレス
  • SSH_USERNAME:レンタルサーバにアクセスするためのユーザーネーム
  • PORT:PORT 番号(SSHのデフォルトは 22)
  • SSH_PRIVATE_KEY:生成されたid_rsaを開き、末尾の改行を含んで全選択し、コピー&貼り付け
  • DEPLOY_DIR:ログインした後に移動するディレクトリ先(フルパス)

登録を終えると、以下の画像のようになります。

GitHub ActionsのSettings > Secrets and variablesに移動し、変数名と内容を保存

ymlの作成

Actionsに移動し、「set up a workflow yourself」のリンク(以下の画像内青い所)をクリック。

以下のコードやファイル名を以下の画像のように、入力してください。

name: deploy_test

on:
  push:
    branches: [ main ]

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
      - name: git checkout
        uses: actions/checkout@v4

      - name: multiple command
        uses: appleboy/ssh-action@v1.0.3
        with:
          host: ${{ secrets.SSH_HOST }}
          username: ${{ secrets.SSH_USER }}
          key: ${{ secrets.SSH_PRIVATE_KEY }}
          port: ${{ secrets.PORT }}
          script: |
            whoami
            pwd

Github Actionsのyml設定

今回は、SSH Remote Commandsを利用しました。
リンク先: https://github.com/marketplace/actions/ssh-remote-commands

mainブランチにpushすると、実行されるように設定しています。
script以下が、サーバ内で実行するコマンドです。

入力後、右上のCommit changesをクリックし、コミットしてください。

Commit changes

実行結果

実行結果が成功なら緑チェックマーク、失敗なら赤バツマークです。

GitHub Actionsの結果

以上です。

タイトルとURLをコピーしました