EC2 환경에서 도커를 활용한 젠킨스 사용법

덤벨로퍼·2024년 2월 21일
0

개인공부

목록 보기
2/11
post-thumbnail
post-custom-banner

1. 간단한 spring project 생성 및 github 에 push

 ls -al
 git ls-tree HEAD
 # gradlew 에 실행 권한을 줘야 젠킨스에서 빌드 가능!!
 git update-index --add --chmod=+x gradlew
 git status
 git add .
 git commit -m "update gradlew chmod"
 git psuh

2. Docker에 Jenkins 설치

📌 주의사항 : **--privileged**

  • 권한 문제로 에러 발생 방지를 위해 추가 권한
 docker run --name myjenkins --privileged -p 8080:8080 jenkins/jenkins:lts-jdk17


431cbcf269264ab3bd2db3f64f4d8f35 를 통해 젠킨스 로그인
단) ec2 보안그룹에 인바운드규칙에 8080 포트가 열려 있어야 한다!

3. jenkins 설정

gitbub 연동을 위해 url 설정

webhook 설정

파이프라인 스크립트 설정

  • 깃허브 연동
  • gradlew 실행 자격을 보기위해 ls -al 명령어 실행
  • 빌드 실행
pipeline {
    agent any

    stages {
        stage('git 연동') {
            steps {
                echo 'start **********'
                git branch: 'main', 
                credentialsId: 'id값', 
                url: 'https://github.com/Dumbveloper/fisa240220.git'
                echo 'end **********'
            }
        }
        stage('ist view'){
            steps{
                echo 'view list *****'
                sh ''' whoami '''
                sh ''' pwd '''
                sh ''' ls -al'''
                echo 'view list *****'
            }
        }
        stage('build'){
            steps{
                echo 'build start *****'
                sh ''' ./gradlew build'''
                echo 'build end *****'
            }
        }
    }
}

4. Github 레포지토리 설정에서 Webhooks 설정

결과

깃허브에 변경내용 push 시 자동으로 webhook 기능으로 알림 정보 우분투에 pull적용 및 빌드 가능

error 😖

AWS 에서 제공하는 t2.micro 단위의 작은 EC2 가 사용자에게 기본적으로 제공하는 메모리 용량은 1GB

스토리지 용량은 30GB로 넉넉하게 제공하지만 1GB의 협소한 메모리 공간으로는 Jenkins로 Build 를 실행시키기에는 턱없이 부족하다.

이를 해결하기 위해, 프리티어 EC2 환경에서는 Linux 에서 제공해주는 RAM Swap 기능을 활용해 EC2 인스턴스를 괴롭히는 것을 멈추고 넉넉하게 메모리 공간을 할당하여 Jenkins 혹은 그 이외의 프로그램들이 원할하게 실행될 수 있는 환경을 만들어주도록 하자.

Ram Swap / Swap Memory 란?
스왑 메모리란, 실제 메모리 Ram이 가득 찼지만 더 많은 메모리가 필요할때 디스크 공간을 이용하여 부족한 메모리를 대체할 수 있는 공간을 의미한다.
디스크 공간을 대신 사용하는 만큼 실제 메모리처럼 속도가 빠르지 않기 때문에 실제 운영환경에서는 사용을 지양하도록 하자.

aws 공식 문서
https://repost.aws/ko/knowledge-center/ec2-memory-swap-file

  1. dd 명령어를 통해 Swap Memory 를 할당한다
sudo dd if=/dev/zero of=/swapfile bs=128M count=32
  1. swap 파일의 읽기 쓰기 권한을 업데이트 한다
sudo chmod 600 /swapfile
  1. Linux swap 영역을 할당한다
sudo mkswap /swapfile
  1. swap 공간에 파일을 추가하여 swap 파일을 즉시 사용할 수 있도록 한다
sudo swapon /swapfile
  1. 진행한 과정들이 성공적으로 실행되었는지 확인한다
sudo swapon -s
  1. /etc/fstab 파일을 편집하여 부팅 시 스왑 파일을 활성화한다
sudo vi /etc/fstab
  1. 파일 끝에 다음 줄을 새로 추가하고 파일을 저장한 다음 종료한다
/swapfile swap swap defaults 0 0
  1. free -m 명령어를 통해 Swap Memory 가 잘 할당됐는지 확인해본다
free -m

Swap 공간이 잘 할당된 것을 확인할 수 있다.

참고.

의문의 일본 코딩 장인
https://breeze-winter.tistory.com/8

profile
💪 점진적 과부하로 성장하는 개발자
post-custom-banner

0개의 댓글