관리 메뉴

ballqs 님의 블로그

[CI/CD] 자동 배포 파이프 라인 (2) - Jenkins 관리 설정 본문

코딩 공부/CI-CD

[CI/CD] 자동 배포 파이프 라인 (2) - Jenkins 관리 설정

ballqs 2024. 11. 17. 20:15

이전 글에서 Docker로 Jenkins를 올려서 UI에 접근이 되는것까지 확인되었습니다.

이번 내용에서는 Java , Gradle , Plugins , Credentials 설정 하는 것을 작성하려고 합니다.

 

Jenkins 관리 설정

docker exec -it [Docker Container ID] /bin/bash 로 들어가거나 Docker Desktop를 통해 Jenkins 컨테이너에 접근해서 Exec를 보거나 하면 상황에서 env 명령어를 치면 아래와 같이 나옵니다.

JAVA_HOME = /opt/java/openjdk 이부분을 기억해둡시다.

 

Jenkins 화면으로 돌아가서

Dashboard > Jenkins 관리 > Tools

위에서 확인했던 /opt/java/openjdk 값을 넣고 Name은 open JDK 로 설정합시다.

Gradle로 추가적으로 설정해주어야 합니다. 왜냐면 이 작성글은 JDK 17 의 Gradle로 만든 프로젝트 기반으로 진행하기 때문입니다.

 

Gradle [버전] 으로 설정해줍시다.

※Gradle [버전] 이라고 하면 화면에 나오는게 Gradle 8.11 이면 name도 Gradle 8.11 설정하는 것을 의미합니다.

save로 해당 설정을 빠져나오면 됩니다.

 

Dashboard > Jenkins 관리 > Plugins

 

Plugins > Available plugins

아래의 플러그인을 설치합시다.

  • Stage View: Jenkins의 Stage View 플러그인은 빌드 파이프라인을 시각화하고 각 단계의 상태를 한눈에 볼 수 있게 해줍니다. 이를 통해 빌드 및 배포 프로세스의 진행 상황을 추적하고, 문제 발생 시 빠르게 식별할 수 있습니다.
  • Docker Pipeline: Jenkins와 Docker를 통합하여 파이프라인에서 컨테이너 환경을 쉽게 생성하고 사용할 수 있습니다. Docker Pipeline 플러그인은 빌드 단계에서 컨테이너를 스핀업하거나 배포 작업을 컨테이너에서 실행함으로써 일관된 환경을 보장합니다.
  • Publish Over SSH: 이 플러그인은 Jenkins에서 빌드 결과물을 원격 서버로 전송할 때 사용됩니다. SSH 연결을 통해 안정적으로 파일을 배포하거나 명령어를 원격 서버에서 실행할 수 있어 배포 자동화가 수월해집니다.
  • SSH Agent: Jenkins 파이프라인 내에서 SSH 인증이 필요한 작업을 수행할 때 SSH Agent 플러그인을 사용하여 보안이 강화된 방법으로 SSH 키를 관리하고 명령어를 실행할 수 있습니다. 이를 통해 비밀번호나 민감한 데이터의 노출 없이 안전하게 원격 서버와 상호작용할 수 있습니다.
  • Slack Notification: Jenkins와 Slack을 통합하여 빌드 및 배포 상태에 대한 알림을 실시간으로 전달합니다. 빌드 성공, 실패, 시작 등의 이벤트를 Slack 채널로 전송함으로써 팀이 즉시 피드백을 받을 수 있어 협업이 원활해집니다.

 

Dashboard > Jenkins 관리 > Credentials

+Add Credentials 를 눌러서 키를 3개 추가해야 합니다.

  • github-access-token
  • docker-access
  • aws-key

 

github-access-token 추가 방법

GitHub Token 발급 받는 방법

더보기

토큰 생성해주고 해당 토큰 값을 기억합시다.

 

 

 

docker-access 추가 방법

https://www.docker.com/products/docker-hub/

 

The World’s Largest Container Registry | Docker

Docker Hub is a container registry built for developers and open source contributors to find, use, and share their container images and access verified content.

www.docker.com

Docker Hub 링크에 들어가서 계정이 없다면 하나 만들어 두어야 합니다!

또한 계정이 있다면 로그인 검증해보시면 됩니다.

 

aws-key 추가 방법

Kind를 SSH Username with private key 로 바꿔줍시다.

ID : aws_key

Description: aws_key

Username: ubuntu 혹은 ec2-user

Treat username as secret 체크

Enter directly 체크

 

하여 진행하시면 됩니다.

 

add 버튼을 누르고 pem 파일의 내용을 복사해서 추가합니다.

-----BEGIN RSA PRIVATE KEY-----
{키 값들}
-----END RSA PRIVATE KEY-----

 

Jenkins SLACK 알림 설정

적용할 워크스페이스 URL 찾아 둡시다.

slack 고유 식별자를 알아 낸 후 URL에 /apps 경로를 추가하여 접근하면 됩니다.

https://17-5ur8811.slack.com/apps

 

앱 찾기

 

Jenkins CI를 찾아서 Slack에 추가해줍시다.

채널 지정!!(없다면 새채널 생성해서 지정합시다!!)

 

설정 지침

※위에 plugins를 설치하는 방법을 적어놨지만 혹시 모르니 여기에도 작성합니다.

Dashboard > Jenkins 관리 > System

 

System에서 내리다보면 아래와 같은 화면이 나옵니다.

 

Workspace는 위에서 찾았던 17-5ur8811[Slack Workspace 고유 식별키] 값으로 넣고

Default channel은 jenkins를 추가했을때 지정한 채널명칭을 적어둡시다.

 

Credential 추가 설정

Secret text 설정 하기

Integration Token Credential ID란?

slack에 Jenkins app 추가시 설정 지침 3단계에 찾아보면 통합 토큰 값이 나와있다.

 

Test Connection

이렇게 알림이 오면 설정 완료 입니다.

 

그러면 다음은 Jenkins에 Item을 추가하여 파이프라인으로 구성하는 것에 대해 작성하고자 합니다.