HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🧚
[1기]최종 프로젝트 데브코스
/
🐳
[팀11] 모디
/
📅
회의록
/
11/28 회의록

11/28 회의록

날짜
Nov 28, 2021 13:00
장소
게더
참가자

TODO

11/26 회의 내용 정리, 정리한 내용 기반으로 README에 도식화
인프라 작업
Github Action
  • AWS
    • EC2
      외부 접속 (ssh key 등록)
      RDS 연동 → 화요일
      CodeDeploy
플러그인 jacoco, sonarqube
보일러 플레이트 리뷰 (로이 O, 푸글 O)
 

Github Action

github actions 를 실행시켜줄 deploy.yaml 파일을 다음과 같습니다. 코드가 너무 길어질 것을 대비해서 어떤 작업을 하는지만 적어놓겠습니다.
steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - uses: actions/checkout@v2 // JDK set up - name: Set up JDK 1.11 uses: actions/setup-java@v1 with: java-version: 1.11 // gradlew 실행권한 추가 - name: Grant execute permission for gradlew run: chmod +x ./gradlew shell: bash // gradle 빌드 명령 - name: Build with Gradle run: ./gradlew build shell: bash - name: Make zip file run: zip -r ./$GITHUB_SHA.zip . shell: bash // AWS IAM credentials - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v1 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws-region: ${{ secrets.AWS_REGION }} // s3에 업로드하는 aws cli 명령어 - name: Upload to S3 run: aws s3 cp --region ap-northeast-2 ./$GITHUB_SHA.zip s3://$S3_BUCKET_NAME/$GITHUB_SHA.zip // code deploy를 진행하는 aws cli 명령어 - name: Code Deploy run: aws deploy create-deployment --application-name modi-github-actions-deploy --deployment-config-name CodeDeployDefault.AllAtOnce --deployment-group-name modi-codeDeploy-s3-group --s3-location bucket=$S3_BUCKET_NAME,bundleType=zip,key=$GITHUB_SHA.zip

CodeDeploy

codeDeploy를 동작시키기 위해선 프로젝트 최상단에 appspec.yaml 파일이 필요합니다.
version: 0.0 os: linux files: - source: / destination: /home/ubuntu/action overwrite: yes permissions: - object: / pattern: "**" owner: ubuntu group: ubuntu
appspec.yaml

JaCoCo

Java 코드의 커버리지를 체크하는 라이브러리. 테스트코드를 돌리고 그 커버리지 결과를 눈으로 보기 좋도록 html이나 xml, csv 같은 리포트로 생성해줌
Gradle 프로젝트에 JaCoCo 설정하기 | 우아한형제들 기술블로그
안녕하세요. 상품시스템팀에서 서버 개발(..새발)을 하고 있는 연철입니다. 프로젝트 세팅 중에 찾아보고 삽질했던 내용들이 도움이 될까 하여 남깁니다. JaCoCo 는 Java 코드의 커버리지를 체크하는 라이브러리입니다. 테스트코드를 돌리고 그 커버리지 결과를 눈으로 보기 좋도록 html이나 xml, csv 같은 리포트로 생성합니다. 그리고 테스트 결과가 내가 설정한 커버리지 기준을 만족하는지 확인하는 기능도 있습니다.
Gradle 프로젝트에 JaCoCo 설정하기 | 우아한형제들 기술블로그
https://techblog.woowahan.com/2661/
Gradle 프로젝트에 JaCoCo 설정하기 | 우아한형제들 기술블로그
 
