前回の記事
今回の作業
GitHub Actionsを用いて、リモートレポジトリのmainブランチにpushした際に本番環境(xserver)に自動デプロイできるようにする
GitHub ActionsのWorkflowを準備
New workflowをクリックして新しいymlファイルを作成する
中身はこんな感じ
deploy.yml
name: deploy to xserver
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: ssh key generate
run: echo "$SSH_PRIVATE_KEY" > key && chmod 600 key
env:
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}]
- name: rsync deployments
uses: burnett01/rsync-deployments@5.1
with:
switches: -avz --delete
remote_path: ${{ secrets.REMOTE_PATH }}
remote_host: ${{ secrets.REMOTE_HOST }}
remote_user: ${{ secrets.REMOTE_USER }}
remote_port: ${{ secrets.REMOTE_PORT }}
remote_key: ${{ secrets.SSH_PRIVATE_KEY }}
変数をSecretsに記載
秘密鍵はもちろん、ホスト名などもこのファイル内に直書きするのはセキュリティ上良くないらしいのでSecretsに変数の中身を記載
Settings→Secrets→Actions
中身は下記の通り
REMOTE_PATH: /home/サーバーID/ドメイン名/
REMOTE_HOST: サーバー番号.xserver.jp
REMOTE_USER: ユーザー名
REMOTE_PORT: 10022
SSH_PRIVATE_KEY: FTP設定の時にxserverからダウンロードした秘密鍵
これで設定は完了
実行してみる
適当にロゴアイコンを変更してリモートレポジトリにプッシュすると、自動でActionsが実行される
成功すればGitHub上で緑のチェックマークが表示され、実際にサイト上を確認するとロゴが変更されているのを確認
参考にさせていただいたサイト
https://gadgelaun.com/?p=29970
https://zenn.dev/hirof1990/articles/2f8eeab56b8637
https://www.to-r.net/media/github-actions/
感想
一発でできたみたいに書いたけど、実際はCI/CDがどういうことかみたいなところから最初はわからなかったり、
Workflowファイル内でやってることが全然わからなかったり、
Actions内でのxserverへのssh接続で「Permission denied」エラーが出て失敗しまくったり、
GitHub上でActionsの再実行ができることを知らず毎回pushしてコミット履歴がぐちゃぐちゃになったり、
とにかく心が折れました。
ただ#0で書いたワークフローのうち、4.フロントを簡単にいじれるように環境を整える という一番大変なところをクリアできたのでよかったかな。
Qiitaの連載としては、当初の目的よりだいぶずれてしまっているので気が向いたら整理したいなと思います。
追記
デプロイ対象をpublic_htmlだけでなくドメイン名ディレクトリ全体にしちゃったのでその後書いた記事が全部ロールバックされちゃったえ〜ん;;;
ってことで、気が向いたら修正します・・・。