[GitLab] .gitlab-ci.yml 작성하고, Window 환경에 배포하기

식빵·2023년 8월 8일
0

CI CD

목록 보기
1/8

Window 에 gitlab-runner 설치 및 Runner 등록


1. 시작하기 앞서서 pwsh 설치

gitlab-runner window 버전은 gitlab pipeline 수행 시에 자동으로
pwsh 즉 powershell 을 실행합니다.

참고로 여려분들이 여기서 말하는 powershell core 를 의미합니다.
window 운영체제 깔고 default 로 깔린 Windows Powershell 과는 다른 겁니다!

일단 설치 여부를 확인하기 위해서
window 검색을 통해서 아래와 같이 power... 라고 입력해서 눈으로 확인해봅니다.

  • Windows Powershell
  • PowerShell 👍

없다면 깔아야겠죠?
까는 방법은 엄청 쉽습니다.

물론 기본 실행 프로그램을 수정할 수도 있지만, 저는 웬만해서는 기본으로
제공되는 설정을 최대한 사용하는게 좋다 생각해서 pwsh 을 새로 깔았습니다.

windows powershell 을 실행하고 아래처럼 순차적으로 입력해면 끝입니다.

winget search Microsoft.PowerShell
winget install --id Microsoft.Powershell --source winget

참고:
https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-windows



2. gitlab runner 설치

https://docs.gitlab.com/runner/install/windows.html 에 접속하시고,
아래 그림처럼 64-bit 링크를 클릭해서 파일을 다운로드 받습니다.


C:\ 경로에 GitLab-Runner 라는 폴더를 만들어주고,
안에 아까 설치한 exe 파일을 넣습니다.
그리고 exe 파일 gitlab-runner.exe 로 명칭을 바꿔줍니다.


cmd 를 관리자 모드로 실행하고 아래 명령어를 쳐줍니다.

cd C:\GitLab-Runner
.\gitlab-runner.exe install
.\gitlab-runner.exe start
.\gitlab-runner.exe register

