自動デプロイしてみた。(CI/CDの第一歩 / Github Action)
背景
毎回webサーバで git pull すんのめんどくさい
やること
Github Action使って、pushされたらサーバで自動デプロイ
やったこと
鍵の作成
これは今までやっていたが今回 パスフレーズなし にすることがポイントだった。デプロイ先でパスワードの入力待ちになってしまうから。 ※ ただ、力技な気がするので詳しい人には聞きたい。
環境変数の設定
リポジトリの [Settings] -> [Secrets] でAction secrets を設定する。これを「環境変数」って言い方したけどgithub actionでの設定ファイルに使うよ。
New Secret とすると Name と Value を入力できる。
Name | 記述内容 |
---|---|
SERVER_USERNAME | デプロイサーバへssh接続する際のユーザ名 |
SERVER_HOST | サーバのホスト |
SSH_PORT | 接続サーバのポート。sshなのでデフォは22だけど、変えてる可能性は十分ある。 |
SSH_PRIVATE_KEY | 秘密鍵。Githubの秘密鍵じゃないよ。サーバに対しての秘密鍵だよ。 |
SSH_PASS | 秘密鍵のパスワード |
SERVER_DEPLOY_DIR | デプロイするパス |
私の設定の最終形態
設定ファイル
Github上でも作れますが、なんとなく私は自分のローカルで作ってpushしたかったのでおとなしく /.github/workflows/deploy.yml
を作成。ファイル名は何でも良いらしい。ディレクトリで自動識別してくれる模様。
name: CI on: push: branches: - develop jobs: build: runs-on: ubuntu-latest steps: - name: Deploy uses: appleboy/ssh-action@master with: host: ${{ secrets.SERVER_HOST }} username: ${{ secrets.SERVER_USERNAME }} port: ${{ secrets.SSH_PORT }} key: ${{ secrets.SSH_PRIVATE_KEY }} passphrase: ${{ secrets.SSH_PASS }} script: | cd ${{ secrets.SERVER_DEPLOY_DIR }} git pull origin develop
引っかかりポイント
ssh-add で毎回鍵を登録しないといけなかったが、鍵を作るときのパスフレーズを空にすればsshへの再登録は不要だった。
ただ、念の為
# ~/.bashrc eval "$(ssh-agent -s)" ssh-add
としておいた。ymlにも書いたから多分要らない。