티스토리 뷰
이전 시간에 프로젝트에 github action을 연동하여 push를 감지했을 경우 자동 빌드가 되도록하는 step까지 구현하였다
이번에는
- ec2인스턴스를 생성하고 java 설치
- s3 버킷 생성
- 사용자 생성
- yml 파일 수정 - workflow 추가
이전 포스팅 - https://0zii.tistory.com/14?category=919071
먼저 ec2 인스턴스를 생성한다
인스턴스 생성에 대해서는 해당 포스팅 내용을 확인하면 된다
인스턴스 생성 후 터미널 접속 방법 포스팅 - https://0zii.tistory.com/2?category=900134
JAVA 설치
1. 인스턴스 생성 후 터미널로 인스턴스에 접근하여 java 버전을 확인해준다
$ java -version
2. ec2 인스턴스에는 기본적으로 자바7이 설치되어있다. 내 프로젝트는 자바8을 사용하였으므로 자바8을 설치하여준다
$ sudo yum install -y java-1.8.0-openjdk-devel.x86_64
3. 설치 완료 후 아래의 명령어를 통해 버전을 바꿔준다
$ sudo /usr/sbin/alternatives --config java
4. 두버전 중 2를 선택하여 자바8로 버전을 바꿔준다
5. 아래의 명령어를 통하여 자바7을 삭제 후 버전을 확인하면 제대로 설치가 된 것을 확인 할 수 있다
$ sudo yum remove java-1.7.0-openjdk
$ java -verison
S3 버킷 생성
프로젝트를 빌드 후 jar 파일을 압축하여 s3에 이관을 하기 위해 버킷을 생성한다
- 퍼블릭 액세스만 체크하고 나머지는 넘어가도록 한다
IAM 사용자 생성
생성한 s3에 접근하기 위해서는 권한이 필요하다
이러한 접속할 수 있는 권한을 가진 사용자를 생성하는 단계이다
1. 먼저 IAM 페이지에 들어가 왼쪽의 사용자 탭을 클릭하여 사용자 생성을 시작한다
2. 아래의 두가지 권한을 설정해준 후 생성한다 - s3관련 권한 설정
-여기까지 완료하였다면 access key와 secret key가 발급될 것이다 이는 추후 workflow 작성시에 필요하므로 꼭 메모해둔다
workflow 추가
마지막으로 생성한 s3에 빌드압축파일을 이관한는 step을 작성한다
기존의 yml 파일에 아래의 코드를 추가한다
# This is a basic workflow to help you get started with Actions
name: Spring Boot CI/CD
# Controls when the action will run. Triggers the workflow on push or pull request
# events but only for the master branch
on:
push:
branches:
- master
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
build:
# 실행 환경 지정 - latest 보다는 지정된 버전을 사용하는 것 추
runs-on: ubuntu-18.04
# Task의 sequence를 명시한다.
steps:
- uses: actions/checkout@v2
- name: Set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Build with Gradle
run: ./gradlew :aws-application:clean :aws-application:build
- name: Make Directory for deliver
run: mkdir -p code-deploy
- name: Copy Jar
run: cp aws-application/build/libs/*.jar code-deploy/
- name: Make zip file
run: zip -r -j aws-application.zip code-deploy/*
- name: Deliver to AWS S3
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
run: |
aws s3 cp \
--region ap-northeast-2 \
--acl private \
aws-application.zip s3://deploy-youngji/
-access key와 secret key는 깃허브의 secretes를 사용하여 환경변수로 지정하여주었다 (키 노출 방지)
참고로 키는 사용자 생성시 발급 받은 키를 적어주면 된다
이제 실행하여보자 !!
잘 돌아간다 ㅎㅎ
s3에 파일이 잘 전달되었는지 확인해보자
잘 전달된것을 확인할 수 있다 !!!
다음시간에는 codedeploy를 이용하여 ec2 인스턴스에 파일을 이관하고 쉘 스크립트 파일을 생성하는 실습을 진행하도록 하겠다
**) 잘못된 정보가 있을 수 있습니다. 언제든지 연락주세요!!
'Infra > AWS' 카테고리의 다른 글
[AWS] - github action과 aws codedeploy를 이용하여 자동 배포하기(3) (0) | 2020.07.31 |
---|---|
[AWS] - github action과 aws codedeploy를 이용하여 자동 배포하기(1) (0) | 2020.07.23 |
[AWS]-RDS 인스턴스 생성하기 (0) | 2020.07.23 |
[AWS] - Docker Mysql 컨테이너 AWS에 배포하기 (0) | 2020.05.27 |