GitHub Action에서 aws S3로 빌드 파일 업로드

Youngkwon Kim·2022년 8월 1일
0

spring

목록 보기
3/3

CICD Architecture

3일동안 여러 블로그도 참고하고, 실패하여 직접 스크립트도 작성해보며 결국 성공한 CI/CD 작업을 정리하려 한다.
전체적인 구조는 다음과 같다.

S3로 빌드파일 업로드

먼저 이번 글에서는 CI과정을 완료한 후 생성된 빌드파일을 S3에 업로드하는 방법에 대해 정리하려 한다.
배포 테스트 서버의 스택은 다음과 같다.

  • EC2 t2.micro Instance
  • Ubuntu 22.04 LTS

IAM 생성

가장 먼저 AWS의 리소스에 접근할 수 있는 권한을 부여해야 한다.
AWS의 IAM 서비스에 들어가서 사용자 추가를 진행한다.
사용자 명은 원하는 대로 입력하고, 프로그래밍 방식 엑세스 유형을 선택한다.

우리가 필요한 권한은 다음 두가지이다.

  • AmazonS3FullAccess
  • AWSCodeDeployFullAccess

따라서 다음과 같이 검색하여 원하는 권한을 추가할 수 있다.

생성을 완료한 후, 엑세스 키 ID와 비밀 엑세스 키를 꼭 저장하자 !!


Repository Secrets 등록

위에서 획득한 aws 관련 키값들을 깃헙 레포에 등록해야 한다.
Settings -> Secrets에서 키값을 등록하여 GitHub Action에서 안전하게 사용할 수 있다.

(다음 사진은 모든 과정을 완료한 후, 등록된 Key값들)


S3 버킷 생성

이번에는 CI 과정이 완료된 후에 생성된 빌드파일을 저장할 S3 버킷을 생성해야 한다.
AWS의 S3 메뉴에 들어가서버킷을 생성한다.
이때 버킷의 권한 설정에서 '모든 퍼블릭 엑세스 차단'을 선택해야 한다.
나머지 값들은 원하는대로 입력한 후 생성을 완료한다.


GitHub Action의 yml파일에 S3 업로드 코드 작성

이후 S3에 빌드파일을 업로드하는 코드를 yml 파일에 작성한다.
(필자의 경우 /.github/workflows/gradle.yml 파일)

	  # gradle build with checking code style
      - name: Gradle Build with Checking Code Style
        run: ./gradlew clean build

      # 전송할 파일을 담을 디렉토리 생성
      - name: Make Directory for deliver
        run: mkdir deploy
        
      # Jar 파일 copy
      - name: Copy Jar
        run: cp ./build/libs/*.jar ./deploy/
        
      # 압축파일 형태로 전달
      - name: Make zip file
        run: zip -r -qq -j ./[PROJECT_NAME].zip ./deploy
        
      # S3 Bucket으로 Upload
      - name: Deploy
        uses: aws-actions/configure-aws-credentials@v1
        with:
          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY }}
          aws-secret-access-key: ${{ secrets.AWS_SECRET_KEY }}
          aws-region: ap-northeast-2

      # S3 Bucket으로 copy
      - name: Deliver to AWS S3
        run: aws s3 cp --region ap-northeast-2 --acl private ./[PROJECT_NAME].zip s3://${{ secrets.AWS_S3_BUCKET }}/

0개의 댓글