Day5: CI/CDパイプラインを構築し、自動デプロイを実現


【手順】

  1. GitHubリポジトリを作成し、CI/CDのためのGitHub Actionsの設定
  2. GitHub Secretsを使用して、EC2インスタンスへのSSH接続情報を安全に管理
  3. GitHub Actions内で、`main`ブランチに変更があった際にEC2インスタンスに自動でデプロイされるよう設定
  4. デプロイ時に必要なスクリプトやコマンドを定義し、EC2インスタンスに自動でコードを反映
  5. GitHub Actionsをトリガーするため、リポジトリの`main`ブランチにプッシュし、実際に自動デプロイが機能するかをテスト

【実施したこと】

新しくGitHubリポジトリを作成し、そのリポジトリ内でCI/CDのためのGitHub Actionsを設定.github/workflows/deploy.ymlにCI/CDのワークフローを記述しました。

githubリポジトリ

GitHubリポジトリのSecretsに、EC2インスタンスへの接続に必要なSSHの秘密鍵やIPアドレスを設定。これにより、機密情報を安全に管理し、CI/CDパイプラインで使用しました。

github secrets

mainブランチへのプッシュをトリガーとして、GitHub Actionsのワークフローが実行されるように設定しました。

mainブランチへのプッシュをトリガーとする

EC2インスタンスにSSH接続後、必要なGitの操作を自動で実行するスクリプトを定義(リモートリポジトリから最新のコードをプルするなど)しました。

スクリプト

実際にmainブランチに変更を加え、プッシュしてGitHub Actionsが自動的にデプロイされることを確認しました。

デプロイテスト

【結果】

Update deploy.yml」では、GitHub Actionsを利用したCI/CDパイプラインを構築し、 `main`ブランチに変更が加わると自動でEC2インスタンスにデプロイが実行される仕組みを実装することができました。

GitHub Actionsの実行結果

【苦戦したこと】

GitHub Actionsでのエラー

このエラーが発生した原因は、GitHub Secrets に設定した秘密鍵の貼り付け方法に問題があったことです。
具体的には、改行コードが崩れたことが原因で、秘密鍵が正常に処理されませんでした。

解決策として、GitHub Secrets に秘密鍵を貼り付ける際、
-----BEGIN OPENSSH PRIVATE KEY----- と -----END OPENSSH PRIVATE KEY----- を含めてコピペし、
改行コードが崩れないように注意しました

この方法で秘密鍵が正常に設定され、問題が解決しました。

ec2デプロイ時のエラー

【今後の活用】

一つ目の方法でGitHub Actionsのエラーは解決しましたが、もう一つ方法があることを学びました。

tr -d '\r' を使うことでWindows からコピーした際に改行コードが崩れた場合でも、それを正しく処理することができる
というものです。

今後、似たようなエラーが発生した場合には、この方法も試してみようと思います。このような方法があることを知れたので、とても勉強になりました。