Jenkins x GitLab CI/CD 구축하기

Hurlang·2023년 4월 17일
0

linux

목록 보기
6/8
post-thumbnail

jenkins X Gitlab 연동

jenkins 관리 > 플러그인 관리 > Available plugins > "gitlab" 검색

gitlab 설치

Generic Webhook Trigger Plugin 설치

new job > freestyle 생성

소스 코드 관리

  • Git

    • Repo URL : gitlab repo 주소

    • Credentials > add > jenkins

      • Kind를 'Username with password'로 변경

      • UserNamegitlab 계정 아이디
        Passwordgitlab 계정 비밀번호
        idCredential을 식별하는 아이디
        DescriptionCredential에 대한 설명
    • Branch Specifier 설정

      • /main 혹은 /master 혹은 /develop 등

빌드 유발

  • Build when a change is pushed to GitLab. GitLab webhook ... 클릭
    • Push Events 체크
    • Opened Merge Request Events 체크

Build Steps

  • Add build step > Execute shell

  • 아래는 테스트 코드임 (나중에 도커빌드 등 코드 입력)

    echo 'jenkins build started..'

저장


gitlab 접속

연동할 repo > Settings > Webhooks

gitlab에서 빨간 네모부분 작성 후 아래로 스크롤하면

Project Hooks가 생성되어 있음.

Test > push events 클릭 -> 젠킨스에서 자동 빌드 되는지 확인

Jenkins x deploy-server연동

jenkins서버

배포서버 EC2 인스턴스로 접근하기 위해서 pem 형식의 ssh 키 생성

sudo mkdir /var/lib/jenkins/.ssh
ssh-keygen -t rsa -C "키명칭" -m PEM -P "" -f /var/lib/jenkins/.ssh/"키명칭"

ex) sudo ssh-keygen -t rsa -C "jenkins-deploy" -m PEM -P "" -f /var/lib/jenkins/.ssh/jenkins-deploy

공개키를 검색해서 복사

sudo cat /var/lib/jenkins/.ssh/jenkins-deploy.pub
ex)
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDD4HoSH8EbaSRqbf7hLeIlvvn/TnWX5rxJdAJ69GTdwJWi7hwpc6VX2Em5NUHXcE2gGsgFjCNeP1WVMacc3K+F+SCi7R2mpXZh/xbNbykPjBhDc/XtsaCOcyrgO9BvVzJ5Q6NVtn5UbFr+r7/VpcMvfe9/Nn+aIk/t4ZBxs7PZFRfJxXXf/c5Is6oGYInn13hzSq9bhk52FWFG/WtK1Ymm9SLPy2lhtghcbQJ8BZ9CEIfPt8cvEopWHGIzmIMrhgMFk/iQef7Ka/QdQwJiBDEtaQfmOP8fn1Xz0IE4S1jj2s+NoZcsJDoyVlCox3zRzOKuOELZXrlOezvClCGs6j+bo//K8GLjoYg4tQaFOaXd/V2k5KzBqU7flk3ITvAnaTu0CjmzgNrHQ5l7LbhrxTP/WgNYpkxH8sJOgt7E0bbUzuYML+H7heAPZrjZQR3ktzcuDTQv0/G9hHj6ikI9C232U322MGxQmmK9xRBhTDCiqSkkQz3CFAk3X4Zi67qtwiE= jenkins-deploy

배포서버 (사전에 docker 설치)

pub키 등록

ec2 접속 후 아래 명령어 입력하여 상술한 공개키 추가하기(아랫줄에 추가)

sudo nano .ssh/authorized_keys

jenkins 사이트에 접속

publish over ssh 플러그인

jenkins 관리 > 플러그인 관리 > 설치가능 탭에서 publish over ssh 플러그인 설치

jenkins 관리 > 시스템 관리 > publish over ssh 영역의 SSH servers 추가버튼 클릭

Path to Key는 Private key의 경로를 작성

/var/lib/jenkins/.ssh/jenkins-deploy

Key는 Private key 파일안의 내용을 복사 붙여넣기

sudo cat /var/lib/jenkins/.ssh/jenkins-deploy
ex)
-----BEGIN RSA PRIVATE KEY-----
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
-----END RSA PRIVATE KEY-----

Name은 접속할 ssh 서버의 이름을 작성

ex) deploy-server

hostname은 접속할 인스턴스의 주소(배포서버 ip)

ex) 52.78.76.246

username은 접속할 유저명

ex) ubuntu


Jenkins freestyle

  • 빌드 환경 (publish over ssh 플러그인 설치를 미리해야함)

    • Send files or execute commands over SSH after the build runs

      • Name : 배포 서버 이름 입력

      • Exec command : 배포 서버에서 실행할 명령어 입력

        			sudo docker ps -q --filter name=test | grep -q . && sudo docker rm -f $(sudo 		docker ps -aq --filter name=test)
        			sudo docker rmi repo/test
        			sudo docker pull repo/test
        			sudo docker run --rm -d --name test -p 8090:8090 repo/test
  • Build Steps

Execute shell

cd BE
chmod +x gradlew
./gradlew clean build --exclude-task test
cd BE
docker build -t {도커 이미지} .
docker push {도커 이미지}
profile
개발 꿈나무 Hurlang 입니다.

0개의 댓글