
프로젝트 중 무중단 배포 필요성을 느껴 ci/cd 구축을 해봤습니다.
여러 블로그에 리눅스, 우분투 혼용해서 설정한 정보글이 많기도 하고,
java코드는 기록이 남지만 aws ubuntu , S3, codedeploy 설정은 기록이 안남아서 까먹을 까봐 찾아본 정보를 기록합니다.
AWS S3 연동하기
AWS IAM(사용자) 추가하기
사용자 추가는 외부에서 접속 할 수 있는 권한을 가진 대상을 설정하는 과정입니다.
IAM 검색 하시고 사용자 클릭합니다.
사용자 추가 눌러줍니다.
원하는 이름을 적고, 사용자 접속할 때 쓰일 액세스 키를 체크 하도 다음 버튼을 누릅니다.
다음 기존 정책 직접 연결 선택하시고, 뒤에서 사용하게 될 S3,CodeDeploy정책("AmazonS3FullAccess", "AWSCodeDeployFullAccess" )을 활성화하고 다음을 눌릅니다.
사용자 Name(키) - 값을 정해주고 다음, 사용자 생성을 눌러줍니다.
사용자 추가가 완료되면 '액세스 키ID' 와 '비밀 액세스 키' 는 본인만 알 수 있게 저장 해두면 끝입니다.
S3 Bucket 설정
S3 검색하시고 버킷 클릭합니다.
버킷 만들기 클릭합니다.
원하시는 이름과 지역을 입력합니다.
엑세스 차단 설정하고 제일 하단에 버킷 생성 버튼 누르면 끝입니다.
(이미지첨부, 파일 다운로드 등 외부에서도 파일을 읽게 하고 싶으면 차단 해제하면 됩니다)
IAM(사용자) 접근을 위한 github 설정
CI/CD 적용 repository - Settings 탭 - Security - Secrets - Actions 클릭해줍니다.
New repository Secret 눌러주세요
Name : AWS_ACCESS_KEY_ID
Value : IAM사용자 설정 시 발급 받은 액세스 키ID 입력 후
Add Secret 버튼 눌러주세요
동일한 방법으로 AWS_SECRET_ACCESS_KEY 시크릿키까지 적용해 주시면 됩니다.
Github Actions에서 빌드된 파일을 S3로 옮기는 job추가하기
gradle.yml에 코드 추가 후 github push 합니다.
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
# This workflow will build a Java project with Gradle and cache/restore any dependencies to improve the workflow execution time
# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-gradle
name: Java CI with Gradle
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-20.04
steps:
- name: Checkout
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
shell: bash
- name: Build with Gradle
run: ./gradlew build
shell: bash
- name: Make Directory for deliver
run: mkdir deploy
# Jar file Copy
- name: Copy Jar
run: cp ./build/libs/*.jar ./deploy/
# 압축파일 형태로 전달(codedeploy는 zip형식만 읽을 수 있음)
- name: Make zip file
run: zip -r -qq -j ./S3에 담고자하는 파일의 이름 입력.zip ./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 S3에 설정한 리전 입력 \
--acl private \
./S3에 담고자하는 파일의 이름 입력.zip s3://S3 버킷 이름 입력/
CI 성공, 버킷에 파일 업로드 되면 성공입니다.
Github : https://github.com/Jemoo1060/cicdPractice
GitHub - Jemoo1060/cicdPractice
Contribute to Jemoo1060/cicdPractice development by creating an account on GitHub.
github.com
출처 : https://shinsunyoung.tistory.com/120
출처 : https://stalker5217.netlify.app/devops/github-action-aws-ci-cd-1/
'Spring-boot' 카테고리의 다른 글
Spring-boot 란? (0) | 2022.06.03 |
---|---|
Spring-boot에서 github Action & nginx CI/CD구축하기 4 (0) | 2022.06.01 |
Spring-boot에서 github Action & nginx CI/CD구축하기 3 (0) | 2022.06.01 |
Spring-boot에서 github Action & nginx CI/CD구축하기 1 (0) | 2022.06.01 |
JPA N+1문제란? (0) | 2022.05.27 |