【github action】エックスサーバーに自動でデプロイさせる【CICD】

github actionの勉強中

CIでチェックさせて、CDでデプロイさせる

という流れが大体理解出来たので、次は実践として実際にpushしたらエックスサーバーにデプロイさせてみる

これが出来れば少し便利になるかも

手順としては

1、エックスサーバー側でSSH鍵用意

2、github actionの秘密キーに登録

3、ymlでデプロイを記載

4、エックスサーバーにレポジトリをクローンする

この3つになります。

もう既にエックスサーバーでSSHの設定をやっていて、秘密鍵もお持ちなら1番は飛ばしてください。

 

1、エックスサーバー側でSSH鍵用意

まず、エックスサーバーの管理画面→SSH設定で「公開鍵認証用鍵ペアの生成」をします。

パスフレーズは空白にしてください。

これで確認画面に進むと秘密鍵が生成されるので、PCの

/Users/*****/.ssh/xs★★★★★.key

に保存します。

 

2、github actionの秘密キーに登録

次にgithubの管理画面で作業です。

github actionの「setting」に進んで、左のメニューの下の方にある

「secrets and variables」

をクリックして「action」をクリック

そしたら、右下にある緑のボタンの

「New repository secret」をクリック

そしたらそれぞれ登録します。

名前は適当でいいですが、後でわかるようにします。

ホスト名 → sv*****.xserver.jp(サーバー管理画面のサーバー情報のホスト名です)

ポート名 → 10022

ユーザー名 →  xs*****(サーバーIDのこと、サーバーパネルの一番上に表示されている)

プライベートキー → エックスサーバーで作成した秘密鍵をテキストで開いて丸々コピペする

これをそれぞれ登録します。

ここまでできたら、github側の作業は終わり

 

 

3、ymlでデプロイを記載

ここまでできたらymlファイルを作成します。

トリガーはpushにします。

pushするだけで、自動でエックスサーバーにデプロイするようにします。

hoge.yml

name: Xサーバーデプロイ


on:
push:
branches:
- main


jobs:
deploy:
runs-on: ubuntu-latest
env:
REPO_URL: https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/kyoka-kurimoto/test.git


steps:
- name: コードを取得
uses: actions/checkout@v5


- name: SSH接続用キーファイルを設定
run: |
mkdir -p ~/.ssh
echo "${{ secrets.X_SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
ssh-keyscan -p "${{ secrets.X_SSH_PORT }}" -H "${{ secrets.X_SSH_HOST }}" >> ~/.ssh/known_hosts


- name: SSH接続を行い、Xserver上でpullしてデプロイを行う
run: |
ssh -i ~/.ssh/id_rsa -p "${{ secrets.X_SSH_PORT }}" -o StrictHostKeyChecking=yes -T "${{ secrets.X_SSH_USERNAME }}@${{ secrets.X_SSH_HOST }}" "REPO_URL='$REPO_URL' bash -s" << 'EOF'
cd /home/xs377936/github/test/test/ || exit
git pull "$REPO_URL" main || exit
EOF

環境変数の設定で

REPO_URL: https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/*******/test.git
@github.com/*******/test.git」
この部分は自分のgithubアカウントのURLにしてください
設定していないはずの
secrets.GITHUB_TOKEN」
がありますが、これはgithub action実行時に自動で発行されるトークンです。
発行されたらすぐ削除されます。

4、エックスサーバーにレポジトリをクローンする

最後に自動デプロイさせたい、エックスサーバー上のディレクトリにgitからレポジトリをクローンします。
これでCICDの出来上がり!!
これからはデプロイが楽になるー

コメント