본문 바로가기

개발일지/TIL

(89)
[230724] [클론] Lifegram CI/CD 이슈 CI/CD 구성 Git Action, AWS S3, CodeDeploy, EC2를 사용해서 CI/CD를 구성을 했다. ✔ Git Action Deploy.yml 적용 및 결과 name: deploy on: push: branches: [ main ] env: S3_BUCKET_NAME: lifgram-deploy-bucket PROJECT_NAME: lifegram JAR_PATH: ./build/libs JAR_NAME: lifegram-0.0.1-SNAPSHOT.jar jobs: build: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v2 with: token: ${{ secrets.ACTION_TOKEN }} subm..
[230723] [클론] Lifegram 작업 (2) 기능 구현 💬 로그인과 회원가입 구현을 맡았다. Stateless를 적용하기 위해 Java Spring Security과 JWT를 사용해 구현을 했다. 회원가입의 경우 요청 값들이 정규식에 부합하며, 이메일과 유저이름이 중복되지 않으면 성공하도록 구현했다. 로그인의 경우 요청 값들이 정규식에 부합하며, 이메일과 패스워드가 DB에 들어 있는 값과 동일하면 성공하도록 구현했다. 로그인 성공 시 JWT 토큰을 반환하도록 만들었다. ✔ 회원 가입 정규식 적용 💬 회원가입은 프런트와 논의 후 이메일, 유저이름, 패스워드에 정규식을 적용하기로 했다. 1. 이메일은 숫자, 영어 대소문자, 특수기호 몇 가지, @, . 이 포함되는 정규식 적용 ➡ @Pattern(regexp = "^[a-zA-Z0-9._%+-]+@[a..
[230722] [클론] Lifegram 작업 (1) Git 작업 Git Repository에서 Application.properites과 https를 위한 보안 파일을 안전하게 사용하기 위해 Submodule을 적용했다. 그리고 정해놓은 Git Branch Convetion을 따라 각자의 기능을 구현하고 develop Branch에 Pull Request를 했다. 이후 팀원들이 모여 코드 리뷰를 진행한 다음 Merge를 했다. ✔ Submodule이 최신화 안 되는 문제 💢 애플리케이션 Repository를 가져올 때 Submodule이 최신화가 되지 않는 문제가 발생했다. ✅ submodule의 main을 최신으로 가져오는 명령어를 사용해 해결을 했다. ➡ git submodule foreach git pull origin main 서버 구축 가장 먼..
[230721] [클론] Lifegram S.A S.A ✔ 목표 클론 프로젝트 완성 테스크 코드 적용해보기 브랜치 병합 시 코드 리뷰 시간 무조건 갖기 CI/CD를 Code Deploy와 Git Action 사용해서 진행해 보기  ✔ 환경 언어 & 프레임워크 : Java Spring, Java 17, Java Spring Boot 3.1.2 AWS : EC2, RDS(MySQL), S3, CodeDeploy, Git Action ✔ 와이어 프레임 ✔ API 명세 ✔ Back End 프로젝트 구조 - domain - user - service - entity - repository - controller - dto - post - comment - auth - global - util - exception - type - config Git Lin..
[230720] [미니] 모여봐요 인생네컷 Jenkins Git Submodule Clone 문제 Jenkins에서 Git Clone시 Submodule이 같이 Clone이 안 되는 문제 ✔ 원인 💢 Submodule 설정 이후 Jenkins에서 자동 빌드 & 배포를 했다. 그런데 application.properties가 없어서 정상적으로 애플리케이션이 서버에서 실행이 되지 않았다. 문제는 Jenkins에서 Git Repository Clone 할 때 Submodule Repository를 가져오지 않아 application.properties 파일이 누락된 것이었다. ✔ 원인이 되는 Jenkinsfile Script stage('Prepare') { steps { echo 'Clonning Repository' git url: 'git@github.com:mini-project-evey-team..
[230719] [미니] 모여봐요 인생네컷 Git에서 application. properties 보안 이유 💬 Jenkins에서 자동 빌드 및 배포를 위해서 Git Repository에 Application.properties 파일이 포함되어야 했다. 그런데 DB, S3 등 중요한 정보가 담겨 있어서 문제가 되었다. 이걸 해결하기 위해 별도 Private Repository를 만들어 배포 코드 Repository의 Submodule로 사용하기로 했다. Submodule 적용하기 ✔ 진행 1. Private Git Repository 생성 2. Application Repository에서 submodule 추가 ➡ git submodule add https://github.com/mini-project-evey-team/four-cuts-backend-security.git 3. application.pr..
[230718] [미니] 모여봐요 인생네컷 HTTPS 설정 HTTPS 설정 ✔ AWS 설정 1. Route 53 -> 호스팅 영역 -> 호스팅 영역 생성 2. 호스팅 영역 설정 및 생성 도메인 이름 : 구입한/할 도메인 이름 설명 : 필요시 입력 나머지 : Default 3. Route 53 -> 호스팅 영역 -> 생성한 호스트 세부 정보 -> 레코드 생성 4. 레코드 생성 설정 및 생성 값 : EC2 Public IP 나머지 : Default 5. 유형 NS 값/트래픽 라우팅 대상 복사 ✔ 가비아 설정 1. 도메인 구매 2. My 가비아 -> 도메인 -> 관리 -> 네임서버 설정 3. AWS에서 복사한 NS 값/트래픽 라우팅 차례대로 입력 ✔ 서버 설정 1. certbot 설치 ➡ sudo snap install --classic certbot 2. certb..
[230717] [미니] 모여봐요 인생네컷 CI/CD 구성 (3) Git Web Hook 설정 💬 Git Repositroy에 이벤트가 발생 시 Jenkins으로 메시지를 보내기 위해 설정 1.Git Webhooks 설정 페이지로 이동 Git Repository Of Application -> Settings -> Code and automation -> Webhooks -> Add webhook 2.Git Webhooks 설정 Payload URL: https://Jenkins domain:Jenkins port/github-webhook/ Content Type : application/json Which events... this webhook? : Just the push event select Active Check 3.Git Webhooks 생성 Spri..