반응형

Infra 42

[CI] Github Actions로 빌드 및 테스트를 자동화해보자

CI(Continuous Integration)는 지속적인 통합을 의미하며, 개발자가 구현한 코드를 병합하여 자동으로 빌드 및 테스트를 진행한 후 문제가 없으면 배포를 진행하는 것을 의미한다. CI 툴 없이 Git Conflicts 만으로는 안전한 병합을 기대하기 어렵다. 그 이유는 아래 글을 참고하자. https://kth990303.tistory.com/363 [Git] git no conflict를 너무 믿지 말자 부제: CI/CD 툴 Jenkins, github actions의 중요성 부제 2: 작업 브랜치에 아무리 충돌날만한 게 없다고 생각되더라도 항상 최신 base branch를 반영해주자 너무나도 당연한 걸 간과해서 오늘 또 삽질을 했다 kth990303.tistory.com 이번 포스팅에선..

Infra/CI | CD 2022.08.19

[Sonarqube][Error] Process exited with exit value [es]: 137 해결

sonarqube(소나큐브)를 연동하여 띄우려 하던 도중 아래 에러가 발생했다. 2022.08.12 10:05:27 INFO app[][o.s.a.AppFileSystem] Cleaning or creating temp directory /app/sonarqube/sonarqube-7.6/temp 2022.08.12 10:05:27 INFO app[][o.s.a.es.EsSettings] Elasticsearch listening on /127.0.0.1:9001 2022.08.12 10:05:27 INFO app[][o.s.a.p.ProcessLauncherImpl] Launch process[[key='es', ipcIndex=1, logFilenamePrefix=es]] from [/app/sona..

Infra/CI | CD 2022.08.19

[Sonarqube][Error] You're not authorized to run analysis. Please contact the project administrator. 해결

sonarqube를 프로젝트와 연동하여 PR이 올라올 때마다 build 결과를 sonarqube에게 전송해주려 했다. 그런데 빌드가 실패하면서 아래와 같은 에러를 마주하게 됐다. You're not authorized to run analysis. Please contact the project administrator. SECRET_HOST_URL, SECRET_TOKEN 값도 제대로 들어오고 있었고, Sonarqube의 Server Base Url에도 올바른 값을 지정해주고 있었다. 근데 왜 에러가 발생하는걸까? 해결 방법 나의 경우는 원래 아래와 같이 properties를 build.gradle에 모두 명시해주고 있었다. 중요한 환경변수는 github의 Secret Configuration을 이용해..

Infra/CI | CD 2022.08.18

[Sonarqube][Error] Process exited with exit value [es]: 78 _ max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] 에러 해결

정적 코드 분석 툴인 sonarqube(소나큐브)를 띄우려 하던 도중, 아래와 같은 에러가 발생했다. ERROR: [1] bootstrap checks failed [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] Process exited with exit value [es]: 78 Process[es] is stopped SonarQube is stopped 소나큐브 EC2 db를 h2에서 postgreDB로 마이그레이션했더니 vm.max_map_count이 부족하다는 에러가 떴다. ec2 인스턴스의 vm.max_map_count를 늘려줘야겠다. 세팅 방법 1. 아래 명령어를 s..

Infra/CI | CD 2022.08.18

[Git] git no conflict를 너무 믿지 말자

부제: CI/CD 툴 Jenkins, github actions의 중요성 부제 2: 작업 브랜치에 아무리 충돌날만한 게 없다고 생각되더라도 항상 최신 base branch를 반영해주자 너무나도 당연한 걸 간과해서 오늘 또 삽질을 했다. 일기장처럼 오늘 삽질한 내용에 대해 적어보려 한다. (지나가던 애기가 깔깔깔 배를 잡으면서 웃을만한 정도로 부끄럽고 바보같은 트러블 슈팅이다.) base branch (develop)에 PR을 하나 머지한 후에, 겹치는 부분이 없다고 생각해서 별도로 작업 브랜치 (feature)에는 pull (fetch merge)해주지 않고 이어서 작업한 후에 PR을 날렸다. 좋아, 테스트도 잘 되고, 실행도 잘 되는 걸 확인했다! Build Successful도 확인했다! base 브..

Infra/Git 2022.08.17

[AWS] Swap File을 이용해 EC2 메모리 부족 현상을 해결해보자

