📜 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️⃣ 무료 도메인 발급받기참조사이트

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

- 박상순: Cocktail
- 오재욱: Reviews, Ingredient
- 나상원: User
🛠️ 업무협업: Github
0️⃣ Github Templates 및 자동 리뷰어 배정

.github폴더 아래에 PR, issue template 생성하여 두면 편리합니다.

리뷰어를 매번 PR보낼 때마다 할당하기 귀찮으시다면, CODEOWNERS를 써보세요.
1️⃣


* @SangSun-Park @wooko5 @p1atina
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

Default branch - develop


PR 보낸 브랜치 merge 시 자동 삭제
🛠️ 업무협업: Jira Software
1️⃣ 이슈관리
애자일 방식으로 스크럼 회의 및 작업 할당
총 3번의 스프린트로 작업단위를 나눠서 프로젝트 진행 예정
백엔드
프론트
공통
3가지 에픽으로 나눠 티켓(작업) 생성하여 관리
2️⃣ 프로젝트 설정 - 자동화
자동화(오토메이션)로 설정해두면 좋은 설정


- feature/SM-16 브랜치가 만들어지면, 이슈를
진행중
으로 전환

왼쪽부터
1. 모든 하위 작업이 완료되면, 상위 작업을
완료됨
로 이동
2. 지라에서 이슈를 바꾼 사람을 담당자를 이벤트를 트리거한 사용자로 할당
3. PR 병합시 이슈를 완료됨
으로 전환

지라 이벤트 발생 시 Slack으로 메시지 전송도 가능

혹 프론트와 함께 지라를 쓴다면, 슬랙메시지가 무분별하게 전송되므로,
사용자 조건을 프론트, 백엔드 나눠서 실행하게끔 설정
🎫 CI/CD

깃헙액션과 dockerhub를 이용하면 CodeDeploy를 사용하지 않고 서버빌드 및 배포 가능
1️⃣ CI
⛳ Github Actions이란?
Github Action은 Github 저장소를 기반으로 소프트웨어 개발 Workflow를 자동화 할 수 있는 도구이다. 간단하게 말하자면 Github에서 직접 제공하는 CI/CD 도구라고 할 수 있다.
Github Actions은
Github
저장소에서 등록할 수도 있고
.github/workflows
폴더 내에 .yml
파일을 추가하여 등록할 수도 있다.🚨 주의점
깃허브 액션은 기존 올라간 액션이 아니라, PR보낸 사람의 레포에 .github/workflows가 있다면
해당 PR보낸 사람의 액션이 실행되므로, 꼭 주의해주세요.

Github
의 Actions
탭에서 확인 할 수 있다.
현 레포지토리에 추가한 Workflows
들도 확인이 가능하다.⛳ Github Actions을 통한 CI 구현

github repository
에서Actions
탭을 선택
New workflow
로 새로운 정책수립

프로젝트 빌드를 자신의 프로젝트에 맞는
Maven
, Gradle
빌드를 선택하여 Set up this workflow

해당 브랜치에
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
2️⃣ 사전세팅
⛳ 프로젝트에 deploy 디렉토리와 dockerfile 추가하기

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

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

Github
- 개인 프로필
- Settings
- Developer
- Personal access token
- 토큰 생성하기
팀 레포
- Settings
- Secrets
에 New repository secret
- docker hub 토큰 생성하기

Docker Hub - 프로필의 세팅에서 developer token 생성

팀 레포
- Settings
- Secrets
에 New repository secret
- docker hub REPO 레포 생성하기

Docker Hub - Create Repository
- 도커허브 중 어느 레포에 빌드이미지를 저장하기 위해서 레포가 필요하므로, 레포 생성
- 도커파일 참조(여기선 actiontest 만듬)
3️⃣ CD
⛳ AWS EC2 secrets 등록하기

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

- 회원가입을 해주세요.
- 일반 도메인 검색 하여 무료 도메인 선택해주세요.


- DNS (A) IP연결을 눌러서 AWS 퍼블릭 아이피 주소를 적어주세요.

- 지급받은 IAM에서도 손쉽게 퍼블릭 공인 IP를 확인할수 있습니다.
