본문 바로가기
AI/MLOps

[Jenkins] CI/CD 실습

by merona99 2024. 11. 22.
반응형
Jenkins

CI/CD 실습

참고강의: 10개의 프로젝트로 한 번에 끝내는 MLOps 파이프라인 구현 초격차 패키지 Online.

 

 

이번 시간에는 가장 대중적으로 쓰이는 CI/CD 툴인 Jenkins를 다뤄볼 것이다.

현재 회사에서도 젠킨스를 사용하고 있다.

어느 채용공고를 보던 대부분 젠킨스이기도 해서 제대로 알아두면 실무에서 유용할 것이다.

 

 

[목차]

  1. 환경 구축
  2. Jenkins Hello World
  3. Jenkins 예시

 

 

 


 

 

1. 환경 구축

docker를 사용해서 Jenkins 환경을 구축 해보자.

 

[기본 경로]

jenkins라는 폴더를 만들고 그 안에서 작업할 것이다.

 

 

[docker-compose.yml 생성]

docker-compose란 간단히 말해서 docker를 쉽게 만들어주는 docker의 하나의 기능이라 볼 수 있다.

해당 파일을 사용해서 docker를 실행하여 Jenkins 설정을 해줄 것이다.

 

 

[docker-compose.yml]

version: '3.8'
services:
  jenkins:
    image: jenkins/jenkins:latest
    ports:
      - "8080:8080"
      - "50000:50000"
    volumes:
      - jenkins_home:/var/jenkinshome
    environment:
      - JENKINS_OPTS=--httpPort=8080
    restart: unless-stopped

volumes:
  jenkins_home:

 

❗️the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion 경고
위 코드를 실행할 때, 이런 경고창이 떳다.

찾아보니 docker-compose v2.25.0 이상 버전부터는
docker-compose.yaml파 일의 최상단에 작성된 version : '3x'을 작성하지 말라는 경고문구였다.
코드 실행에 있어서는 문제는 없으나 업데이트된 내역인 것 같으니 version: '3.8'을 지우고 재실행해주었다.

 

 

[docker-compose 실행]

docker-compose up

docker-compose 파일을 실행해주었다.

백그라운드로 실행하려면 뒤에 한칸 띄우고 &를 추가하면 된다.

 

해당 코드를 실행하면 젠킨스 관련된 docker Image 정보를 다운로드하게된다.

 

 

[실행된 서버]

8080번의 로컬호스트에 접속해보면 이렇게 패스워드를 입력하라는 창이 뜨게된다.

 

 

[패스워드 입력]

Jenkins password

docker-compose up 명령어를 실행했을 때의 로그를 살펴보면

우리가 찾던 비밀번호를 발견 할 수 있다.

 

만약 위 로그를 다 지운 상태라면

docker ps
docekr logs [CONTAINER ID]

명령어를 쳐서 다시 log를 확인할 수 있다.

 

 

[Getting Started]

Jenkins - Getting Started

첫번째 항목을 선택해줬다.

추천된 플러그인들이 알아서 설치된다.

 

 

[설치되는 화면]

Jenkins - Getting Started

중간에 Pipeline관련 4개의 항목이 설치가 제대로 안됬다.

이때 나타나는 Retry 버튼을 누르니 제대로 설치가 됬고 자동으로 유저생성 화면으로 넘어갔다.

 

 

[계정 생성]

merona99 계정을 생성했다. 

다 입력했다면 Save and Finish 버튼을 눌러준다.

 

디폴트로 나오는 주소 그대로 사용하고 넘어가자.

 

 

[Jenkins 접속]

시작 버튼을 눌러보자!

 

 

 

2. Jenkins - HelloWorld 실습

이렇게 Jenkins 초기화면에 잘 접속했다.

 

[Item 생성]

상단 좌측에 있는 새로운 Item 버튼을 눌러서 새롭게 만들어보자.

 

원하는 이름을 설정하고 Pipline을 클릭후 OK를 누르고 넘어가자

 

 

[CI/CD 생성]

설명을 적는란과 함께 스크롤을 하면서 내려보면 다양한 옵션 선택을 할 수 있는게 보인다.

 

일단 다른 옵션은 건들지 않고 스크립트만 작성했다.

간단하게 CI/CD 코드를 작성 후 저장하고 나가자.

 

[생성완료]

Dashboard에 나가보면 방금 만들었던 CI/CD가 생성된 것을 확인 할 수 있다.

우측의 초록색 실행버튼을 눌러서 빌드를 수행할 수 있다.

 

[실행 후]

성공적으로 두 번 실행이 되었다.

 

 

이렇게 실행과정을 눈으로 볼 수도 있고,

 

 

이렇게 파이프라인의 과정을 세세하게 볼 수도 있으며

 

이렇게 콘솔창을 확인해서 코드변경에 따라서 작성했던 출력문도 잘 실행되는 것을 확인 할 수 있다.

여러가지 기능들은 직접 눌러보면서 확인해보자.

 

 

 

3. Jenkins  pipline 예시

 

git에서 소스코드가 변경되었을 때, 위 3가지의 stage과정을 진행하고

해당 container를 받아서 airflow에서 실행하는 형태로 머신러닝 학습화를 자동화 할 수도 있을 것이다.

 

 

 

 

 


 

 

 

// 이제 여러가지가 엮이게 되니 조금씩 헷갈려지는 것 같다. 그래도 인프라 지식을 정립해나가는 것 같아서 좋다.

 

반응형

'AI > MLOps' 카테고리의 다른 글

[HTTP & REST API ] 서버통신이론  (0) 2024.11.25
[Jenkins] CI/CD 이론  (0) 2024.11.21
[Workflow] Airflow Workflow Management 실습  (0) 2024.11.16
[Workflow] Workflow Management 이론  (0) 2024.11.15
[쿠버네티스] Orchestrator 실습  (0) 2024.11.14

댓글