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
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 프로그램이
몇가지 수동 입력을 요구합니다.
Enter the GitLab instance URL (for example, https://gitlab.com/):
Enter the registration token:
Enter a description for the runner:
Enter tags for the runner (comma-separated):
Enter optional maintenance note for the runner:
Enter an executor: virtualbox, docker, docker-windows, ssh, docker-autoscaler, docker+machine, instance, kubernetes, custom, parallels, shell:
먼저 1,2 번을 작성하는 법을 알아보고 나머지 것들도 알아보겠습니다.
gitlab 에 접속하여 자신의 runner 와 매핑하고 싶은 리포지토리를 선택합니다.
이후 화면에서 아래와 같은 절차를 따릅니다,
Settings
클릭 CI/CD
클릭Runners
라는 제목 옆에 있는 Expand
버튼을 클릭Register the runner with this URL:
Enter the GitLab instance URL (for example, https://gitlab.com/):
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):
runner
를 등록했을 때,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 이 어떻게 도는지 확인해보겠습니다.
추가적으로 유의할 점이 있는데, 위 실행결과 그림에서 잘 보면.
`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 을 gitlab 에서 쓰시다보면 yarn
명령어를 못 찾는다는 에러가 나옵니다.
이건 환경변수 Path
에 yarn
명령어의 경로가 안 적혀있어서 그런겁니다.
해당 경로를 수동으로 등록해주셔야 합니다.
yarn 경로를 찾는 방법은 window 검색을 통해서 yarn
을 검색한 후,
마우스 오른쪽 클릭 후 파일 경로 열기
를 클릭하시면 됩니다.
이후에 해당 경로를 환경변수 Path 에 세팅해주면 끝입니다.
참고: https://gist.github.com/jbutko/dfcd4e8cbc14fa554d6fe5a9b6d3d8a6
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"