개발/최적화

GitLab Runner 사용하기 (1) - 빌드 자동화

이도일 2022. 9. 15. 11:19

 

삽질 오지게 함ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

..

 

 

 

 

하.....................

일단 까먹기 전에 쓴다.

기쁨의 인증샷

 

 

일단 깃랩은 CI/CD를 위한 프로세스를 지원한다.

 

 

 

 

 

 

이쯤에서 다시 짚어보는 ci / cd의 개념,,,,

지속적 통합(Continuous Integration, CI)
 리포지토리에 푸시할 때마다 스크립트 세트를 생성하여 애플리케이션을 자동으로 빌드하고 테스트하는것을 말함. 애플리케이션에 제출된 각 변경사항은 개발 브랜치에도 자동으로 지속적으로 빌드되고 테스트됨. 이러한 테스트는 변경사항이 애플리케이션에 대해 설정한 모든 테스트, 지침 및 코드 준수 표준을 통과하도록 보장한다.


지속적 전달(Continuous Delivery, CD)
 지속적 전달은 지속적 통합을 넘어서는 단계. 코드 변경이 코드베이스에 푸시될 때마다 애플리케이션이 빌드되고 테스트될 뿐만 아니라 애플리케이션도 지속적으로 배포됨. 그러나 지속적 전달을 사용하면 배포를 수동으로 트리거함. 지속적 전달은 코드를 자동으로 확인하지만, 변경사항의 배포를 수동으로 전략적으로 트리거하려면 사람의 개입이 필요함.


지속적 배포(Continuous Deployment, CD)
 지속적 배포는 지속적 전달과 유사한 지속적 통합을 넘어서는 또 다른 단계. 차이점은 애플리케이션을 수동으로 배포하는 대신 자동으로 배포되도록 설정한다는 것. 사람의 개입이 필요하지 않음.

예 뭐..그렇습니다.

 

 

암튼! 때문에 다른 툴을 쓰지 않고, 깃랩의 CI/CD프로세스만으로 대강 구현이 가능하다.

깃랩의 CI/CD는 스테이지와 잡으로 이루어져있다.

 


 Jobs : 수행할 작업을 정의함. 예를 들어, 코드를 컴파일하거나 테스트하는 Job.
Stages : 작업을 실행할 시기를 정의함. 예를 들어, 코드를 컴파일하는 단계 후에 테스트를 실행하는 단계.

 Job은 러너(Runner)에 의해 실행된다.
동일한 단계의 여러 Job이 병렬로 실행되어, 한 단계의 모든 Job이 성공하면, 파이프라인은 다음 단계로 넘어간다.
한 단계의 어떤 Job이 실패하면, 다음 단계는 (일반적으로) 실행되지 않고 파이프라인이 일찍 종료된다.
일반적으로 파이프라인은 자동으로 실행되며 생성된 후에는 개입이 필요하지 않지만,
수동으로 파이프라인과 상호 작용할 수 있는 경우도 존재한다.

 

 

그럼 러너는 뭘까?

 

Runners
.gitlab-ci.yml에 정의된 코드를 실행한다. 러너는 GitLab CI/CD의 코디네이터 API를 통해 CI Job을 선택하고, Job을 실행한 다음, 결과를 GitLab 인스턴스로 다시 보내는 경량의 확장성이 뛰어난 에이전트다.
러너는 관리자가 생성하며, GitLab UI에 표시됨. 러너는 특정 프로젝트에 한정되거나, 모든 프로젝트에서 사용할 수 있음(공유 러너)

- 공유 러너(Shared runners): GitLab 인스턴스의 모든 그룹 및 프로젝트에서 사용가능.
- 그룹 러너(Group runners)는 그룹의 모든 프로젝트와 하위 그룹에서 사용할 수 있음.
- 특정 러너(Specific runners)는 특정 프로젝트와 연결됨.일반적으로 특정 러너는 한 번에 하나의 프로젝트에 사용.

야스.

이런 친구들이다.

 

다른 많은 개념들이 존재하지만, 나의 목적은 이걸 쓸 수 있게끔 세팅하는거였기때문에....

 

저정도의 개념만 짚고 넘어간다.

자 저걸 윈도우 기반에서 쓰기 위해서는,

 

 

1. Docker(Docker desktop)설치

 

