프론트엔드에서 api를 호출하는 부분을 구현하기 전에 백엔드 api를 실행시켜서 그 상태로 프론트엔드에서 활용하고 싶어 백엔드를 서버에 올리는 작업을 먼저 했다.
서버
aws에서 제공하는 프리티어 서버를 사용했다.


프로그램 설치
docker를 이용해서 젠킨스를 설치했다.
우선 자바와 docker, docker-compose를 설치한다.
그 후, 실행하는 위치에 docker 실행을 위한 yml파일을 만들었다.
version: "3"
services:
jenkins:
image: jenkins/jenkins:lts
user: root
volumes:
- ./jenkins:/var/jenkins_home
ports:
- 8080:8080
파일을 만든 위치에서 `sudo docker-compose up -d' 를 실행하면 jenkins가 실행된다.
jenkins 실행
처음 실행할 경우 입력하는 비밀번호는 다음 명령어를 입력해서 찾을 수 있다.docker exec <CONTAINER_NAME> cat /var/jenkins_home/secrets/initialAdminPassword
그리고 pipeline을 생성하는데, github에서 public access token을 발급받아 jenkins에 등록하고, 이걸 이용해서 webhook을 연결한다. pipeline을 생성하면서 설정하는 항목으로는 Github project, 오래된 빌드 삭제(선택), GitHub hook trigger for GITScm polling 이다.

webhook에 ec2의 실행 주소를 넣고 주소 뒤에 /webhook/을 붙여 http://{서버주소}:{port번호}/webhook/
형태로 넣어준다.

이후 webhook 기능을 포함하는 personal access token을 생성하고,

위에서 발급받은 token을 넣어주고 이 credentials의 id는 script를 작성할 때 credentialsId로 넣어 사용한다.
소스코드는 다음처럼 예시를 작성했다.
pipeline {
agent any
stages {
stage('Checkout') {
steps {
git branch: 'master',
credentialsId: 'github_jenkins_access_token',
url: 'https://github.com/Heejeong01110/reviewer_be.git'
}
}
}
}
여기까지 잘 진행됐다면 프로젝트에서 commit message가 날아올 때 자동으로 build가 진행된다.

여기까지는 CICD라고 하기는 많이 부족하다. 이제 스크립트를 작성해서 빌드와 배포까지 실행되도록 해야하는데 좀더 공부해서 작성해야될 것 같다.
script 문법 공부를 하던 중 원인을 알 수 없는 오류가 발생했다.

프로젝트를 clone 해 온 상태로 jar 파일 생성을 위해서 ./gradlew build
를 실행했는데 위 그림처럼 거의 모든 파일에서 오류가 난 것 같이 171개의 에러가 있다고 뜬다.
혹시나 해서 로컬 환경에서 똑같이 java 버전을 맞춰서 ./gradlew build
를 실행했는데 여기서는 너무 잘 됐다....
또 용량의 문제일 수도 있다고 하지만 이미 메모리 swap 처리를 한 상태라서 잘 모르겠다
뭔가 java를 제대로 인식하지 못한 문제이지 않나 하고 찾아보는 중인데 로컬 외의 환경에서 build 작업을 할 수 없으면 다른 CICD 방법을 찾던가 도커에 jar 파일을 올려서 실행시키는 방식으로 해야될 듯 하다.
'토이프로젝트 > 리뷰어(영화 리뷰 사이트)' 카테고리의 다른 글
백엔드 cicd 구축하기3 (0) | 2023.07.21 |
---|---|
백엔드 cicd 구축하기2 (0) | 2023.07.21 |
영화 정보 크롤링 Api 구현 (0) | 2023.06.01 |
영화 정보 크롤링 하기 (0) | 2023.05.25 |
16일차 - JPA N+1 문제 (0) | 2022.11.07 |