일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Amazon CloudWatch
- amazon sns
- instances failed to join cluster
- IRSA
- Service Account
- s3
- jenkins
- Pipeline
- aws ses #aws lambda
- assumerole
- 에이전트 유형
- aws-loadbalacner-controller
- httpasswd
- node group
- kubernetes
- helm_release
- Terraform
- 테라폼
- fruition
- docker
- 코드커버리지
- route53
- Docker0
- ingestion
- 클러스터 보안 그룹
- Gateway
- NAT
- saa-c03 #saa #aws certified solutions architect - associate
- 추가 보안 그룹
- 에이전트 구성
- Today
- Total
cloudwithbass
[CI/CD] GitLab CI/CD 튜토리얼: 첫 파이프라인 생성하기 본문
- GitLab Docs의 Tutorial: Create and run your first GitLab CI/CD pipeline 문서를 한글로 의역하고, 실습 과정을 사진으로 설명하는 글입니다.
- GitLab을 처음 접하는 경우, ssh 등의 추가 설정이 필요하므로 해당 튜토리얼의 내용만으로는 튜토리얼을 실습하기 어렵다고 느꼈습니다. 그래서 그 방법을 공유하고자 이 글을 작성합니다.
- 튜토리얼 문서의 내용이 아니라 제가 추가로 설명한 부분은 본명조 글씨체에 굵기를 높여 표시했습니다.
사전 요구사항
이 튜토리얼을 시작하기 전에 다음 사항들을 준비해 주세요:
- CI/CD를 사용할 GitLab 프로젝트
- 프로젝트의 관리자 역할
프로젝트가 없을 경우 다음 주소에서 무료로 생성할 수 있습니다. :
프로젝트 만들기
우측 상단의 New Project 버튼을 누릅니다.
Create blank project를 선택 후 프로젝트 이름 등을 입력해서 생성합니다.
추가로 프로젝트와 SSH 연결이 필요합니다.
다음 문서를 참고해서 ssh 연결 작업을 수행해 주세요.
https://docs.gitlab.com/ee/user/ssh.html
ssh -T git@gitlab.com 명령 실행 결과, 다음과 같은 응답이 반환되면 잘 연결된 것입니다.
이제 Ubuntu에서 작업하기 위해 프로젝트의 우측 상단 Code를 눌러 Clone with SSH로 주소를 카피합니다.
ssh 연결이 잘 돼야만 해당 주소로 git clone 명령을 실행할 수 있습니다.
첫 파이프라인을 생성하고 실행하기 위한 단계
1. ruuner를 사용 가능한 상태(available)로 만들기
- GitLab.com을 사용한다면 이 단계를 생략할 수 있습니다. GitLab.com은 ruuner 인스턴스를 제공합니다.
2. '.gitlab-ci.yml' 파일을 프로젝트 루트 디렉터리에 생성하기
- 이 파일은 CI/CD job를 정의합니다.
1. ruuner를 사용 가능한 상태(available)로 만들기
GitLab에서 runner는 CI/CD job을 실행하는 agent입니다.
사용 가능한 runner를 확인하기 위해 프로젝트에서 Settings -> Runners에 들어갑니다.
Ruuners에서 New project runner라고 적힌 파란 버튼을 누릅니다.
튜토리얼에선 태그가 필요없어서 러너의 태그에는 아무 단어나 작성해도 됩니다.
이후 Register Runner 창이 나오면 자신의 OS환경에 맞게 지시사항을 따르면 됩니다.
저는 Linux를 이용하므로 지시사항의 명령을 입력한 후 대화창에서 다음과 같이 입력했습니다.
주의깊게 볼 부분은 Enter an executor 부분입니다.
저는 Kubernetes를 선택했는데요, 어떤 excutor를 선택할 지 모르겠다면 아래 문서를 참조하여 원하는 방법을 선택하시길 바랍니다.
https://docs.gitlab.com/runner/executors/
이제 저의 경우 gitlab-runner run 명령을 입력하면 웹사이트에 'You've registered a new runner!'라는 메시지가 보입니다.
2. '.gitlab-ci.yml' 파일 생성하기
이제 .gitlab-ci.yaml 파일을 생성합니다. 이 파일은 YAML 형식을 따르며, GitLab CI/CD 명령을 적습니다.
이 파일에선 다음 내용들을 정의합니다:
- 러너가 실행할 job의 구조와 순서
- 특정 조건이 발생했을 때 runner의 결정
프로젝트에 .gitlab-ci.yml 파일을 추가하기 위해서:
콘솔에서 main 브랜치의 + 버튼을 눌러 New file을 선택합니다.
아래 예제 코드를 입력한 후 commit changes 버튼을 눌러 커밋합니다.
build-job:
stage: build
script:
- echo "Hello, $GITLAB_USER_LOGIN!"
test-job1:
stage: test
script:
- echo "This job tests something"
test-job2:
stage: test
script:
- echo "This job tests something, but takes more time than test-job1."
- echo "After the echo commands complete, it runs the sleep command for 20 seconds"
- echo "which simulates a test that runs 20 seconds longer than test-job1"
- sleep 20
deploy-prod:
stage: deploy
script:
- echo "This job deploys something from the $CI_COMMIT_BRANCH branch."
environment: production
튜토리얼이므로 build, test, deploy 단계에서 echo로 텍스트만 출력합니다.
커스터마이징 할 땐 echo 명령이 아닌 실제로 빌드, 테스트, 배포하는 동작을 수행해야 합니다.
당연히 CLI를 이용해도 됩니다.
파이프라인과 JOB 상태 확인하기
프로젝트 좌측 Build -> Pipelines를 눌러 파이프라인을 확인할 수 있습니다.
파이프라인의 ID를 누르면 파이프라인을 시각적으로 확인할 수 있습니다.
Job 이름을 눌러 자세한 사항을 확인할 수 있습니다. 예를 들어 deploy-pord의 경우:
여러분은 성공적으로 GitLab에서 첫 CI/CD 파이프라인을 생성했습니다. 축하합니다!
이제 여러분은 .gitlab-ci.yml 파일 을 커스터마이징하여 더 상급의 job을 정의할 수 있습니다.
.gitlab-ci.yml 팁들
'.gitlab-ci.yml'파일을 작업할 팁들이 있습니다.
'.gitlab-ci.yml' 문법을 완성하기 위해 CI/CD YAML syntax reference 문서를 참고하세요.
- .gitlab-ci.yml 파일을 수정할 때 pipeline editor를 사용하세요.
- 각 Job은 스크립트를 섹션을 포함하며, stage에 속합니다.
- job과 stage의 실행 방법을 커스터마이징하기 위해 추가 구성을 설정할 수 있습니다:
- rules 키워드를 사용해서 job을 언제 실행하고 스킵할 지 구성할 수 있습니다.
- 레거시 키워드인 only와 except는 아직 지원되지만, 동일한 job 규칙에선 사용될 수 없습니다.
- cache와 artifacts 키워드가포함된 파이프라인의 경우, 정보가 job과 stage에서 유지됩니다.
- 이 키워드들은 일회용(ephemeral) 러너를 사용할 경우에도 의존성이나 job output을 저장하는 방법입니다.
- default 키워드를 사용하여 모든 job에 적용되는 구성을 추가할 수 있습니다.
- 이 키워드는 모든 job에 수행되어야 하는 before_script나 afterr_script 영역을 정의할 때 자주 사용됩니다.
- rules 키워드를 사용해서 job을 언제 실행하고 스킵할 지 구성할 수 있습니다.
저의 포스팅이 도움이 되셨길 바랍니다.
'Docker and Jenkins' 카테고리의 다른 글
[Jenkins] 젠킨스 파이프라인: 깃 푸시부터 인수 테스트까지 (3) | 2024.07.24 |
---|---|
[Jenkins] 트러블 슈팅: 젠킨스 도커인도커(DinD) 사용기 (2) | 2024.07.23 |
[Docker] https와 인증서를 이용해서 사설 도커 레지스트리 사용하기 (1) | 2024.07.20 |
[Jenkins] 코드 커버리지란?, JaCoCo와 Checkstyle (0) | 2024.07.17 |
[Jenkins] 파이프라인 구축하기 (2) | 2024.07.16 |