HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🧚
[1기]최종 프로젝트 데브코스
/
🍸
[팀15] ShakeNMatch
/
🔙
15조 백엔드 팀
/
🎈
ShakeNMatch - 프로젝트 일기
🎈

ShakeNMatch - 프로젝트 일기

📜 ShakeNMatch - Alchomist🐮 Developers🛠️ 업무협업: Github0️⃣ Github Templates 및 자동 리뷰어 배정1️⃣ Git Branch2️⃣ Branch protection rule🛠️ 업무협업: Jira Software1️⃣ 이슈관리2️⃣ 프로젝트 설정 - 자동화🎫 CI/CD 1️⃣ CI⛳ Github Actions이란?⛳ Github Actions을 통한 CI 구현 2️⃣ 사전세팅⛳ 프로젝트에 deploy 디렉토리와 dockerfile 추가하기⛳ AWS EC2 설정하기⛳ EC2(리눅스)에서 도커를 설치하기⛳ token(토큰) 생성하기3️⃣ CD⛳ AWS EC2 secrets 등록하기🎫 도메인 https 1️⃣ 무료 도메인 발급받기참조사이트

 
notion image

📜 ShakeNMatch - Alchomist

안녕하세요. 프로그래머스 데브코스: 클라우드 기반 백엔드 엔지니어링 수강 중인 Alchomist 팀입니다. 의욕 넘치게 진행됐던 개발 진행과정에서의 경험을 공유합니다.
 
 
 

🐮 Developers

notion image
  • 박상순: Cocktail
  • 오재욱: Reviews, Ingredient
  • 나상원: User
 
 
 
 

🛠️ 업무협업: Github

0️⃣ Github Templates 및 자동 리뷰어 배정

notion image
Create a PR template
Create an issue template
.github폴더 아래에 PR, issue template 생성하여 두면 편리합니다.
 
 
 
 
 
 
 
notion image
리뷰어를 매번 PR보낼 때마다 할당하기 귀찮으시다면, CODEOWNERS를 써보세요.
1️⃣
 
 
 
notion image
notion image
* @SangSun-Park @wooko5 @p1atina
About code owners - GitHub Docs
CODEOWNERS 파일을 생성 후 * @SangSun-Park @wooko5 @p1atina 로 설정 시
PR 보낼 때마다 자동으로 리뷰어 설정이 가능해집니다. (PR보내는 창에선 리뷰어 배정된게 화면에 안보이지만, 보내지고나서, 자동배정됩니다.)
 
 
 
 
 
 
 

1️⃣ Git Branch

브랜치 전략은 git flow를 사용했습니다.
⭐ Feat: 새로운 기능에 대한 커밋 ⚙️ Chore: 그 외 자잘한 수정에 대한 커밋 🐞 Fix: 버그 수정에 대한 커밋 📖 Docs: 문서 수정에 대한 커밋 💅 Style: 코드 스타일 혹은 포맷 등에 관한 커밋 ♻️ Refactor: 코드 리팩토링에 대한 커밋 🚦 Test: 테스트 코드 수정에 대한 커밋 🚀 CI: CI/CD 🔖 Release: 제품 출시 🎉 Init: 최초 커밋 🛠️ Config: 환경설정에 대한 커밋 🦔 Revert: 리버트
 
 
 
 
 

2️⃣ Branch protection rule

notion image
Default branch - develop
 
 
 
notion image
 
 
 
 
 
 
 
 
notion image
PR 보낸 브랜치 merge 시 자동 삭제
 
 
 
 
 
 
 
 
 
 
 
 
 

🛠️ 업무협업: Jira Software

1️⃣ 이슈관리

애자일 방식으로 스크럼 회의 및 작업 할당
총 3번의 스프린트로 작업단위를 나눠서 프로젝트 진행 예정
백엔드 프론트 공통 3가지 에픽으로 나눠 티켓(작업) 생성하여 관리
 
notion image
 
 
 

2️⃣ 프로젝트 설정 - 자동화

자동화(오토메이션)로 설정해두면 좋은 설정
notion image
 
 
 
notion image
  • feature/SM-16 브랜치가 만들어지면, 이슈를 진행중 으로 전환
 
 
 
 
 
