使用GitHub Actions实现AWS(EC2)的自动部署
首先
在本文中,我将解释在Ubuntu 22.04.3 LTS环境下如何设置SSH连接到GitHub仓库,并使用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"
当此workflow在将内容推送至主分支或手动执行workflow时,将通过SSH连接到指定的EC2服务器,并拉取最新的仓库更改。
GitHub Secrets的设置
GitHubリポジトリのSettingsタブからSecretsを設定します。PRIVATE_KEY、USER_NAME、HOST_NAMEに適切な値を設定します。
これで、Ubuntu 22.04.3 LTS環境でのGitHubリポジトリへのSSH接続の設定とGitHub Actionsを使用したEC2サーバー上の自動デプロイの設定が完了しました。これにより、開発プロセスがより効率的かつ安全になります。
Github action 連携完了これでローカル?Github?AWSのフローが完成 pic.twitter.com/w3Jcd0uqF1— Maki@Sunwood AI Labs. (@hAru_mAki_ch) December 6, 2023