使用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に適切な値を設定します。

file

これで、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

参考URL

广告
将在 10 秒后关闭
bannerAds