Github action 으로 EC2 에 spring boot 배포하기(1)
아래 글을 보면 CI 도 github action 으로 해결했습니다
이제는 배포도 github action으로 해볼겁니당
배포는 AWS EC2, S3, CodeDeploy 를 사용할 예정입니다
이런 형태이지만, aws codepipeline 아닌 github action 이 해줄겁니다.
codepipeline 을 안쓰는 이유는 최소한의 도구만을 이용하고 싶어서 입니다!
우선, CI 에서 테스트를 다 통과하고 build 를 해서 ~.jar 파일의 실행파일을 만들었습니다.
그걸 여차저차해서 EC2 에 옮기고 실행만 하면 되겠죠..?
1) aws cli 을 이용하여 build 파일을 S3 로 옮긴다
2) aws cli 을 이용하여 codedeploy 를 배포합니다
3) codedeploy 가 S3 에 있는 파일을 EC2 로 옮겨주고 실행하면 끝!
S3 는 Amazon Simple Storage Service 의 약자로 간단한 저장소입니다.
S3 저장소를 만들어줍니다
만들때는 리전을 EC2 와 같은 리전으로 선택해주시기 바랍니다.
뚝딱 만들고, 그냥 그대로 두시면됩니다. 권한 같은건 변경안해도 됩니당
어차피 AWS 내부에서 사용할 것이라, 별도의 퍼블릭 엑세스가 필요하시면 변경하셔도됩니다.
그다음 IAM 에서 S3 의 FullAccess 권한을 가진 사용자를 만들어줍니다.
기존정책직접 연결에서 S3FullAccess 권한을 선택합니다. 쭉쭉 진행
권한만 잘 보면 됩니당.
다 만들어지면 ID 와 KEY 가 나오는데 잘 가지고 있어야됩니다.
github action 에서 aws cli 를 이용하여 S3 로 파일을 업로드하기 위한 ID 와 PW 입니다.
다운로드하면 파일로 저장되고, 다운하지않고 저 페이지를 나가면 다시 키를 다시 볼 수 없습니다 ;;
그럼 이제 이걸 가지고 Github action 에서 build 파일을 올려봅시다!
깃허브 레파지토리에서 Settings 에 Serects 에 발급받은 ID 와 Key 을 입력하면 됩니다
이름은 아무렇게 지어도 됩니다. 저는 AWS_S3_UPLOAD 라고 했습니당.
그다음 workflow 파일을 수정해봅시다!
name: Java CI with Gradle
on:
push:
branches: [ master, dev ]
pull_request:
branches: [ master, dev ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up JDK 11
uses: actions/setup-java@v1
with:
java-version: 11
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Build with Gradle
run: |
./gradlew --version
./gradlew build # 빌드
- name: Upload S3
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_S3_UPLOAD }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_S3_UPLOAD_KEY }}
run: |
aws s3 cp \
--region ap-northeast-2 \
./build/libs/*.jar s3://your-s3-bucket-name
Upload S3 를 보시면 env 에 아까 발급받은 ID 와 KEY 를 입력하는 곳이 있습니다.
그리고 aws cli 를 이용하여 *.jar 파일을 업로드 해줍니다.
다음 글은 Codedeploy 를 이용한 배포입니다.
끝!
그리고 github action 에 기본적으로 aws cli 가 깔려있습니다.
https://github.com/actions/virtual-environments/blob/master/images/linux/Ubuntu1804-README.md
actions/virtual-environments
GitHub Actions virtual environments. Contribute to actions/virtual-environments development by creating an account on GitHub.
github.com
ubuntu 18.04 기준, 깔린 프로그램입니다.
로컬 pc나 개발피시에서도 가능합니다.
https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html
Installing the AWS CLI version 2 - AWS Command Line Interface
Thanks for letting us know this page needs work. We're sorry we let you down. If you've got a moment, please tell us how we can make the documentation better.
docs.aws.amazon.com