메뉴 닫기

[GitLab CE] Ubuntu 22.04 에서 GitLab CE (Community Edition) 설치 및 사용하기

 

GitLab CE

GitLab은 Git 저장소 관리, CI/CD, 이슈 트래킹, 웹 IDE 등의 기능을 제공하는 자체 호스팅 플랫폼입니다. 이 가이드는 Ubuntu 22.04 서버에서 GitLab을 설치하는 기본적인 방법을 설명하며, 프로덕션 환경에서는 추가적인 보안 및 성능 구성이 필요할 수 있습니다.

 

GitLab 설치

환경을 최신으로 유지합니다:

# apt -y update

# apt -y upgrade

 

GitLab에 필요한 패키지를 설치합니다:

# apt -y install curl openssh-server ca-certificates tzdata perl

 

GitLab 패키지 리포지토리를 추가합니다. (CE 버전):

우분투 환경에서 테스트하는 경우, .deb 문자가 포함된 스크립트를 사용하여 추가합니다.

# curl -L “https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh” | sudo bash

 

GitLab CE (Community Edition)를 설치합니다. 설치 전에 DNS에서 GitLab 서버 IP와 도메인을 연결해 놓아야 합니다.

도메인을 입력하여 명령을 실행합니다:

# EXTERNAL_URL=”http://도메인 주소” apt -y install gitlab-ce

 

웹 인터페이스에 접속하기 위해 초기 패스워드를 확인합니다. 아래 패스워드는 24시간 동안 유효합니다:

# cat /etc/gitlab/initial_root_password | grep Password:

Password: **********

 

  • 참고

패스워드 파일이 없거나 분실하여 패스워드를 재설정할 필요가 있을 때, 아래 명령을 사용합니다:

# gitlab-rake “gitlab:password:reset[root]”

Enter password: (신규 패스워드 입력)

Confirm password: (신규 패스워드 재입력)

Password successfully updated for user with username root.

 

웹 브라우저를 이용해 GitLab 웹 인터페이스에 접속합니다:

 

  • 웹페이지 접근이 되지 않을 때

로컬에서 포트가 이미 사용 중일 수 있으므로 포트를 변경하거나, 도메인이 아닌 IP 주소로 접근할 수 있습니다. 설정 파일에서 사용하지 않는 포트를 추가하여 재설정할 수 있습니다.

  1. 설정 파일을 수정합니다:

# vi /etc/gitlab/gitlab.rb

 

external_url에 사용하지 않는 포트를 추가합니다:

# external_url ‘http://도메인 주소:8090’

 

 
    2. 변경 사항을 적용합니다:
 

# gitlab-ctl reconfigure

 

이제 웹페이지 접근이 가능할 것입니다.

처음 로그인 시, 상단에 다음과 같은 경고 메시지가 표시될 수 있습니다:

“가입 제한을 확인합니다. 당신의 GitLab 인스턴스는 누구나 계정을 등록할 수 있도록 설정되어 있습니다.
이는 공개적으로 노출된 GitLab 인스턴스의 보안 위험이 될 수 있습니다. 공용 사용자가 계정 등록을 하지 않을 것으로 예상되는 경우,
신규 가입 기능을 비활성화하는 것이 좋습니다.”

 

이제 웹 인터페이스에서 다음과 같은 단계를 수행합니다:

  1. 가입 제한 설정:

    • 화면 상단의 경고 메시지에서 [Deactivate] 버튼을 클릭합니다.
    • 화면이 ‘Sign-up restrictions’ 항목으로 이동합니다.
    • Sign-up enabled: 체크를 해제합니다.
    • [Save changes] 버튼을 눌러 변경 사항을 저장합니다.

 

패스워드 변경:

  • 좌측 상단의 동그란 프로필 이미지를 클릭합니다.
  • Preferences를 클릭합니다.
  • 좌측 메뉴에서 Password를 선택합니다.
  • 패스워드를 변경한 후 저장합니다. (변경 후 자동으로 로그아웃되며, 다시 로그인하면 관리자 초기 페이지가 출력됩니다.)

 

 

