LoginSignup
2
0

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

Posted at

はじめに

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


こちらの記事もおすすめ

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

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0