CI/CD 실습
참고강의: 10개의 프로젝트로 한 번에 끝내는 MLOps 파이프라인 구현 초격차 패키지 Online.
이번 시간에는 가장 대중적으로 쓰이는 CI/CD 툴인 Jenkins를 다뤄볼 것이다.
현재 회사에서도 젠킨스를 사용하고 있다.
어느 채용공고를 보던 대부분 젠킨스이기도 해서 제대로 알아두면 실무에서 유용할 것이다.
[목차]
- 환경 구축
- Jenkins Hello World
- 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번의 로컬호스트에 접속해보면 이렇게 패스워드를 입력하라는 창이 뜨게된다.
[패스워드 입력]
docker-compose up 명령어를 실행했을 때의 로그를 살펴보면
우리가 찾던 비밀번호를 발견 할 수 있다.
만약 위 로그를 다 지운 상태라면
docker ps
docekr logs [CONTAINER ID]
명령어를 쳐서 다시 log를 확인할 수 있다.
[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 |
댓글