plugins { id 'jacoco' } test { // finalizedBy 'jacocoTestReport' } jacocoTestReport { reports { html.enabled true html.destination file("$buildDir/jacocoHtml") } afterEvaluate { classDirectories.setFrom(files(classDirectories.files.collect { fileTree(dir: it, excludes: [ //제외할 파일들 ex. '**/com/kdt/localinfo/error/**' ] ) })) } finalizedBy 'jacocoTestCoverageVerification' } jacocoTestCoverageVerification { violationRules { rule { enabled = true element = 'BUNDLE' limit { counter = 'LINE' value = 'COVEREDRATIO' minimum = 0.70 } excludes = [] } } }
build.gradle 예시
 
빌드 후 build/index.html로 레포트 확인
빌드 후 build/index.html로 레포트 확인
 
 

Sonarqube

코드 분석 도구 적용기 - 3편, SonarQube 적용하기
이 글은 우아한테크코스에서 진행한 프로젝트인 직고래의 기술 블로그 에 함께 게시된 글입니다. 안녕하세요. 우아한테크코스 2기, 셀러리 컴퍼니에서 직고래 를 개발하고 있는 스티치(이준영)입니다. 코드 분석 도구 적용기 - 2편, JaCoCo 적용하기에 이어서, 이번에는 프로젝트에 정적 코드 분석 도구인 SonarQube를 어떻게 적용했는지 에 대해 소개해드리도록 하겠습니다.
코드 분석 도구 적용기 - 3편, SonarQube 적용하기
https://velog.io/@lxxjn0/%EC%BD%94%EB%93%9C-%EB%B6%84%EC%84%9D-%EB%8F%84%EA%B5%AC-%EC%A0%81%EC%9A%A9%EA%B8%B0-3%ED%8E%B8-SonarQube-%EC%A0%81%EC%9A%A9%ED%95%98%EA%B8%B0
코드 분석 도구 적용기 - 3편, SonarQube 적용하기
GitHub 프로젝트와 SonarCloud 연결해보기
GitHub에 올려둔 프로젝트와 SonarCloud를 연결해서 소스코드 정적 분석을 해보자. 정적 분석은 소스 코드 품질을 높이기 위해 잠재적인 버그나, 코딩 컨벤션에 어긋나는 부분을 찾아내는 것을 의미한다. 대표적인 정적 분석 툴은 SonarQube다. SonarQube는 사용하려면 직접 웹서버에 세팅을 해서 돌려야 하는데, 동일 개발사에서 만든 SonarCloud라는 클라우드 서비스를 사용하면 개인 서버를 준비하는 것보다 훨씬 편리하게 정적 분석을 해볼 수 있다.
GitHub 프로젝트와 SonarCloud 연결해보기
https://zion830.tistory.com/79
GitHub 프로젝트와 SonarCloud 연결해보기

AWS

EC2

  • ubuntu 20.04
  • t2 micro
  • 스토리지: 8GB (level up?)
  • 보안 그룹:
    • 22: SSH, 터미널 접속용
      • 푸글
      • 로이
      • 로사
    • 8080: 웹 접속용
  • 태그 추가
    • Name: modi
  • key pair
  • 인스턴스 이름:
  • elastic IP 바인딩
Host ~EC2 HostName 3.36.79.180 User ubuntu IdentityFile ~/.ssh/localinfo.pem
java 11 설치
타임존 변경
  • 기존 UTC → KST
 

RDS

 

deploy scripts example

#!/bin/bash REPOSITORY=/home/ubuntu/action/modi? PROJECT_NAME=modi BUILD_JAR=$(ls /home/ubuntu/action/build/libs/*.jar) JAR_NAME=$(basename $BUILD_JAR) echo "> Build 파일명: $JAR_NAME" >> /home/ubuntu/action/deploy.log echo "> Build 파일 복사" >> /home/ec2-user/action/deploy.log DEPLOY_PATH=/home/ec2-user/action/ cp $BUILD_JAR $DEPLOY_PATH echo "> 현재 구동 중인 애플리케이션 pid 확인" >> /home/ec2-user/action/deploy.log CURRENT_PID=$(pgrep -fl ${PROJECT_NAME} | grep jar | awk '{print $1}') echo "현재 구동 중인 애플리케이션 pid: $CURRENT_PID" if [ -z "$CURRENT_PID" ]; then echo "> 현재 구동중인 애플리케이션이 없으므로 종료하지 않습니다." >> /home/ec2-user/action/deploy.log else echo "> kill -15 $CURRENT_PID" kill -15 $CURRENT_PID sleep 5 fi DEPLOY_JAR=$DEPLOY_PATH$JAR_NAME echo "> 새 어플리케이션 배포" >> /home/ec2-user/action/deploy.log echo "> JAR Name: $JAR_NAME" echo "> JAR_NAME에 실행권한 추가" chmod +x $JAR_NAME echo "> $JAR_NAME 실행" nohup java -jar -Dspring.profiles.active=prod $JAR_NAME > $REPOSITORY/nohup.out 2>&1 & # (ls -tr $REPOSITORY/jar/*.jar | tail -n 1)