notion image
왼쪽부터 1. 모든 하위 작업이 완료되면, 상위 작업을 완료됨로 이동 2. 지라에서 이슈를 바꾼 사람을 담당자를 이벤트를 트리거한 사용자로 할당 3. PR 병합시 이슈를 완료됨 으로 전환
 
 
 
notion image
지라 이벤트 발생 시 Slack으로 메시지 전송도 가능
 
 
 
notion image
혹 프론트와 함께 지라를 쓴다면, 슬랙메시지가 무분별하게 전송되므로, 사용자 조건을 프론트, 백엔드 나눠서 실행하게끔 설정

 
 
 

🎫 CI/CD

 
notion image
깃헙액션과 dockerhub를 이용하면 CodeDeploy를 사용하지 않고 서버빌드 및 배포 가능
 
 

1️⃣ CI

⛳ Github Actions이란?

Github Action은 Github 저장소를 기반으로 소프트웨어 개발 Workflow를 자동화 할 수 있는 도구이다. 간단하게 말하자면 Github에서 직접 제공하는 CI/CD 도구라고 할 수 있다.
 
Github Actions은 Github저장소에서 등록할 수도 있고  .github/workflows 폴더 내에 .yml 파일을 추가하여 등록할 수도 있다.
 
🚨 주의점 깃허브 액션은 기존 올라간 액션이 아니라, PR보낸 사람의 레포에 .github/workflows가 있다면 해당 PR보낸 사람의 액션이 실행되므로, 꼭 주의해주세요.
 
 
 
notion image
Github의 Actions탭에서 확인 할 수 있다. 현 레포지토리에 추가한 Workflows들도 확인이 가능하다.
 
 
 
 
 

⛳ Github Actions을 통한 CI 구현

notion image
  1. github repository에서 Actions 탭을 선택
  1. New workflow 로 새로운 정책수립
 
 
 
 
notion image
프로젝트 빌드를 자신의 프로젝트에 맞는 Maven, Gradle 빌드를 선택하여 Set up this workflow
 
 
 
 
 
notion image
해당 브랜치에 pull request 요청 발생 시 work flow가 자동으로 실행된다.
  • 추가적으로 프로젝트 설정에 맞게 java-version 설정
 
 
 
아래는 설정한 github workflow이다.
# This workflow will build a Java project with Maven, and cache/restore any dependencies to improve the workflow execution time name: Alchomist Production CI/CD on: push: branches: [ main ] pull_request: branches: [ main, release/*, develop] jobs: build: runs-on: ubuntu-latest # CI 빌드 steps: - uses: actions/checkout@v2 - name: Set up JDK 16 uses: actions/setup-java@v2 with: java-version: '16' distribution: 'adopt' cache: maven - name: Build with Maven run: mvn -B package --file pom.xml # 도커허브 로그인 - name: Login to DockerHub uses: docker/login-action@v1 with: username: ${{secrets.DOCKERHUB_USERNAME}} password: ${{secrets.DOCKERHUB_TOKEN}} # 메이븐 빌드 이미지 만들어 도커허브로 업로드 - name: build and release to DockerHub env: NAME: zer0da9 # DockerHub 계정 명 REPO: actiontest # DockerHub 레포 이름 run: | docker build -t $REPO . docker tag $REPO:latest $NAME/$REPO:latest docker push $NAME/$REPO:latest - name: Github Action to EC2 uses: appleboy/ssh-action@master with: host: ${{ secrets.HOST }} username: ${{ secrets.USER }} key: ${{ secrets.SSH_KEY }} port: ${{ secrets.PORT }} script: | ./deploy.sh
# 해당 브랜치에 pr, push 될 시 실행되는 Production CI/CD
 

 
 
 
 
 
 

2️⃣ 사전세팅

⛳ 프로젝트에 deploy 디렉토리와 dockerfile 추가하기

