Gitlab Runner 란?
Gitlab Runner 동작과정
AWS EC2 인스턴스를 생성해 Gitlab Specific Runner 등록하기
Gitlab Runner 란?
Gitlab CI를 실행하기 위한 별도의 프로세스
Shared, Group, Specific 의 3가지 러너로 구성 가능
사용량에 따라 Runner의 Configration을 변경하여 사용
Gitlab이 구성되어 있는 Instance에는 Runner 구성 권장하지 않음
Shared runner
기본적으로 Gitlab에서 제공. 한 달에 2,000분 무료 사용 가능
Gitlab 인스턴스의 모든 그룹 및 프로젝트에서 사용 가능
Job 수가 가장 적은 프로젝트부터 Job을 처리
Group runner
그룹의 모든 프로젝트가 Runner 세트에 액세스 할 수 있도록 하려면 그룹 러너를 사용
그룹 러너는 FIFO 대기열을 사용해 Job을 처리
Specific runner
특정 프로젝트에 특정 러너를 사용할 때 사용
- ex) 자격 증명이 필요한 배포 Job처럼 특정 요구사항이 있을 때 혹은 다른 러너와 분리하여 이점을 얻을 수 있는 CI 활동이 많은 프로젝트
여러 프로젝트에서 사용할 특정 러너 설정 가능. 각 프로젝트에서 명시적으로 활성화 해야함. 방법은 이후에 설명.
FIFO 대기열을 사용하여 job을 처리
Gitlab Runner 동작과정
1. 소스 작성
2. 작성한 소스를 Gitlab에 Push
3. 변경된 소스를 확인하고 .gitlab-ci.yml 을 통해 Runner 트리거
4. .gitlab-ci.yml 에 작성된 내용을 바탕으로 Runner에서 해당 작업 실행
AWS EC2 인스턴스를 생성해 Gitlab Specific Runner 등록하기
등록 전 알아둘 것
1. 관리자만 등록 가능
2. Shared, Group, Specific Runner 등록 가능
3. Runner 등록에 필요한 URL과 Token 정보 확인
4. Runner 등록 시 Tag를 지정하여 등록
5. 등록된 Tag 기반으로 Runner 동작 (미기재시 Default 로 설정되고 동작)
1. AWS EC2 인스턴스 생성
AMI: Amazon Linux 2 AMI (HVM), SSD Volume Type - ami-0e4a9ad2eb120e054 (64비트 x86)
AMI를 원하는 리눅스를 사용해도 되지만 해당 글을 Amazon Linux 2 를 베이스로 작성했습니다.
나머지 설정은 Default로 해도 무방.
2. 인스턴스 SSH 접근 후 Docker 설치
Docker Executor 를 사용하려면 Gitlab Runner를 사용하기 전에 Docker를 설치해야한다.해당 설치는 AWS 개발자 안내서를 참고함.만약, 다른 AMI 를 사용했다면 Docker docs를 참고하여 이미지 설치.
a. 인스턴스에 설치한 패키지 및 패키지 캐시를 업데이트
sudo yum -y update
b. 최신 도커 엔진 패키지 설치
sudo yum install docker
c. 도커 서비스 시작
sudo service docker start
d. ec2-user가 사용할 수 있도록 docker 그룹 추가
sudo usermod -aG docker ec2-user
e. 재부팅 후에도 Active 하도록 등록
sudo chkconfig docker on
3. Gitlab runner 설치
해당 설치는 Gitlab runner 공식 문서를 참고함.
다른 AMI 를(리눅스) 사용한다면 공식 문서를 참고
a. 공식 Gitlab 리포지토리 추가
curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh" | sudo bash
b. Gitlab runner 설치
sudo yum install gitlab-runner
특정 버전을 설치하고 싶다면 Gitlab runner 공식 문서를 참고바람
4. 프로젝트 생성 후 대시보드에서 Settings - CI/CD - Runners 확인
토큰값을 사용해야 하므로 복사해놓기
5. Gitlab Runner 등록
명령형으로 등록도 가능하지만
편의성을 위해 대화형으로 등록.
추가적으로 확인해야 할 것이 있다면 gitlab 공식문서 확인
sudo gitlab-runner register
## 프로젝트와 연결을 위한 URL 입력
## 토큰값 입력
## 러너 설명 입력
## 러너 tag 입력
## executor 입력
## default Docker image 입력
URL & Token: 4번 항목을 참고
러너 설명: 러너 이름 혹은 세부정보를 사용자가 구분하게끔 입력
러너 tag: .gitlab-ci.yml 에서 tag 를 통해 러너를 지정할 수 있음. 공란일 때는 default Runner가 됌.
executor: 시나리오에서 빌드를 실행하는데 사용할 수 있는 여러 실행기를 구현. 추가적인 설명은 gitlab 공식 문서 참고.
6. 프로젝트에 재대로 등록됐는지 확인
재대로 등록됐다면 초록불이 왼쪽에 나옴.
만일, "New runner. Has not connected yet." 와 함께 경고느낌표가 뜬다면
5. gitlab-runner 등록 시 sudo 명령 실행해야한다.
일반 사용자로 실행 시 ~/.gitlab-runner/config.toml 이 사용되지 않고 /etc/gitlab-runner/config.toml 이 사용되었기 때문
만약, 일반사용자로 gitlab-runner를 등록하여 사용하고 싶다면 toml 파일을 /etc에 복사해야한다.
sudo cp ~/.gitlab-runner/config.toml /etc/gitlab-runner/config.toml
추가로 참고하면 좋은 페이지
https://www.devopshint.com/how-to-install-gitlab-runner-on-amazon-linux-2
'AWS > CICD' 카테고리의 다른 글
[Gitlab] dind 란?, 트러블 슈팅, error during connect: Post http://dind:2375/v1.40/auth: dial tcp: lookup dind on 172.31.0.2:53: no such host (2) | 2021.10.30 |
---|---|
Gitlab 사용해서 Amazon ECR 로 도커 컨테이너 push 하기 (1) | 2021.10.08 |
[AWS] CI/CD를 위한 Cloud9, CodeCommit, CodeBuild, CodeDeploy, CodePipeline 의 개념 (2) | 2021.08.04 |
[AWS] OpsWorks 의 개념 (0) | 2021.08.02 |
[AWS] AWS CloudFormation 의 개념 (0) | 2021.08.02 |