.\gitlab-runner.exe register 명령어 입력하면 gitlab-runner 프로그램이
몇가지 수동 입력을 요구합니다.

  1. Enter the GitLab instance URL (for example, https://gitlab.com/):
  2. Enter the registration token:
  3. Enter a description for the runner:
  4. Enter tags for the runner (comma-separated):
  5. Enter optional maintenance note for the runner:
  6. Enter an executor: virtualbox, docker, docker-windows, ssh, docker-autoscaler, docker+machine, instance, kubernetes, custom, parallels, shell:

먼저 1,2 번을 작성하는 법을 알아보고 나머지 것들도 알아보겠습니다.


gitlab 에 접속하여 자신의 runner 와 매핑하고 싶은 리포지토리를 선택합니다.


이후 화면에서 아래와 같은 절차를 따릅니다,


  1. 좌측 메뉴에서 Settings 클릭
  2. CI/CD 클릭
  3. Runners 라는 제목 옆에 있는 Expand 버튼을 클릭
  4. Register the runner with this URL:
    • 옆의 작은 복사하기 버튼을 클릭
    • Enter the GitLab instance URL (for example, https://gitlab.com/):
      에 이 복사한 것을 붙여서 Enter
  5. And this registration token:
    • 옆의 작은 복사하기 버튼을 클릭
    • Enter the registration token: 에 이 복사한 값을 붙여넣어서 Enter

참고: version 이 올라가면서 Specific runners section 이 다르게 보이는 경우!

오늘(2023.10.19) 다시 Runners 를 재등록하는 작업을 하는데, UI 가 바뀌면서
위의 Specific runners section 이 아래처럼 변경됐습니다.

하지만 크게 당황할 필요는 없습니다.
해당 section 에 대한 작업은 아래처럼 대체하면 됩니다.

  • 4번 과정은 직접 자신의 gitlab 도메인을 수동으로 clipboard 에 복사해서 사용.
    ex) https://gitlab.my.io/
  • 5번 과정은 New project runner 라는 버튼 옆의 점점점 버튼(?) 을 클릭하고
    나오는 팝업 가장 오른쪽에 있는 복사하기 버튼을 클릭합니다.

결과적으로 보면 아래와 같이 입력한 것이죠.

이제 나머지 것들도 입력해보죠.

  • Enter a description for the runner:
    간단하게 Runner 에 대한 설명을 부여해줍니다.

  • Enter tags for the runner (comma-separated):

    • 상당히 중요한 부분입니다!
    • 하나의 Repository 에 대하여 여러 runner 를 등록했을 때,
      서로 구분지어서 ci 선택적으로 실행되게 할 때 필요합니다.
    • 저는 일단 windows-runner 라고 지정하겠습니다.
  • Enter optional maintenance note for the runner:
    ==> 그냥 Enter 치고 넘어가도 됩니다.

  • Enter an executor: virtualbox, docker, docker-windows, ssh, docker-autoscaler, docker+machine, instance, kubernetes, custom, parallels, shell:
    ==> shell 이라고 입력하고 Enter.

이러면 끝입니다!


이렇게까지 하고 gitlab repository 에 돌아가면
아까봤던 [ Settings > CI/CD > Runners] 화면에 하단의
Available specific runners 에 정상적으로 저희의 Runner 가 등록된 것을 확인할 수 있습니다.


gitlab-ci.yml 파일을 작성해보죠.
간단한 예시로 Window Runner 를 통해서 파일 하나 생성해보고,
"Hello World" 를 출력해보겠습니다.

stages:
  - print # window 에서 돌릴 Stage
  - test # Linux 에서 돌릴 Stage (1)
  - deploy # Linux 에서 돌릴 Stage (2)

########## Window environment ##########

print_on_window:
  stage: print
  tags: [windows-runner] # 여러 Runner 가 있을 때, 어떤 Runner 를 사용할지는 해당 Runner 의 Tag 로 결정 가능
  only:
    - main # main branch commit 에서만 적용됨
  script:
    - cd > pwd.txt # Window 에 설치한 runner 로 파일 생성해보기
    - echo "Hello World!!!" # cmd 출력도 해보기


########## linux environment ##########
## Linux 서버에는 배포를 위한 스크립트 작성
## 간단한 예시입니다. 

test-unit: # job name
  stage: build
  tags: [linux_runner] # linux 환경에 대한 Runner 를 실행시키기 위한 Linux Runner 의 Tag 작성
  # ...  나머지 내용은 생략...

deploy_my_jar:
  stage: deploy
  needs: [linux_runner]
  # ... 생략 ...

이러고 git add, commit, push 를 연달아서 해보고 gitlab 에서 pipeline 이 어떻게 도는지 확인해보겠습니다.

  • 여기서 git repository 다운로드 경로가 보입니다. 실제 Window 에서 해당 경로로 가면
    저희가 script 에 작성했던 명령어에 의해서 pwd.txt 파일이 생성된 것을 확인할 수 있습니다.

추가적으로 유의할 점이 있는데, 위 실행결과 그림에서 잘 보면.

`Preparing the "shell" executor`
Using Shell (pwsh) executor...

라는 문구가 나옵니다. 이건 shell 사용될 cli tool 을 pwsh 로 지정했다는 의미입니다.
그러므로 cmd 명령어가 아닌, powershell 기반으로 명령어(script) 를 작성해야합니다.

만약에 다른 cli tool 로 변경하고 싶다면 이 글을 참고해주세요.

참고: Spring Boot 프로젝트 같은 경우에는 아래처럼 작성하면 되겠죠?

stages:
  - spring_package

spring_jar_build:
  stage: spring_package
  tags: [windows-runner] 
  only:
    - main
  before_script:
    - $env:JAVA_HOME="C:\java\openjdk-11.0.2_windows-x64_bin"
  script:
    - .\mvnw --show-version -DskipTests clean package



(주의) Yarn 사용 시 주의사항

가끔 yarn 을 gitlab 에서 쓰시다보면 yarn 명령어를 못 찾는다는 에러가 나옵니다.
이건 환경변수 Pathyarn 명령어의 경로가 안 적혀있어서 그런겁니다.
해당 경로를 수동으로 등록해주셔야 합니다.
yarn 경로를 찾는 방법은 window 검색을 통해서 yarn 을 검색한 후,
마우스 오른쪽 클릭 후 파일 경로 열기 를 클릭하시면 됩니다.

이후에 해당 경로를 환경변수 Path 에 세팅해주면 끝입니다.




(보충) unregister 하기

참고: https://gist.github.com/jbutko/dfcd4e8cbc14fa554d6fe5a9b6d3d8a6

Unregister runnning runner

UI way:


Bash way:

  • SSH to your server
  • If you need to unregister: sudo gitlab-runner unregister --url https://gitlab.com/ --token some-token-goes-here
  • Register new runner: sudo gitlab-runner register --url https://gitlab.com/ --registration-token some-token-goes-here

Untagged jobs issue

If jobs are stucked you need to enable runner to pick up untagged jobs - it's in Settings -> CI/CD -> Edit runner -> "Run untagged jobs"



참고

profile
백엔드를 계속 배우고 있는 개발자입니다 😊

0개의 댓글