반응형
기본 설정
설명
- Gitlab CI/CD Pipeline은 Repository에 Push/Merge와 같은 이벤트가 발생했을 경우 테스트/빌드/배포와 같은 작업을 자동으로 수행해주는 것을 말한다.
- gitlab-runner 설치 및 등록 과정은 원격서버에서 진행해야 한다.
gitlab-runner 설치
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash
sudo apt-get install -y gitlab-runner
- [이슈] 위 과정에서 E: Unable to locate package gitlab-runner 오류가 뜰 경우 아래 과정 수행 후 다시 설치해본다.
sudo vi /etc/apt/sources.list.d/runner_gitlab-runner.list
- 주소 뒤에 trusty로 변경
deb https://packages.gitlab.com/runner/gitlab-runner/ubuntu/ trusty main deb-src https://packages.gitlab.com/runner/gitlab-runner/ubuntu/ trusty main
- 업데이트
sudo apt-get update
gitlab-runner 등록
sudo gitlab-runner register
- Gitlab 서버 주소 입력
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
http://192.168.56.11
- Gitlab웹 > 해당 레파지토리 > Settings > CI / CD > Runners > Specific Runners > Set up a specific Runner manually > Token 정보 복사 후 붙여넣기
Please enter the gitlab-ci token for this runner:
zzkFSL5wUN9T-tMfDz2e
- 설명 입력
Please enter the gitlab-ci description for this runner:
[ubuntu]: Test CI/CD
- 태그 입력. Pipeline 대상 서버 구분을 여기서 입력한 태그로 할 수 있다.
Please enter the gitlab-ci tags for this runner (comma separated):
build-server
- Executor 입력. 여기선 간단하게 테스트를 위해 shell 입력.
Please enter the executor: ssh, virtualbox, docker-ssh+machine, kubernetes, docker, docker-ssh, parallels, shell, docker+machine:
shell
gitlab-runner 등록 확인
- Gitlab웹 > 해당 레파지토리 > Settings > CI / CD > Runners > Runners activated for this project > 등록한 runner가 있는지 확인
.gitlab-ci.yml 추가
- 경로 : <프로젝트>/.gitlab-ci.yml
test-job: # 임의로 지정한 JOB 이름
stage: deploy # build, test, deploy 3단계 스테이지 중 하나
only:
- develop # develop 브랜치 이벤트 발생시 실행
script:
- echo "Hello World" # 실행할 스크립트
tags:
- build-server # build-server 태그가 달린 runner에서 실행
Pipeline 실행
- 프로젝트의 develop 브랜치에서 코드 수정 후 Push
- Gitlab 웹 > 해당 레파지토리 > CI / CD > Pipelines > 실행된 잡 확인
Running with gitlab-runner 11.11.4 (e828d3bc) on Test CI/CD __Fj9Kud Using Shell executor... Running on ubuntu... hint: Using 'master' as the name for the initial branch. This default branch name hint: is subject to change. To configure the initial branch name to use in all hint: of your new repositories, which will suppress this warning, call: hint: hint: git config --global init.defaultBranch <name> hint: hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and hint: 'development'. The just-created branch can be renamed via this command: hint: hint: git branch -m <name> Initialized empty Git repository in /home/gitlab-runner/builds/__Fj9Kud/0/gitlab-tester/test-project/.git/ Fetching changes... Created fresh repository. From http://192.168.56.11/gitlab-tester/test-project * [new branch] develop -> origin/develop * [new branch] master -> origin/master Checking out 8381120c as develop... Skipping Git submodules setup $ echo "Hello World" Hello World Job succeeded
- [이슈] Pipeline 실행 결과가 아래와 같은 경우 확인
- result
Running with gitlab-runner 11.11.4 (e828d3bc) on Test CI/CD __Fj9Kud Using Shell executor... Running on ubuntu... bash: line 74: cd: /home/gitlab-runner/builds/__Fj9Kud/0/gitlab-tester/test-project: No such file or directory ERROR: Job failed: exit status 1
- gitlab-runner 서버에서 .bash_logout 파일 삭제 후 다시 Pipeline 돌려 확인
rm /home/gitlab-runner/.bash_logout
- result
예시
수동으로 실행하는 잡 설정
- 아래처럼 설정 후 gitlab 웹 파이프라인 페이지에서 직접 잡을 실행
manual-job:
tags:
- build-server
when: manual
script:
- echo "=== manual ==="
변수 설정
- Settings > CI / CD > Variables에 변수값을 등록하여 활용 가능
variables: # 전역 변수
app_name: "MyApp"
app_version: "1.0.0"
variables-job:
tags:
- build-server
variables: # 지역 변수
app_phase: "dev"
script:
- echo "=== $app_name, $app_version, $app_phase ==="
전체 변수 조회
- https://docs.gitlab.com/ee/ci/variables/predefined_variables.html
- https://docs.gitlab.com/ee/ci/variables/README.html#list-all-environment-variables
list-all-variables-job:
tags:
- build-server
script:
- export
전/후처리 스크립트
before-after-script-job:
tags:
- build-server
before_script:
- echo "=== before_script ==="
script:
- echo "=== script ==="
after_script:
- echo "=== after_script ==="
특정 브랜치만 실행
only-job:
tags:
- build-server
only:
- master
script:
- echo "=== only ==="
특정 브랜치를 제외하고 실행
except-job:
tags:
- build-server
except:
- master
script:
- echo "=== except ==="
파이프라인 그룹화
- 비슷한 job을 하나로 보기좋게 그룹화하기 위한 설정
- job 이름에서 슬래쉬(/), 콜론(:), 공백( )을 구분자로 설정
group-job-1/3:
tags:
- build-server
script:
- echo "=== 1 ==="
group-job-2/3:
tags:
- build-server
script:
- echo "=== 2 ==="
group-job-3/3:
tags:
- build-server
script:
- echo "=== 3 ==="
파일 다운로드 가능하도록 설정
- Gitlab Pipeline 페이지에서 다운로드할 수 있도록 설정
artifacts-job:
tags:
- build-server
script:
- echo "=== artifacts ==="
artifacts:
paths:
- README.md
- .gitlab-ci.yml
expire_in: 1 week
도커 컨테이너상에서 잡 실행
- runner 서버 등록시 executor를 docker로 지정해야함.
- runner 서버에 docker가 설치되어 있어야함.
docker-container-job:
tags:
- build-server
image: openjdk:11.0
script:
- java -version
파이프라인 아키텍처 - Basic
- stages에 나열한 순서대로 stage를 진행
stages:
- test
- build
- deploy
test-job:
stage: test
tags:
- build-server
script:
- echo "=== test ==="
build-job:
stage: build
tags:
- build-server
script:
- echo "=== build ==="
deploy1-job:
stage: deploy
tags:
- build-server
script:
- echo "=== deploy1 ==="
deploy2-job:
stage: deploy
tags:
- build-server
script:
- echo "=== deploy2 ==="
참고
반응형
'Development > Gitlab' 카테고리의 다른 글
[Gitlab] 사용자 (0) | 2021.05.23 |
---|---|
[Gitlab] 설치 (0) | 2021.05.23 |