Install Docker Desktop on Windows

 

docs.docker.com

 

기초 사용법

  • 컨테이너 확인
$ docker ps -a
  • 컨테이너 삭제
$ docker rm 81a04a70f855
  • 이미지 확인
$ docker images
  • 이미지 삭제
$ docker rmi bf756fb1ae65

 

 

2. GitLab Runner 설치

 

Install GitLab Runner | GitLab

Documentation for GitLab Community Edition, GitLab Enterprise Edition, Omnibus GitLab, and GitLab Runner.

docs.gitlab.com

아래를 따라하자

 

더보기

1. 윈도우 버전 파일을 다운로드한다.

 

2. 대충 적당한 경로에 폴더 만들어준다.

 

3. 다운받은 파일 옮기고 이름 변경해준다.

 

4. cmd 켜서 위치 이동하고, 설치 갈겨준다,,,

cd D:\GitLab-Runner 
.\gitlab-runner.exe install

 

 

 

 

3. Docker 컨테이너 실행 / 접속

$ docker run -d --name gitlab-runner gitlab/gitlab-runner:latest

 

$ docker exec -it gitlab-runner bash

 

이때 실행한 docker 컨테이너는 

docker desktop에서 확인이 가능하다.

 

 

 

4. gitlab-runner 등록

root@bf9ecb4da995:/# gitlab-runner register
Runtime platform                                    arch=amd64 os=linux pid=31 revision=775dd39d version=13.8.0
Running in system-mode.

Enter the GitLab instance URL (for example, https://gitlab.com/):

docker run 후, gitlab-runner register 를 실행하면 등록을 할 수 있는데,

이때 url 주소와 token값을 입력하라고 나올거다.

 

 

이건 깃랩에서 Setting / CI/CD / Runners / Expand로 들어가면 확인이 가능하다.

아래 링크와 토큰을 보고 차례로 입력하면 된다.

 

Enter the GitLab instance URL (for example, https://gitlab.com/):
https://gitlab.com/
Enter the registration token:
너의 토큰
Enter a description for the runner:
러너 설명
Enter tags for the runner (comma-separated):
태그명(중요!!!!나중에 yml파일에서 태그명 같은걸로 쓸거임)
Registering runner... succeeded                     runner=생성된 러너
Enter an executor: ssh, docker-ssh+machine, kubernetes, docker-ssh, docker, parallels, shell, virtualbox, docker+machine, custom:
executor입력(난 docker 사용함)
Enter the Default Docker image(For example, ruby:2.7)
기본으로 사용될 이미지 설정(난 alpine)

요런 식으로!

 

 

 

5. gitlab-runner 실행

 

백그라운드

gitlab-runner start

 

현재세션

gitlab-runner run

 

 

 

 

6. gitlab-runner 실행 확인 -> Setting / CI/CD / Runners / Expand

 

다 되면

이런 식으로 뜬다.

 

 

 

7. 프로젝트 루트에 gitlab-ci.yml을 생성한다.

 deploy_to_develop:
      stage: deploy
      only: 
          - release 
      except:
          - master 
      before_script:
          - echo 'Start !!'
      script: # 당신의 멋진 스크립트를 기술해 보자!!
          - echo 'echo hello'
      after_script:
          - echo 'Done !!'

아래는 작성할때 써먹을 키워드 레퍼런스

 

`.gitlab-ci.yml` keyword reference | GitLab

Documentation for GitLab Community Edition, GitLab Enterprise Edition, Omnibus GitLab, and GitLab Runner.

docs.gitlab.com

대강 작성후

커밋 후 푸시하면

 

 

CI/CD 파이프라인에

이렇게 깜찍하게 뜬다.

그럼 끝.

 

 

 

 


추가로, 오류가 뜨는 사항들은 앞으로 아래에다가 조금씩 정리할 예정이다.

현재까지 발견된 것은 아래와 같다

 

1. Docker실행 후 그 위에서 runner를 돌리지 않았거나 -> 3을 다시 실행하고 runner를 돌려준다 

2. tag가 일치하지 않아서 runner를 못찾거나 -> tag 이름을 깃랩에서 확인하고 yml파일을 고쳐준다

3. config.toml상의 token값이 현재의 값과 일치하지 않거나 -> toml파일의 token을 확인하고 깃랩의 token과 일치시킨다