GitHub Actionsを活用したAWS(EC2)自動デプロイ

AWS

はじめに

この記事では、Ubuntu 22.04.3 LTS環境でGitHubリポジトリへのSSH接続の設定と、GitHub Actionsを使用したEC2サーバー上のプロジェクトの自動デプロイについて解説します。このプロセスは、開発者が継続的インテグレーション(CI)や継続的デプロイメント(CD)を実現するのに役立ちます。


こちらの記事もおすすめ

GitLabのセットアップ入門: Docker Composeを使用した簡単なガイド
はじめにDocker Composeを使用してGitLabをセットアップするための初心者向けのガイドです。このプロセスを通じて、ソースコードのバージョン管理とコラボレーションツールであるGitLabを簡単に導入できます。こちらの記事もおすす...
Blender 4.0 のPython APIで物体を発光・移動スクリプトを作成してみた
はじめにこの記事では、Blender 4.0のPython APIを使用して、オブジェクトを発光させつつ動かすスクリプトを作成する方法について解説します。デモ動画 @maki.sunwood.ai.labs Blenderの Python...

Ubuntu環境の確認

まず、使用しているUbuntuのバージョンを確認します。以下のコマンドを実行してください:


cat /etc/os-release
---
ubuntu@ip-172-31-45-101:~$ cat /etc/os-release 
PRETTY_NAME="Ubuntu 22.04.3 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.3 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy

このコマンドは、Ubuntuのバージョンやその他のシステム情報を表示します。

Gitのインストールと確認

次に、Gitがインストールされていることを確認します。以下のコマンドでGitのバージョンを確認できます:


git --version

もしGitがインストールされていない場合は、以下のコマンドでインストールします:


sudo apt update
sudo apt install git

SSHキーの生成

GitHubにSSHで接続するためには、SSHキーを生成する必要があります。以下の手順でキーを生成します:


ssh-keygen -t rsa
---
Generating public/private rsa key pair.
Enter file in which to save the key (/home/ubuntu/.ssh/id_rsa): github_key
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

キーの名前とパスフレーズを求められたら、適切なものを入力します。ここでは、例としてgithub_keyという名前を使用します。

SSH設定の追加

生成したSSHキーを使ってGitHubへの接続を設定します。.ssh/configファイルを編集し、以下の内容を追加します:


Host github
    HostName github.com
    IdentityFile ~/.ssh/github_key
    User git

GitHubへのSSHキーの追加

生成した公開キー(github_key.pub)をGitHubアカウントに追加します。これはGitHubのユーザー設定ページで行えます。

SSH接続のテスト

GitHubへのSSH接続が正しく設定されたかを確認します:


ssh -T github

成功すれば、GitHubからの認証成功メッセージが表示されます。

GitHub Actionsの設定

GitHubリポジトリにGitHub Actionsのワークフローを設定します。以下のワークフロー定義を.github/workflows/deploy.ymlとしてリポジトリに追加します:


name: ClimbCraft_EC2 auto deploy
on:
  push:
    branches: [ "main" ]
  workflow_dispatch:
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
     - name: Deploy
       run: |
         echo "${{ secrets.PRIVATE_KEY }}" > private_key
         chmod 600 private_key
         ssh -oStrictHostKeyChecking=no ${{ secrets.USER_NAME }}@${{ secrets.HOST_NAME }} -i private_key "cd ~/prj/ClimbCraft && git fetch github:Sunwood-ai-labs/ClimbCraft.git && git pull github:Sunwood-ai-labs/ClimbCraft.git"

このワークフローは、mainブランチへのプッシュ時、または手動でワークフローを実行したときに、指定されたEC2サーバーにSSHで接続し、リポジトリの最新の変更をプルします。

GitHub Secretsの設定

GitHubリポジトリのSettingsタブからSecretsを設定します。PRIVATE_KEYUSER_NAMEHOST_NAMEに適切な値を設定します。

file

これで、Ubuntu 22.04.3 LTS環境でのGitHubリポジトリへのSSH接続の設定とGitHub Actionsを使用したEC2サーバー上の自動デプロイの設定が完了しました。これにより、開発プロセスがより効率的かつ安全になります。

参考URL

git@github.com: Permission denied (publickey). の解消 - Qiita
プログラミング初心者はGithubで作業ログ残してツイッターに連携して作業すると、優しいお兄さんたちがコメントしてくれるのですごくおすすめ。作業も可視化されるし、質問しなくても何しようとしているのか…
GitHubでssh接続する手順~公開鍵・秘密鍵の生成から~ - Qiita
GitHubにssh接続するために鍵の登録が必要になります。その手順をまとめてみます。はじめての人は手順通りに進めれば接続出来ます。久しぶりにやってうまくいかないという人の解決の糸口になるよう…
GitHubとAWS EC2を連携させた自動デプロイの設定方法 - Qiita
1. はじめにソフトウェアの開発やプロジェクトの進行において、スムーズなデプロイプロセスは不可欠です。特に、自動化されたデプロイは、時間と手間を節約し、エラーのリスクを軽減するために重要です。本…

コメント

タイトルとURLをコピーしました