Github Actions이란? Github Actions이란 Github에서 제공하는 워크플로우(workflow)를 자동화하도록 도와주는 도구이다. 테스트, 빌드, 배포 등의 다양한 작업들을 자동화하여 처리한다. ※ 깃헙액션과 같은 다른 도구는 무엇이 있는가? 젠킨스 Jenkins 는 Java 기반, 크로스 플랫폼, 오픈 소스 CI/CD 도구이다. 지속적인 제공과 함께 지속적인 통합을 제공한다. 또한 실시간 테스트 및 보고가 가능하다. Jenkins Pipeline은 전달 파이프라인을 "코드로" 모델링하는 데 사용할 수 있는 도구 세트를 제공한다. Jenkins는 DSL(도메인별 언어)을 사용하여 파이프라인을 구현한다. 그것은 오픈 소스이며 오랫동안 존재했기 때문에 널리 사용되는 최고의 CI/CD 도구..
🎈deploy.sh 작성 → 리눅스 쉘 스크립트 작성 : CI/CD는 개발자가 하는 작업을 다양한 프로그램들을 활용하여 자동으로 통합배포하는 것이다. 따라서 자동배포에 사용하는 프로그램들이 어떤 과정으로 이루어지는지 정확히 알아야했다. CI/CD를 구현하는 프로그램들은 아무것도 없이 알아서 해주는게 아니다. 개발자가 직접 코드를 작성하여 명령을 해주어야한다. 그러한 과정 중에 작성하는 쉘 스크립트는 제대로 경험해보지 못했기에 CI/CD 과정중에 맞닥뜨린 기억에 남는 트러블 슈팅 중 하나이다. 백엔드는 해당과정에서 발생한 트러블 슈팅에 대해서 공유해보도록 하겠다. GithubAction + S3 + CodeDeploy 를 사용하여 CI/CD를 구축하는데 해당 과정 중 ec2에서 실행될 deploy.sh 파..
CICD 란 무엇인가? CI는 지속적인 통합(Continuous Integration)을 의미한다. 여러 명의 개발자가 동시에 개발할 때, 코드 작업을 하면 정기적으로 빌드 및 테스트 과정을 거쳐 공유 리포지토리에 통합된다. CD는 Continuous Delivery\ Continuous Deployment를 의미한다. 변경 사항을 리포지토리에서 고객이 사용 가능한 프로덕션 환경까지 자동으로 릴리즈하는 것을 의미한다. 각자 작업한 코드들을 통합하고(CI), 자동으로 프로덕션 프로그램에 배포한다(CD) Github Actions / AWS S3 , Code Deploy를 사용한 배포 과정 aws에서 S3, IAM, CodeDeploy, ec2 설정 github repository에 push/pr 후 테스트..
도커를 실행하다보면 위와 같은 에러를 발견하게 된다. 본인이 해당 에러를 맞닥뜨린 이유는 github action을 이용하여 도커 컨테이너를 배포 시 스크립트에서 올라와 있는 컨테이너를 내리지 않았기 때문에 발생하였다. 따라서 포트를 계속해서 사용하고 있기에 컨테이너가 올라갈 수 없었다. 위와 같은 에러가 발생하는 경우 사용하고자 하는 포트를 확인하여 해당 포트에 맞는 pid의 프로세스를 죽이도록 한다. ps -ef | grep java 를 입력하여 현재 실행중인 자바 어플리케이션을 확인한다. pid를 확인한 후 kill -9 {pid 번호} 를 입력하여 현재 실행중인 프로세스를 삭제한다. 다시 실행을 하면 된다. 본인과 같은 상황이 아니라면 아래의 출처의 블로그에 들어가서 보기를 바란다. 출처 : ht..
docker 컨테이너를 생성 시 컨테이너에 들어가 date 명령어를 실행하면 컨테이너의 날짜가 TZ=Asia/Seoul 과 다른 것을 볼 수 있을것이다. 로그를 확인하기 위해서는 알맞은 시간을 확인을 해야하기 때문에 컨테이너의 TZ을 Seoul에 맞추도록 한다. 맨 처음에는 github action 쉘 스크립트 파일에서 run 명렁어와 함께 사용하여 volume 명령어로 시간을 맞추려고 하였는데 로그파일 volume 명령어와 함께 사용하다 보니 날짜 명령어가 실행되지가 않았다. 후에 찾아보니 dockerfile에서 설정을 하여 실행 할 수 있다. RUN apt-get update && \ apt-get install -yq tzdata && \ ln -fs /usr/share/zoneinfo/Asia/S..
도커 컨테이너에 저장된 로그는 컨테이너가 없어지면 로그도 함게 없어지기에 기록된 로그를 볼 수 없게된다. 따라서 이를 해결하기 위해서 도커 볼륨을 활용하여 WAS에 컨테이너의 로그들을 기록하도록 한다. 컨테이너 directory에 만들어지는 log 파일은 /log.config.path_IS_UNDEFINED/err_log.log 이다. 만들어지는 파일을 host 서버에 volume을 이용해 Directory Path를 mount 하여 host Directory에 해당 파일을 볼 수 있도록 한다. 설정 github action이 도는 gradle.yml 에서 sudo docker run -itd --rm --name server -p 80:8080 ${{ secrets.DOCKER_REPOSITORY }}..
Linux 에서 도커에 로그인 후 docker run 레포 명렁어를 진행하였는데 " login': denied: requested access to the resource is denied. " 에러가 발생하였다. 리눅스에서 권한의 문제가 일어난다면 -> 도커에 대한 명령어를 실행할 때 sudo를 계속해서 입력하는 불편함을 이겨내기 위해서는 WARNING: Error loading config file: /home/ubuntu/.docker/config.json: open /home/ubuntu/.docker/config.json: permission denied 매번 docker 명령어를 칠때 앞에 sudo를 붙이고 있었는데 docker daemon이 TCP port 대신에 Unix socket을 사용..
h2 란 무엇일까? document를 살펴보자 http://h2database.com/html/main.html the Java SQL database. The main features of H2 are: Very fast, open source, JDBC API Embedded and server modes; disk-based or in-memory databases Transaction support, multi-version concurrency Browser based Console application 특징을 살펴보면 -> 자바 sql db이며, 빠르고 내장형 인메모리 db이며 브라우저 기반의 콘솔 어플이다. Connection Modes Embedded mode (local connectio..