티스토리 뷰
gitlab에서 CI에 대해 개발하는 방법 가이드
깃랩에 접속하여 microservice 프로젝트로 들어간다.
Build 안에 Pipeline editor 메뉴로 들어가 marster 브랜치로 변경 후 configure pipeline을 클릭
업로드한 여러 프로젝트에 대한 코드로부터 Docker 컨테이너로 가기까지에 대한 CI/CD를 코딩하는 스크립트 템플릿이다.
이러한 스크립트를 통해 파이프라인을 구성하여 원하는대로 CI/CD를 설계하고, 개발할 수 있다.
variables:
GIT_STRATEGY: none
GIT_CHECKOUT: "false"
CONFIG_IMAGE_NAME: config-server-image
CONFIG_CON_NAME: config-server
stages:
- clone
- build
- deploy
clone:
stage: clone
variables:
GIT_STRATEGY: fetch
GIT_CHECKOUT: "true"
tags:
- gitlab-runner
script:
- chcp 65001
configserver-build:
stage: build
tags:
- gitlab-runner
script:
- echo $CONFIG_IMAGE_NAME
- docker stop $CONFIG_CON_NAME || echo "none container"
- docker rm $CONFIG_CON_NAME || echo "none container"
- docker rmi $CONFIG_IMAGE_NAME || echo "none image"
- docker ps -a
- docker images
- docker build ./config-server -t $CONFIG_IMAGE_NAME
- docker images
configserver-deploy:
stage: deploy
tags:
- gitlab-runner
script:
- docker run --network msa-network -d -p 8080:8080 --name $CONFIG_CON_NAME $CONFIG_IMAGE_NAME
config-server에 대한 CI/CD 스크립트
- variables: 변수선언하는 부분으로 전역변수처럼 사용하기 위해 설정한다.
- GIT_STRATEGY: Gitlab에서 소스를 가져오는 방법에 대한 옵션. 초기값은 none으로 하고 필요한 부분에서 fetch를 사용할 것
- fetch: 로컬에 복사해놓은 작업본이 있으면 재활용
- clone: 작업본을 처음부터 쭉 복사 clone은 속도가 떨어져 보통 fetch를 쓴다.
- none: 복제하지 않음.
- GIT_CHECKOUT: 소스를 내려받을지에 대한 여부 옵션. 초기값을 false로 하고 소스를 내려받아야하는 구간에만 true 설정
- CONFIG_IMAGE_NAME: config-server에 대한 이미지 명 변수 지정
- CNOFIG_CON_NAME: config-server에 대한 컨테이너 명 변수 지정
- GIT_STRATEGY: Gitlab에서 소스를 가져오는 방법에 대한 옵션. 초기값은 none으로 하고 필요한 부분에서 fetch를 사용할 것
- stages: CI/CD가 진행되는 단계를 지정. 작성된 옵션값인 clone, build, deploy는 gitlab에서 제공하는 키워드가 아닌 identifier 값이다.
- clone: 소스 받아오기
- build: 빌드하기
- deploy: 배포하기
- clone: 개발자가 정의한 clone 단계. 소스를 내려받는 단계로 GIT_STRATEGY 변수값을 fetch로 GIT_CHECKOUT 변수값을 true로 지정하여 소스는 내려받되 기존에 복사본이 있다면 재활용하겠다는 옵션이다.
- tags: CI/CD를 진행할 gitlab runner의 별칭을 지정하는 설정. gitlab과 gitlab runner 연동을 위한 gitlab runner 별칭을 gitlab-runner라고 지정
- scripts: gitlab CI/CD를 진행하기 위해 실행되는 명령어 작성. 윈도우 환경에서 gitlab runner 설치해서 진행한다면 chcp 명령어를 통해 언어 셋을 맞춰야 한다.
- configserver-build: config server 소스를 빌드하기 위해 지정한 단계
- stage: build 단계로 지정. clone 단계에서 소스 내려받은 후 build 단계에서 config server 빌드가 진행
- tags: clone과 마찬가지로 gitlab-runner 지정
- script: 기존 컨테이너 중지 후 컨테이너를 삭제한 후 기존 이미지 삭제 후 config server의 DockerFile을 통해 build를 진행해서 새로운 이미지를 만든다. CONFIG_IMAGE_NAME 이나 CONFIG_CON_NAME 변수 앞에 $를 붙이면 위에 variables에서 선언한 변수를 가져다 쓸 수 있다.
- configserver-deploy: config server 컨테이너를 배포하는 단계
- stage: 마지막 단계인 deploy 단계 지정
- tags: build와 마찬가지로 gitlap-runner
- script: 새로 생성된 이미지를 가지고 컨테이너를 실행한다.
gitlab runner
gitlab에 있는 repository에 저장된 소스를 내려받아서 CI/CD를 하기 위해 빌드하고 배포하는 작업을 제공하기 위해 사용하는 프로그램.
gitlab runner는 보통 운영환경에 배포하기 위해 사용되는 서버에 설치하고 gitlab으로부터 소스를 가져와서 빌드를 진행한 다음 운영환경에 배포하는 것까지 gitlab runner가 진행한다.
gitlab runner는 gitlab 서버에 있어도 되고 운영환경에 있어도 되고 어느 특정 원격지 서버에 있어도 되지만 gitlab runner를 특정 원격지에 설치한다면 gitlab에 접근해서 소스를 가져오는 부분이 보안에 취약하다고 판단되면 특정 원격지에 설치해서 사용하는 방법은 안된다.
gitlab 서버에 gitlab runner를 설치해서 운영서버에 접근 후 배포하는 방법이 있지만 gitlab 서버에서 운영서버로 접근하는게 맞는 방법인지는 보안상 확인해봐야 안다.
정답이라고 할 순 없지만 gitlab 서버와 운영서버 사이에 연결다리 역할인 VPN 서버같은 것을 두고 그 서버에 gitlab runner를 설치해서 사용하는 방법을 고려해볼 수 있다.
gitlab runner 윈도우 환경 설치
https://docs.gitlab.com/runner/install/windows.html
Install GitLab Runner on Windows | GitLab
GitLab product documentation.
docs.gitlab.com
윈도우에 맞는 파일을 다운받고 설치할 폴더에 실행파일을 넣는다.
명령프롬프트 관리자 권한으로 실행하여 gitlab-runner를 윈도우 서비스로 등록해서 PC를 시작했을 때 자동으로 실행하기 위해 등록 진행.
gitlab-runner 폴더 경로로 이동하여 gitlab-runner 실행파일 설치후 실행
gitlab 사이트에서 Settings-CI/CD 메뉴로 가서
Runners 탭에 expend로 내용 펼치면 New project runner 옆에 버튼 클릭하여 Registration token을 복사한다.
이 토큰은 gitlab-runner에서 gitlab 소스를 내려받기 위한 토큰으로 gitlab에 소스를 pull, push 할때도 로그인을 하듯이 gitlab-runner도 동일하게 토큰값을 확인하여 작업을 실행한다.
gitlab-runner-windows-amd64.exe register --url http://localhost/ --registration-token [토큰값]
url은 http://localhost/로 지정되어 있음 그냥 엔터
register 옵션으로 이미 지정. 토큰값도 그냥 엔터
description 값은 gitlab-runner
tags 값도 gitlab-runner. gitlab CI 파일에 tags를 gitlab-runner로 지정한 부분과 일치하는 옵션
optional maintenance 는 그냥 엔터
CI 배포방식은 shell로 지정. shell은 윈도우에서 pwsh라는 명령어를 제공해주는데 pwsh는 마이크로소프트에서 개발한 쉘로 PowerShell의 약자이다.
gitlab-runner를 재시작 한다.
gitlab 사이트에서 등록한 gitlab-runner가 나온다.
이제 gitlab과 gitlab-runner는 연동이 끝났다.
gitlab 사이트 Build-Pipelines 가보니 실패상태..
gitlab-runner가 PowerShell을 실행시킬 수 없다.
시스템 변수에 Path에 PowerShell 경로를 찾아서 pwsh.exe 파일을 찾아서 실행시키는데 내 컴퓨터엔 없어서 따로 설치해주었다.
Zip 패키지 다운받아 C:/ProgramFiles/PowerShell/7 폴더 만들어서 압축 해제.
실패했던 잡을 재실행하니 잘 실행되고
config-server 컨테이너도 잘 실행이 되었다.
Java 마이크로서비스(MSA) 프로젝트 실습 강의 - 인프런
Java SpringCloud와 여러 오픈소스를 연동하여 마이크로서비스를 구축하는 세미 프로젝트를 경험해보실 수 있습니다. 마이크로서비스 구축 경험을 해보고 싶으시다면 이 강의를 추천할게요!, 마이
www.inflearn.com
'자바 > MSA' 카테고리의 다른 글
GitLab CI/CD 배포 (0) | 2024.01.14 |
---|---|
Gitlab설치 (0) | 2024.01.09 |
Microservice 컨테이너 운영방법 (1) | 2024.01.08 |
Docker Registry (0) | 2024.01.08 |
Docker를 이용한 Microservice 이미지 만들기 (0) | 2024.01.07 |