Git-Ops구축

[Git-Ops구축] 3. Gitlab 설치

SY정보 2025. 8. 3. 17:27

GitLab은 소스 코드 버전 관리 및 DevOps를 위한 웹 기반 플랫폼입니다. 기본적으로는 Git 저장소를 중심으로 하여, 소프트웨어 개발 전반을 지원하는 기능들을 통합적으로 제공합니다. 

 

이글에서는 윈도우11 docker desktop 기반에서 설치구성하고, 사설인증서를 적용하여 https 통신이 되도록 하였습니다.

 

Gitlab설치

Gitlab을 설치하고 기동완료되기 까지 기다립니다. 

PS C:\Users\ky945> docker run -d --name SYgitlab `
       -p 443:443 `
       -v C:\Users\ky945\SYssl:/etc/gitlab/ssl `
       gitlab/gitlab-ce:latest

# -p 443:443 : Gitlab 서비스 포트로 설정합니다.
# -v C:\Users\ky945\SYssl:/etc/gitlab/ssl : ssl 인증서파일을 마운트합니다.

# 컨테이너로 진입합니다.
PS C:\Users\ky945> docker exec -it SYgitlab /bin/bash

# 기동완료되기까지 모니터링 합니다.
watch gitlab-ctl status

 
Gitlab 설정파일을 수정하고, 재기동 합니다.

# Gitlab 컨테이너에서 계속 진행합니다
# 설정파일을 오픈합니다.
vi /etc/gitlab/gitlab.rb

# 32라인
# 외부에서 Gitlab 접근시에 사용하는 도메인주소 입력
external_url 'https://gitlab.sytech.com'

# 1721,1722 라인
# 사설인증서 파일 위치 입력
nginx['ssl_certificate'] = "/etc/gitlab/ssl/sytech.com.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/sytech.com.key"

# 컨테이너를 빠져 나옵니다.
# 호스트에서 컨테이너 재기동
PS C:\Users\ky945> docker restart SYgitlab

 

Gitlab에 접속해봅니다.

PC 웹브라우져에서 https://gitlab.sytech.com 접속합니다.

로그인 계정은 root 이고, 초기 패스워드 정보는 다음처럼 확인합니다.

# 컨테이너로 진입합니다.
PS C:\Users\ky945> docker exec -it SYgitlab /bin/bash

# 파일에 Password 부분을 확인합니다.
grep ^Pass /etc/gitlab/initial_root_password

 

다음처럼 로그인 되면 성공입니다.

 

Gitlab 테스트 하기

간단하게 빌드,배포 테스트를 해봅니다.

추가로 Gitlab-runner 를 설치해야합니다. 쉽게말해 일을 시키는 매니저입니다.

PS C:\Users\ky945> docker run -d --name SYgitlab-runner `
      -v C:\Users\ky945\SYssl:/etc/SYssl:ro `
      gitlab/gitlab-runner
      
# C:\Users\ky945\SYssl:/etc/SYssl:ro : runner 등록할때 인증서 파일이 필요합니다.

 

Gitlab에 접속해서 runner를 등록합니다.

Gitlab로그인 -> 하단 Admin -> CI/CD -> Runners -> 아래값 입력후 Create runner 클릭

 Tags : SYbuild, SYdeploy 
 
 # SYbuild : CI파일에서 빌드하는 부분을 지정하는 나만에 단어입니다. 
 # SYdeploy : CI파일에서 배포하는 부분을 지정하는 나만에 단어입니다.

 

화면이 바뀌면서 안내 페이지가 보입니다.

주의!! token값을 사용해야합니다. 페이지를 나오지 말고 그대로 유지시킵니다.

이 상태에서 Gitlab-runner 컨테이너로 진입하고 다음 명령어를 실행합니다.

# Gitlab-runner 컨테이너로 진입합니다.
docker exec -it SYgitlab-runner /bin/bash

# runner를 등록합니다.
gitlab-runner register \                             
    --url https://gitlab.sytech.com \
    --token glrt-t1_NotdgSzy_iU3kU4rhuax \
    --executor shell \
    --name SYrunner \
    --tls-ca-file /etc/SYssl/sytech.com.crt

# --token : 안내페이지 Step 1 에 있는 토큰값을 입력합니다.
# --tls-ca-file : gitlab.sytech.com 도메인에 인증서파일 위치를 지정합니다.

# 이후부터는 설정한 값들이 맞는건지 물어봅니다.
# 계속 엔터 엔터 치시면됩니다.

주의!! 인증서파일을 지정하지 않으면 신뢰되지않는 인증서 에러 납니다.

 

안내 페이지 하단에 "You've registered a new runner!" 나오면 등록이 성공된겁니다.(아래그림 참고)

 

다음으로 프로젝트를 하나 생성합니다. 

Create a project -> Create blank project -> 다음처럼 입력하고 Create porject 클릭

# 프로젝트 이름
Project name : SYgitops

# 계정을 선택
Project URL : root

# 프로젝트 이름 입력되면 자동입력됩니다. 대문자는 소문자로 변환됨
Project slug : sygitops

 

PC와 Gitlab 간에 연결구성합니다.

먼저 윈도우용 Git Client를 설치합니다.

https://git-scm.com/downloads/win

 

Git - Downloading Package

Download for Windows Click here to download the latest (2.50.1) x64 version of Git for Windows. This is the most recent maintained build. It was released on 2025-07-08. Other Git for Windows downloads Standalone Installer Git for Windows/x64 Setup. Git for

git-scm.com

 

Git Client 설치완료하고 PowerShell에서 다음 명령어를 실행합니다.

# 작업 디렉토리 생성
PS C:\Users\ky945> mkdir SYgit
PS C:\Users\ky945> cd SYgit

# 로컬에 Git 초기화
PS C:\Users\ky945\SYgit> git init
Initialized empty Git repository in C:/Users/ky945/SYgit/.git/

# 원격 Git 저장소 등록
PS C:\Users\ky945\SYgit> git remote add origin https://gitlab.sytech.com/root/sygitops.git

# Main 브랜치 연결
PS C:\Users\ky945\SYgit> git branch -M main

# Git 저장소 main에 파일을 다운로드 받습니다.
PS C:\Users\ky945\SYgit> git pull origin main
warning: missing OAuth configuration for gitlab.sytech.com - see https://aka.ms/gcm/gitlab for more information

#여기서 "Connect to Gitlab" 작은 팝업창이 뜨면서 Username 과 token을 입력하라고 나옵니다.
#최초연결시에만 나옵니다. 저는 Password 방식으로 선택해서 Username, Password 입력하고 "Sign in" 하였습니다.

git: 'credential-manager-core' is not a git command. See 'git --help'.
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
Unpacking objects: 100% (3/3), 2.77 KiB | 258.00 KiB/s, done.
From https://gitlab.sytech.com/root/sygitops
 * branch            main       -> FETCH_HEAD
 * [new branch]      main       -> origin/main

# Git 저장소에 다운로드 받은 파일을 확인합니다.
# README.md 파일이 보이면 성공입니다.
PS C:\Users\ky945\SYgit> ls -Force

    디렉터리: C:\Users\ky945\SYgit

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d--h--      2025-03-30   오전 9:54                .git
-a----      2025-03-30   오전 9:54           6255 README.md

 

CI파일을 생성합니다.

간단하게 빌드할때 실행할 명령어, 배포할때 실행할 명령어를 작성합니다.

주의!! gitlab-ci.yml 파일명 은 정해진겁니다. 다른파일명 안됩니다.

PS C:\Users\ky945\SYgit> notepad .gitlab-ci.yml

stages:
  - build
  - deploy

build-job:
  stage: build
  tags:
    - SYbuild  
  script:
    - echo "Building the application..."
    - hostname
    - echo "Build complete."

deploy-job:
  stage: deploy
  tags:
    - SYdeploy 
  script:
    - echo "Deploying to Test server"
    - hostname
    - echo "Deployment complete."

# SYbuild, SYdeploy : Gitlab-runner 생성할때 입력한 tag 값(나만에용어)과 동일하게 입력합니다.

 

CI파일을 Gitlab 저장소로 push 하고 Pipelines 결과를 확인합니다.

# 현재 생성된 파일을 추가합니다.
PS C:\Users\ky945\SYgit> git add .

# 설명을 작성합니다.
PS C:\Users\ky945\SYgit> git commit -m ".gitlab-ci.yml 파일추가됨"
[main 4f4fabd] .gitlab-ci.yml 파일추가됨
 1 file changed, 21 insertions(+)
 create mode 100644 .gitlab-ci.yml
 
# Git저장소에 최종 push 합니다.
PS C:\Users\ky945\SYgit> git push -u origin main
git: 'credential-manager-core' is not a git command. See 'git --help'.
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 12 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 460 bytes | 460.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
To https://gitlab.sytech.com/root/sygitops.git
   caf6829..4f4fabd  main -> main
branch 'main' set up to track 'origin/main'.
PS C:\Users\ky945\SYgit>

 

Gitlab 좌측 Build -> Pipelines -> Passed 보이면 성공입니다.