CI CD 파이프라인 (10) 썸네일형 리스트형 jenkins 포트 변경하기 (Ubuntu 20.04 기준) sudo vim /etc/default/jenkins 다들 해당 파일에서 HTTP_PORT= 로 수정하면 된다고 착각한다. 수정하여 프로세스를 띄워도, 결국 jenkins 프로세스는 기본 jenkins 포트이다. jenkins.service 파일을 수정해야한다. sudo chmod 777 /usr/lib/systemd/system/jenkins.service sudo vim /usr/lib/systemd/system/jenkins.service jenkins.service는 애초에 read only 이기때문에 파일의 권한을 777로 바꿔준다. 그리고 Environment="JENKINS_PORT=8080" 부분의 포트를 원하는 포트로 수정해주자. sudo chmod 444 /usr/lib/systemd/.. React 프로젝트 쉽게 무중단 배포하기 (EC2 + Nginx + Jenkins) (기본적으로 AWS 사용법을 알고 있다고 생각하고 글을 작성하였습니다.) 안녕하세요. 대부분의 회사들은 죽지않는 서비스를 만들기 위해 무중단 배포를 구축한다고 하네요. 그래서 저도 무중단 배포가 너무 해보고 싶었어요. 만들면서 여러 삽질도 하면서 포기도 했다가 그러면서 제 방법이 정답은 아니지만, 무중단 배포가 되는 환경을 구축했습니다. 여러분들은 시간 낭비하지않게 쉽게 설명해드리고 저의 지식을 공유해드리겠습니다. 우선 무중단 배포가 뭘까요? https://hudi.blog/zero-downtime-deployment/ 무중단 배포 아키텍처와 배포 전략 (Rolling, Blue/Green, Canary) 중단 배포 방식과 다운타임 다운타임 서버 한대로 서비스를 운영한다고 가정해보자. 현재 서버에는 V1.. FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory 사건의 발단 jenkins 를 이용해서 react 프로젝트 빌드 스크립트를 작성했다. > npm run build 그런데 돌아오는 건 이 에러였다. 뜻을 해석해보니 자바스크립트 힙 메모리 부족이라고 한다. 해결 1차원적으로 생각해보면 힙 메모리 설정을 늘려주면됀다. jenkins 관리 -> 시스템 설정 위에 그림처럼 NODE_OPTIONS : max-old-space-size=3072 해주자 jenkins 빌드 후 + Discord 알림 연동 목표 : jenkins 에서 job이 종료되고 나면 , post stage에서 성공/실패에 따라Discord 알림 기능을 전송 할수 있다. 먼저 jenkins 와 Discord 를 연동 해줘야 합니다.(서로를 알아야 연동이 된다.) 1. jenkins 접속 후 플러그인 설치 2. discord 알림받을 채널의 웹후크 생성 생성하면 웹후크 URL 복사 라는 버튼이 있으니 복사를 해놓습니다. 3. jenkins pipeline script 작성 pipeline { agent any post { success { discordSend description: "알림테스트", footer: "테스트 빌드가 성공했습니다.", link: env.BUILD_URL, result: currentBuild.currentR.. 젠킨스 파이프라인 스크립트 작성 젠킨스에 파이프라인 스크립트 작성할때 참고 하세요. [순서] stage('kill port') -> stage('github clone') -> stage('build') -> stage('Deploy') 1. kill port 의 steps 을 보면 lsof -t -i :8080 -s TCP:LISTEN 명령어를 이용하여 8080포트로 실행중인 프로세스의 PID 값을 얻어올 수 있습니다. 그 얻어온 PID 값이 있으면, kill -9 명령어를 이용해, 포트를 죽입니다. (혹은 PID 값이 없으면 pid is empty 라는 텍스트만 줍니다.) 2. github clone 의 steps 을 보면 git 에 등록해놓은 credentialsId와 깃주소를 입력해 연동해놓습니다. 3. build 의 steps.. Docker와 Jenkins로 자동빌드 및 Slack 알림 뱃지 발송(5) - mac 마지막으로 github push 이벤트가 발생할 시 slack에 알림이 가도록 연동해볼게요. 일단 slack을 다운로드 합시다. 슬랙 다운로드하기(mac os 전용) Slack 슬랙을 통한 생산성과 스타일 slack.softonic.kr slack을 다운로드 받은 후 회원가입을 해줍니다. 로그인 후 , 워크스페이스를 만듭니다. 저는 project 라는 이름을 가진 워크스페이스를 만들었습니다~. 앱을 클릭합니다. 앱에 들어가서 jenkins CI 를 검색하여 설치합니다. 다음단계로 넘어가게 되면 아래의 항목들이 보이게 됩니다. 1.팀 하위 도메인 2.통합 토큰 자격 증명 ID 이 두가지는 사용해야하니 꼭 메모를 해둡시다. Jenkins 에서 설정이 이제 필요합니다. Jenkins 관리 > 시스템 설정 > .. Docker와 Jenkins로 자동빌드 및 Slack 알림 뱃지 발송(4) - mac 젠킨스 파이프라인(pipeline) 프로젝트 생성을 해볼게요. 파이프라인 생성 체크 박스를 선택합니다. Github project Github hook trigger for GITScm polling 아래 스크립트를 Pipeline 스크립트 영역에 붙여넣습니다. (Declarative 방식) Github에서 다운받을 브랜치와 레포지토리 정보를 입력합니다. 이전 단계에서 만든 github_access_token Credential을 추가합니다. pipeline { agent any stages { stage('Checkout') { steps { git branch: 'main', credentialsId: 'github_access_token', url: 'https://github.com/본인의깃주소'.. Docker와 Jenkins로 자동빌드 및 Slack 알림 뱃지 발송(3) - mac 본인 github 과 jenkins 과의 연동이 끝났으니, Github 개인 레포지토리 Webhook 설정을 해보도록 하겠습니다. Webhook이란? Github 웹훅(webhook)을 이용하면 특정 이벤트를 감지하여 CI/CD 파이프라인 시작점으로 연결할 수 있습니다. 쉽게말해 github에 push(소스가변경이되면) 을 하면 이벤트를 자동으로 감지하여, jenkins에 자동빌드되도록 하기위함입니다. 개인 레포지토리에 들어가서 Settings 을 선택하여 웹훅 등록 화면으로 이동합니다. Settings > Webhooks Add webhook 버튼 클릭하세요. Payload URL - 젠킨스 서버 주소에 /github-webhook/ 경로를 추가하여 입력합니다. http://locahost:8080를 .. 이전 1 2 다음