작업을 하던 중 aws ec2 메모리 부족현상이 발생했다. 우리가 사용하고 있는 t4g.micro 인스턴스 유형은 램이 1GB였고, 이는 메모리 부족현상을 충분히(?) 볼 수 있을 정도로 작은 양의 메모리였다. 이러한 현상을 어떻게 해결할까 고민하다가 swap file을 이용한 swap memory 할당이라는 방법을 알게 됐다! 스왑 파일을 이용한 스왑 공간 할당 ec2 램 메모리가 가득 찼기 때문에 실제 디스크의 용량을 이용하여 부족한 메모리를 대체할 공간을 swap memory(스왑 공간)이라 한다. 이번 포스팅에서는 linux에서 swap file을 생성하여 스왑 메모리를 할당하는 방법을 기록할 것이다. 보통 swap memory는 할당된 램 메모리의 2배 또는 그 이상을 추천하고 있다. 내가 사용..

Infra/Aws 2022.08.13

[AWS] AWS Educate에서 더 이상 무료 프리티어 기능을 제공해주지 않는 것 같다

학교 계정으로 AWS Educate을 이용해 신용카드 없이 ec2 인스턴스를 생성해보려 했다. 그래서 aws educate를 접속하고 로그인해본 결과... 예전과는 다르게 사이트 UI가 싹 바뀌고 Console 접속하는 버튼이 사라진 것을 확인할 수 있었다. 구글링하면 분명 aws educate으로 console에 접속하여 신용카드 등록하여 가입하는 과정 없이 ec2를 생성할 수 있다고 하는데... 신용카드가 없던 나에겐 한줌의 단비같은 소식이었는데... 그래서 결국 방법을 도저히 찾지 못해 aws 고객센터에 콩글리쉬로 papago의 도움을 이용하여 겨우겨우 문의해보았다. 그리고 5분만에 바로 답장을 받았다! 19시에 메일을 작성해서 미국 기준으론 출근한 시간대여서 그런가, 매우 빠르게 답장이 왔다 ㅎㅎ..

Infra/Aws 2022.08.08

[Infra] Spring + JPA 환경에 Flyway를 적용해보자

flyway는 DB 형상관리 오픈소스 툴이다. 즉, db schema가 변경이 발생할 때 flyway라는 툴로 관리를 할 수 있는 것이다. 이번 포스팅에서는 flyway 적용 방법에 대해 아주 간단히 알아볼 것이다. Flyway 사용 이유 배포 환경(prod)에서는 ddl-auto를 create, update, create-drop을 지양해야 한다. 배포된 db의 데이터들이 모두 증발될 수 있기 때문이다. 따라서, db schema 변경이 있을 때에 우리가 직접 배포 환경 db에 접속하여 schema를 작성해주어야 한다. 이는 매우 번거로우며 위험성 또한 높다. Flyway를 사용하면 이러한 번거로운 작업이 사라지게 된다. 변경된 스키마를 한눈에 확인할 수 있어 스키마 버전 관리에 용이해진다. flywa..

Infra/CI | CD 2022.08.08

[Github] 커밋, PR 공동 작업자로 세팅하기_ Co-authored-by

페어 프로그래밍, 몹 프로그래밍 등으로 공동 작업을 하다보면, 위 사진처럼 커밋을 할 때 공동작업자로 설정해주고 싶을 때가 있다. 어떻게 해주면 되는걸까? Co-authored-by 이용하기 Co-authored-by: {github 핸들명} ex) Co-authored-by: kth990303 바로 위처럼 커밋할 때, body에 co-authored-by를 입력해주면 된다! 커밋 메시지를 적어준 후에, 두 칸 띄운 후 공동작업자를 세팅해주면 된다. 만약 터미널에서 커밋을 한다면 아래처럼 body로 적어줄 부분에 Description을 언급해주고 위 공동작업자를 세팅해주면 된다. git commit -m "Title" -m "Description .........."; 참고로 Squash And Merg..

Infra/Git 2022.07.18

[AWS] Mysql + 웹 애플리케이션 AWS에 자동 배포하기

스프링 웹 애플리케이션을 aws 인스턴스에 배포하는 방법은 지난 포스팅(329번 포스팅)에 작성했었다. 또, 자동 배포 스크립트를 생성하여 배포하는 방법도 334번 포스팅에 작성했다. https://kth990303.tistory.com/329 [AWS] AWS EC2를 이용하여 스프링 웹 애플리케이션 배포해보기 AWS는 아마존에서 개발한 클라우드 서비스 플랫폼이다. 여기서 클라우드 서비스란, IT 리소스(CPU, 메모리 등의 자원)를 인터넷으로 빌려주고 사용한 만큼의 비용을 받는 것을 의미한다. EC2는 Elasti kth990303.tistory.com https://kth990303.tistory.com/334 [AWS][Spring] Aws 우분투 인스턴스 웹 애플리케이션 자동 배포 스크립트 만들..

Infra/Aws 2022.06.08
반응형