* 참고

1) 설정 파일: `/etc/gitlab/gitlab.rb`

– 설정을 수정한 후 변경 사항을 반영하려면:

# gitlab-ctl reconfigure

 

2) GitLab 서비스 재시작 명령:

# gitlab-ctl restart

 

프로젝트 생성

root 사용자로 로그인한 경우, 다음 메뉴를 이용할 수 있습니다:

– Create a project
– Create a group
– Add people
– Configure GitLab

이제 Repository를 만들어 웹에서 소스 파일을 생성하거나 업로드할 수 있습니다. 본 매뉴얼에서는 공개 Repository를 생성하고, CLI를 통해 소스 파일을 업로드하고 증분 데이터 업로드하는 과정을 진행하겠습니다.

1. 프로젝트 생성:
– `Create a project` > `Create blank project` 메뉴를 선택합니다.

– 아래 필수 항목만 입력하고 나머지는 기본값으로 둡니다:
– Project name: `sample`
– Project URL & Project slug: `http://도메인 주소/root/sample`
– Visibility Level: `Private`

 

파일 업로드

로컬 PC에서 Git 설치

Git을 사용하여 로컬 PC에서 파일을 원격 저장소(Repository)로 업로드하려면 먼저 Git 패키지를 설치해야 합니다. 여기서는 Ubuntu 22.04를 기준으로 Git 설치 방법을 설명합니다.

# apt -y install git

 

소스 파일이 있는 디렉토리로 이동

파일을 업로드하려면 먼저 작업할 소스 파일이 있는 디렉토리로 이동해야 합니다. 필자는 이미 업로드할 샘플 파일을 sample 디렉토리에 준비해 두었습니다.

# cd /root/sample/

# ls -al

 

위 명령어를 사용하여 sample 디렉토리로 이동한 후, 파일 목록을 확인할 수 있습니다.

 

로컬 Git 저장소 초기화

로컬 Git 저장소를 초기화합니다. 여기서 main 브랜치를 기본 브랜치로 설정합니다.

# git init -b main

 

원격 저장소 추가

원격 저장소를 로컬 저장소에 추가합니다. 이 원격 저장소는 origin 이라는 이름으로 추가됩니다.

# git remote add origin http://도메인 주소/root/sample.git

 

참고: 원격 저장소 관리

기존 원격 저장소의 상태를 확인하거나 다른 저장소로 변경하고 싶을 때 사용하는 명령어들입니다.

  • 연결 상태 확인 명령어: git remote 또는 git remote -v
  • 연결 해제 명령어: git remote remove {해제하려는 원격 저장소 이름}

 

변경 사항을 스테이징 영역에 추가

현재 작업 디렉토리의 모든 변경 사항을 스테이징 영역(Staging Area)에 추가합니다.  “.”은 현재 디렉토리의 모든 파일을 의미합니다.

# git add .

 

커밋

스테이징 영역에 추가된 변경 사항들을 실제로 저장소에 기록(커밋)합니다. -m 옵션을 사용하여 커밋 메시지를 작성할 수 있습니다. 커밋 메시지는 변경 사항의 의도를 명확하게 나타내도록 작성하는 것이 좋습니다.

# git commit -m “First commit”

 

원격 저장소로 푸시

마지막으로, 로컬 저장소의 변경 사항을 원격 저장소로 전송합니다. -u 옵션을 사용하면 로컬 브랜치를 원격 저장소의 브랜치에 연결할 수 있으며, 이후에는 git push만으로 간단히 푸시할 수 있습니다.

# git push -u origin main

 

 

[에러 발생 시]

Git에서 “Author identity unknown” 오류는 Git이 당신이 누구인지 알 수 없어서 발생합니다. Git은 커밋을 만들 때마다 사용자 정보를 기록하여 나중에 변경사항을 추적할 수 있도록 합니다. 이를 위해 사용자의 이름과 이메일 주소를 설정해야 합니다.