notion image
FROM openjdk:17-jdk-alpine ARG JAR_FILE=target/*.jar COPY ${JAR_FILE} alchomist.jar ENTRYPOINT ["java","-jar","/alchomist.jar"] # alchomist를 원하는 빌드배포이름으로 지정하시면 됩니다.
 
 
 
 
 

⛳ AWS EC2 설정하기

notion image
- AWS EC2 - t2.micro 인스턴스 생성
 
 
 
 
notion image
- kdt-team-15 인스턴스 할당
 
 
 
 
 
notion image
- SSH(22)로만 접속이 가능하므로, 빌드배포 서버로 운영하기 위해서 TCP(8080)를 인바운드 허용을 위해 보안 그룹(인바운드 규칙) 편집을 통해 추가
 
 
 
 
notion image
- 규칙 추가 - 사용자 지정 TCP - 8080
 
 
 
 

⛳ EC2(리눅스)에서 도커를 설치하기

EC2 리눅스 서버에 도커
$ sudo apt-get update 설치 패키지 관리 업데이트 $ sudo apt install docker.io -y 도커 설치 $ sudo docker -v 도커 설치됐는지 버전 확인
 
 
 
 
 

⛳ token(토큰) 생성하기

📢
토큰은 발급 시에만 확인이 가능하니, 꼭 적어두세요. 또한 보안에 신경써주세요.
 
 
github action - workflow 가 ${{ secrets.변수명 }} 등으로 알 수 있게,
팀 레포 - Settings - Secrets에 New repository secret 을 추가해주세요.
notion image
 
 
 
 
  1. Github 토큰 생성하기
notion image
Github - 개인 프로필 - Settings - Developer - Personal access token - 토큰 생성하기
 
 
팀 레포 - Settings - Secrets에 New repository secret
팀 레포 - Settings - Secrets에 New repository secret

 
 
 
 
 
  1. docker hub 토큰 생성하기
notion image
Docker Hub - 프로필의 세팅에서 developer token 생성
 
 
팀 레포 - Settings - Secrets에 New repository secret
팀 레포 - Settings - Secrets에 New repository secret
 
 
 
 
  1. docker hub REPO 레포 생성하기
notion image
Docker Hub - Create Repository - 도커허브 중 어느 레포에 빌드이미지를 저장하기 위해서 레포가 필요하므로, 레포 생성
  • 도커파일 참조(여기선 actiontest 만듬)
 
 
 
 
 

3️⃣ CD

⛳ AWS EC2 secrets 등록하기

notion image
 
 
 
 
 
 
 
 

🎫 도메인 https

1️⃣ 무료 도메인 발급받기

 
 
notion image
내도메인.한국 - 한글 무료 도메인 등록센터
  1. 회원가입을 해주세요.
  1. 일반 도메인 검색 하여 무료 도메인 선택해주세요.
 
 
notion image
 
 
 
 
notion image
  1. DNS (A) IP연결을 눌러서 AWS 퍼블릭 아이피 주소를 적어주세요.
 
 
 
 
 
notion image
  1. 지급받은 IAM에서도 손쉽게 퍼블릭 공인 IP를 확인할수 있습니다.
 
 
notion image
 
 
 
 
 
 
 
 
 

참조사이트

Spring Boot Docker
Many people use containers to wrap their Spring Boot applications, and building containers is not a simple thing to do. This is a guide for developers of Spring Boot applications, and containers are not always a good abstraction for developers. They force you to learn about and think about low-level concerns.
Spring Boot Docker
https://spring.io/guides/topicals/spring-boot-docker/
Github Actions으로 배포 자동화하기 : NHN Cloud Meetup
기술을 공유하고 함께 성장해가는 개발 문화, NHN이 추구하는 가치입니다.
Github Actions으로 배포 자동화하기 : NHN Cloud Meetup
https://meetup.toast.com/posts/286
Github Actions으로 배포 자동화하기 : NHN Cloud Meetup
Github Actions으로 AWS EC2에 CI/CD 구축하기
한이음 공모전에서 진행하는 trading app을 개발하기 전에 자동화를 구축하려고 한다. Github Access Token은 Packages의 권한을 가진다. Github Container Registry로 docker image를 배포하고 EC2(runner) 실행 할 때 docker login에 사용된다. Github 계정의 Settings -> Developer settings -> Personal access tokens에서 새로운 token을 만들어준다.
Github Actions으로 AWS EC2에 CI/CD 구축하기
https://velog.io/@soosungp33/Github-Actions%EC%9C%BC%EB%A1%9C-AWS-EC2%EC%97%90-CICD-%EA%B5%AC%EC%B6%95%ED%95%98%EA%B8%B0
Github Actions으로 AWS EC2에 CI/CD 구축하기