「Spring」Githubアクション+AWS CodeDeployを使用してプロジェクトを自動配置
![](https://s1.md5.ltd/image/61bc8c6f4f12ced6a0022b26f4e4b7fd.png)
今回Springバックエンドプロジェクトをして、私がやりたいのはMVC Patternを応用してAPIを作成するだけではありません.Github ActionとAWSを利用して、自動統合と導入が可能なCI/CDを構築します.Dockerに一緒に適用したいのですが、使ったことのないものでまた勉強の機会を得てみたいです.
総ての順序
![](https://s1.md5.ltd/image/0aa80099b4fa622f7c71c3ae629745e4.png)
![](https://s1.md5.ltd/image/7bf4c0d6d516a55ca18ff3a5c397cef0.png)
ここで重点的に紹介する部分はname、run、shellであり、実際には私たちがプッシュするときに実行する順序と要素です.
name: cafein
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up JDK 11
uses: actions/setup-java@v2
with:
java-version: '11'
distribution: 'temurin'
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Build with Gradle
run: ./gradlew clean build
![](https://s1.md5.ltd/image/8c8b0b0b0eb11147e3c14f8f5899e58c.png)
![](https://s1.md5.ltd/image/74b0698f7229b27a96d4497fc669c496.png)
2.構築されたjarをAWS 3にアップロードする
![](https://s1.md5.ltd/image/e6affa3843d8fda02d2998dfd6b76baf.png)
![](https://s1.md5.ltd/image/c8963ca6f034dbf4a42b70b8b0faeb9a.png)
![](https://s1.md5.ltd/image/55ef316e2cbbd1ec0751d72fe8e44255.png)
![](https://s1.md5.ltd/image/dbfad511b45380439644a6d9baac9a23.png)
![](https://s1.md5.ltd/image/231983af4b021264629e7035d62c7cce.png)
name: cafein
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
env:
S3_BUCKET_NAME: cafein-deploy
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up JDK 11
uses: actions/setup-java@v2
with:
java-version: '11'
distribution: 'temurin'
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Build with Gradle
run: ./gradlew clean build
- name: Make zip file
run: zip -r ./$GITHUB_SHA.zip .
shell: bash
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ secrets.AWS_REGION }}
- name: Upload to S3
run: aws s3 cp --region ap-northeast-2 ./$GITHUB_SHA.zip s3://$S3_BUCKET_NAME/$GITHUB_SHA.zip
![](https://s1.md5.ltd/image/15d72a4431615cc95f31b62fdb63f4e7.png)
![](https://s1.md5.ltd/image/6498e3ae28a03acd5b0d37b786b24472.png)
3.CodeDeployのインストールと設定
前に見たのはCIプロセスで、サーバに配備されているわけではありません.これで、CDをサーバに配布するプロセスを完了するには、CodeDeployを使用する必要があります.
ec 2ロールを設定する必要がありますが、実行するec 2タスク-セキュリティの変更-IAMロール-新しいロールを作成する場合は、次のロールを作成して付与します.そして再起動します.
![](https://s1.md5.ltd/image/9ad8a6329a92e2c197bc72bdbd971418.png)
![](https://s1.md5.ltd/image/d428dbd29095a9cc0962b08c99a3703a.png)
![](https://s1.md5.ltd/image/9299423686d71fa83dae724d677ba2ef.png)
chmod 400 key이름.pem
ssh -i "key이름.pem" ubuntu@ip주소
sudo apt update
sudo apt install ruby-full
sudo apt install wget
cd /home/ubuntu
sudo apt install awscli
aws s3 cp s3://aws-codedeploy-ap-northeast-2/latest/install . --region ap-northeast-2
chmod +x ./install
sudo ./install auto
# 이걸로 설치 확인을 할 수 있다.
sudo service codedeploy-agent status
![](https://s1.md5.ltd/image/b1c74992bbc5de59a3379a0bdd120735.png)
![](https://s1.md5.ltd/image/1bb44591376de4fcd17b1a544d24477b.png)
![](https://s1.md5.ltd/image/4250f7a2138926f1a84ea50610d126f4.png)
![](https://s1.md5.ltd/image/a80db50653c2d6b6f74dc0725211927c.png)
4.スクリプトの追加
1) appspec.yml設定
version: 0.0
os: linux
files:
- source: /
destination: /home/ubuntu/action
overwrite: yes
permissions:
- object: /
pattern: "**"
owner: ubuntu
group: ubuntu
hooks:
ApplicationStart:
- location: scripts/deploy.sh
timeout: 60
runas: ubuntu
2)Github Actions ymlの追加- name: Code Deploy
run: aws deploy create-deployment --application-name [만든 어플리케이션 이름] --deployment-config-name CodeDeployDefault.AllAtOnce --deployment-group-name [생성한 배포 그룹 이름] --s3-location bucket=$S3_BUCKET_NAME,bundleType=zip,key=$GITHUB_SHA.zip
注意:Amazon LinuxがUbuntu、appspecであるかどうかによって.ymlパスとowner、group、runasがubuntuまたはec 2-userに区別されるため、ec 2環境のユーザーアカウントの管理を参照してください.5.最終確認
![](https://s1.md5.ltd/image/8beabc52bcede82619ce2c8e2d34f053.png)
![](https://s1.md5.ltd/image/f24fe749b0ddb2ce14a2ef15b73fa2ce.png)
![](https://s1.md5.ltd/image/676b8d82c796be9bc46d5283787cec1e.png)
![](https://s1.md5.ltd/image/3d597ee3cd2aba1357a05cabfff497c4.png)
SpringベースのGithub ActionとAWSの連動過程において,自動配置によるShell Scriptの使用により多くのことを学びました.
Reference
この問題について(「Spring」Githubアクション+AWS CodeDeployを使用してプロジェクトを自動配置), 我々は、より多くの情報をここで見つけました https://velog.io/@guri_coding/Spring-Github-Action-AWS-CodeDeploy를-이용하여-프로젝트-자동-배포하기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol