前半の記事
前半で基本を学んだので、いよいよ、弊社のコーポレートサイトのデプロイに調整します!
- 参考ページ
https://softwarenote.info/p3789/
https://github.com/appleboy/ssh-action/issues/16
✴パスフレーズの設定がなかったので、デプロイに失敗していてハマった際に上記を参考にしました。
ゴール
akipass-corporateプロジェクトは静的ページのコーポレートサイトであり、すでにGitHubの管理下にあることが前提で作業を進めますので、GitHubへの登録は省略しています。
- 前提条件
現状はローカルからSSHで秘密鍵を使ってSSHでサーバに接続できて、サーバに.gitが設定されているので、手動でpullしてデプロイは行うことができる。
したがって、サーバの公開鍵はGitHubのDeploy Keyに設定されている。
2次ゴール(次回)
- 弊社のコーポレートサイト(静的HTML)のソースをGitHub上のmasterブランチをプッシュ
- GitHub Actionsでプッシュを検知し、workflowsを起動
- GitHubに登録された本番サーバの秘密鍵とアクセス情報からSSHで本番サーバにアクセス
- 本番サーバーに入ったら、cdでgitの管理下のソースの場所に移動
- masterブランチをチェックアウト
- masterブランチをプル
- 本番環境のコーポレートサイト(静的HTML)が変更される
ymlファイルの設定
練習用の「learn-github-actions.yaml」は削除して、デプロイ用のymlを作る。
.github/workflows/deploy-github-actions.yml
name: deploy-github-actions
# トリガーの設定
on:
push:
branches:
- master
jobs:
build:
runs-on: ubuntu-latest # 実行環境の設定
steps:
- name: ssh and deploy
uses: appleboy/ssh-action@master # 1
with: # 2 アクションの入力パラメータを指定
host: ${{ secrets.SSH_HOST }} # ホスト名
username: ${{ secrets.SSH_USERNAME }} # SSH ユーザ名
key: ${{ secrets.SSH_PRIVATE_KEY }} # 秘密鍵の内容
port: ${{ secrets.SSH_PORT }} # ポート番号
passphrase: ${{ secrets.SSH_PASSPHRASE }} # パスフレーズ
debug: true
script: |
cd /xxx/xxx/xxx/xxx #ここは本当はgitの管理下のソースの場所
git checkout master
git pull origin master
Deploy keyを設定(前提条件より設定済みである)
すでにプロジェクトにサーバの公開鍵が設定されていること確認する。
設定されていない場合は下記のサイトをみて公開鍵、秘密鍵を作成してください。
secretを設定する
パスフレーズや秘密鍵などは見せないようにしたいので
${{ secrets.XXXX }}
の箇所のように表示させたくない箇所をSecretに登録して環境変数をして使うことができます。
✴秘密鍵がない場合は上の参考URLから作成してください。
githubのprojectのsetting > secrets から登録する
https://github.com/$user/$project/settings/secrets
僕の場合は下記を環境変数に設定しました。
- ホスト名 => secrets.SSH_HOST
- SSH ユーザ名 => secrets.SSH_USERNAME
- 秘密鍵 => secrets.SSH_PRIVATE_KEY
- ポート番号 => secrets.SSH_PORT
- パスフレーズ => secrets.SSH_PASSPHRASE
簡単なymlファイルの説明
ymlファイルについては前半戦で説明はしているので、ここでは簡単に
uses: appleboy/ssh-action@master
これはsshで繋いでくれるアクションみたいでwithのところにSSHにつなげるための各パラメータを設定するとsshで繋いでくれる。
実はパスフレーズの設定がなくてハマって、十数回もプッシュして試してしまったのは内緒w
script: |
cd /XXX/XXX/XXX/XXX
git checkout master
git pull origin master
なんとなく分かると思いますが、下記をやってGitHubからソースをプルしています。
- cdでgitの管理下のソースの場所に移動
- masterブランチをチェックアウト
- masterブランチをプル
最後にソースがデプロイされるかを確認
ソースを変更して、SourceTree(gitのコマンドではも良いけど、、、)からmasterにPushして
下記のようにGitHub Actionsのworkflowsが緑になれば成功
本番のURL
https://www.cae-sar.co.jp/
にアクセスして変更されていればOK
お疲れ様でした。最後に感想
簡単にできるよと言われてやってみましたが、パスフレーズの部分を入れてなかったのでハマってしまいました。
十数回もプッシュしてしまい、Gitの履歴が汚れてしまいました(T_T)
とりあえず、workflowsのタブには出ていたみたいたけど、気がつかなかったので、エラーになるとやっかいそうですが、AWS CodePipelineを使ってCI/CDを実現していたエンジニアの方はこちらの方が簡単そうだねという感想を頂いて、まあ、これからもGitHubはデファクトスタンダードであるため、こちらを使っていこうと思います。