전역 설정

모든 리포지토리에 대해 사용자 정보를 설정하려면 --global 옵션을 사용합니다:

# git config –global user.email “your.email@example.com”

 

여기서 your.email@example.com 은 실제 당신의 이메일 주소로 바꿔야 합니다.

# git config –global user.name “Your Name”

 

여기서 Your Name 은 실제 당신의 이름으로 바꿔야 합니다.

원격 저장소에 푸시 실패

에러 메시지:

error: src refspec main does not match any
error: failed to push some refs to ‘http://도메인 주소/root/sample.git’

 

이 메시지는 원격 저장소와 로컬 저장소의 파일이 일치하지 않아 업데이트가 거부된 경우에 발생할 수 있습니다. 특히 처음 푸시하거나 다른 저장소에서 같은 저장소로 푸시할 때 자주 발생합니다.

 

해결 방법:

원격 파일 가져오기: 원격 저장소의 파일을 로컬로 가져와 합칩니다.

# git pull origin main

# git push -u origin main

다시 푸시 시도:

# git push -u origin main

 

증분 파일 업로드

Git은 파일 변경 사항만 추적하고, 새로운 파일이나 수정된 파일만 스테이징하고 업로드합니다. 모든 파일을 다시 업로드할 필요는 없습니다.

파일 추가 및 업로드

파일 추가: 새로운 파일을 추가합니다.

# cp -arp test10.txt test11.txt

 

변경 사항 스테이징: 새로운 파일을 포함하여 변경 사항을 스테이징 영역에 추가합니다.

# git add .

 

커밋: 새로운 커밋을 생성하여 변경 사항을 저장소에 기록합니다.

# git commit -m “Second commit”

 

다시 푸시: 이번에는 -u 옵션 없이 푸시합니다.

# git push origin main

이 명령은 변경된 파일이나 새로운 파일만 원격 저장소에 업로드하며, 로컬 디스크에서 삭제된 파일이 있을 경우 원격지에서도 삭제하여 동기화합니다.

확인: GitLab 웹페이지에서 새로운 파일이 업로드된 것을 확인할 수 있습니다. 업로드된 파일 목록에서 각 파일의 업로드 시간이 다르다는 점을 통해, 새로운 파일만 업로드되었음을 확인할 수 있습니다.

 

커밋 변경 및 복원

작업 도중 실수로 로컬 파일을 삭제하거나 잘못 수정한 경우, 이전 커밋 시점으로 돌릴 수 있습니다.

 

로그 활용

파일 삭제: 복원 테스트를 위해 file11.bin 파일을 삭제합니다.

# rm test11.txt

해시 확인: 마지막으로 Git 원격 저장소에 업로드했던 커밋 해시를 확인합니다.

# git log

커밋 복원: 해당 커밋 시점으로 로컬 저장소를 되돌려 삭제된 파일을 복원합니다.

# git reset –hard 901e0321dae84c83d9408dc88db1b6a20dc62aaa

 

스태시 활용

작업 중인 변경 사항을 임시로 저장하려면 git stash 명령을 사용합니다. 이는 현재 브랜치에서 변경 사항을 저장하고 이전 커밋 상태로 돌아갈 수 있도록 합니다.

 

변경 사항 스태시: 현재 변경된 파일들을 스태시에 저장하고, 작업 디렉토리를 이전 커밋 상태로 되돌립니다.

# git stash

 

스태시 적용: 필요할 때 저장된 변경 사항을 다시 적용할 수 있습니다.

# git stash apply

 

전체 다운로드

전체 Git 소스를 다운로드할 때 사용되는 일반적인 방법입니다. 로컬에 동일한 디렉토리가 있는 경우 다운로드가 되지 않을 수 있습니다.

# git clone http://도메인 주소/root/sample.git

전체 다운로드

 

 

 

 

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x