- 새 주 버전으로 업그레이드
- 모든 버전을 위한 지침
- 버전별 변경 내용
- 문제 해결
자체 컴파일된 설치판 업그레이드
GitLab의 브랜치(버전)에서 이 업그레이드 가이드를 확인하여 설치하려는 버전(예: 16.0
)을 선택하세요. GitLab 설명 페이지 우측 상단의 드롭다운 디렉터리에서 필요한 문서 버전을 선택할 수 있습니다.
다음 예시 각각에서 BRANCH
을 업그레이드할 버전의 브랜치로(예: 16-0
의 경우 16.0
) 교체하세요. 그리고 PREVIOUS_BRANCH
를 업그레이드하려는 이전 버전의 브랜치로(예: 15-11
의 경우 15.11
) 교체하세요.
가장 높은 숫자의 stable 브랜치가 불분명한 경우, GitLab 블로그에서 버전별 설치 가이드 링크를 확인하세요.
GitLab Community Edition에서 GitLab Enterprise Edition로 변경하는 경우, CE에서 EE로 업그레이드 문서를 참조하세요.
새 주 버전으로 업그레이드
주 버전은 하위 호환되지 않는 변경 사항을 위해 예약됩니다. 현재 주 버전의 최신 소규모 버전으로 먼저 업그레이드해야 합니다. 이상적인 업그레이드 경로를 식별하려면 업그레이드 권장사항을 따르세요.
새 주 버전으로 업그레이드하기 전에, 이전 릴리스의 백그라운드 이관 작업이 완료되었는지 확인해야 합니다. 현재 background_migration
큐의 크기를 확인하려면 업그레이드하기 전에 백그라운드 이관 확인을 참조하세요.
모든 버전을 위한 지침
이 섹션은 업그레이드할 버전과 관계없이 Community Edition 또는 Enterprise Edition를 업그레이드하기 위해 필요한 모든 단계를 포함합니다. 버전별 특정 가이드라인이 있는 경우 이를 별도로 다룹니다.
1. 백업
전제 조건:
-
rsync
가 설치되었는지 확인하세요.
백업 수행:
cd /home/git/gitlab
sudo -u git -H bundle exec rake gitlab:backup:create RAILS_ENV=production
2. 서버 중지
# systemd를 실행 중인 시스템의 경우
sudo systemctl stop gitlab.target
# SysV init을 실행 중인 시스템의 경우
sudo service gitlab stop
3. Ruby 업데이트
GitLab 16.7부터는 Ruby 3.1.x를 지원하며 Ruby 3.0의 지원은 중단되었습니다. 필요한 경우 업그레이드하세요.
현재 실행 중인 버전은 ruby -v
로 확인할 수 있습니다.
Ruby 설치를 참조하세요.
4. Node.js 업데이트
최소 필요한 Node.js 버전을 확인하려면 Node.js 버전을 참조하세요.
GitLab은 또한 JavaScript 의존성을 관리하기 위해 Yarn >= v1.10.0
을 요구합니다.
Debian 또는 Ubuntu의 경우:
sudo apt-get remove yarn
npm install --global yarn
추가 정보는 Yarn 웹사이트에서 확인할 수 있습니다.
5. Go 업데이트
최소 필요한 Go 버전을 확인하려면 Go 버전을 참조하세요.
현재 실행 중인 버전은 go version
으로 확인할 수 있습니다.
다음의 명령어로 다운로드 및 설치하세요 (Linux, 64비트):
# 이전 Go 설치 폴더 제거
sudo rm -rf /usr/local/go
curl --remote-name --location --progress-bar "https://go.dev/dl/go1.20.8.linux-amd64.tar.gz"
echo 'cc97c28d9c252fbf28f91950d830201aa403836cbed702a05932e63f7f0c7bc4 go1.20.8.linux-amd64.tar.gz' | shasum -a256 -c - && \
sudo tar -C /usr/local -xzf go1.20.8.linux-amd64.tar.gz
sudo ln -sf /usr/local/go/bin/{go,gofmt} /usr/local/bin/
rm go1.20.8.linux-amd64.tar.gz
6. Git 업데이트
최소 필요한 Git 버전을 확인하려면 Git 버전을 참조하세요.
GitLab 13.6부터 Gitaly가 제공하는 Git 버전을 사용해야 합니다.
# 의존성 설치
sudo apt-get install -y libcurl4-openssl-dev libexpat1-dev gettext libz-dev libssl-dev libpcre2-dev build-essential
# Gitaly 리포지터리 클론
git clone https://gitlab.com/gitlab-org/gitaly.git -b <X-Y-stable> /tmp/gitaly
# Git 컴파일 및 설치
cd /tmp/gitaly
sudo make git GIT_PREFIX=/usr/local
<X-Y-stable>
을 설치하려는 GitLab 버전과 일치하는 stable 브랜치로 교체하세요. 예를 들어, GitLab 13.6을 설치하려면 13-6-stable
브랜치 이름을 사용하세요.
config/gitlab.yml
에서 git -> bin_path
를 /usr/local/bin/git
로 설정하세요.
7. PostgreSQL 업데이트
최신 버전의 GitLab은 현재 실행 중인 PostgreSQL 버전보다 더 최신 버전의 PostgreSQL에 종속될 수 있습니다. 또한 일부 확장 기능을 활성화해야 할 수도 있습니다. 자세한 내용은 PostgreSQL 요구 사항을 참조하세요.
PostgreSQL 업그레이드에 대해 자세한 내용은 문서를 참조하세요.
8. 최신 코드 가져오기
cd /home/git/gitlab
sudo -u git -H git fetch --all --prune
sudo -u git -H git checkout -- Gemfile.lock db/structure.sql locale
GitLab Community Edition의 경우:
cd /home/git/gitlab
sudo -u git -H git checkout BRANCH
또는
GitLab Enterprise Edition의 경우:
cd /home/git/gitlab
sudo -u git -H git checkout BRANCH-ee
9. 구성 파일 업데이트
gitlab.yml
의 새 구성 옵션
gitlab.yml
)에 사용 가능한 구성 옵션이 있을 수 있습니다. 아래 명령어로 확인하여 현재 gitlab.yml
에 매뉴얼으로 적용하세요:
cd /home/git/gitlab
git diff origin/PREVIOUS_BRANCH:config/gitlab.yml.example origin/BRANCH:config/gitlab.yml.example
database.yml
의 새로운 구성 옵션
- 변경된 내용 :
config/database.yml.postgresql
에ci:
섹션이 추가되었습니다.
database.yml
에 사용 가능한 구성 옵션이 있을 수 있습니다.
아래 명령어로 확인하고 현재 database.yml
에 매뉴얼으로 적용하세요.
cd /home/git/gitlab
git diff origin/PREVIOUS_BRANCH:config/database.yml.postgresql origin/BRANCH:config/database.yml.postgresql
NGINX 구성
최신 NGINX 구성 변경 사항을 계속해서 확인하세요.
cd /home/git/gitlab
# HTTPS 구성에 대해서
git diff origin/PREVIOUS_BRANCH:lib/support/nginx/gitlab-ssl origin/BRANCH:lib/support/nginx/gitlab-ssl
# HTTP 구성에 대해서
git diff origin/PREVIOUS_BRANCH:lib/support/nginx/gitlab origin/BRANCH:lib/support/nginx/gitlab
설치 중인 Strict-Transport-Security를 사용 중이라면 계속해서 사용하려면 NGINX 구성에서 이를 활성화해야 합니다. 이는 GitLab 애플리케이션이 더 이상 설정하지 않기 때문입니다.
NGINX 대신 Apache를 사용하는 경우 업데이트된 Apache 템플릿을 확인하세요. 또한 Apache는 Unix 소켓 뒤의 상류 서버를 지원하지 않기 때문에 GitLab Workhorse를 TCP 포트에서 수신하도록 설정해야 합니다. 이 작업은 /etc/default/gitlab
을 통해 수행할 수 있습니다.
SMTP 구성
메일 전송에 SMTP를 사용하는 경우 다음 라인을 config/initializers/smtp_settings.rb
에 추가해야 합니다.
ActionMailer::Base.delivery_method = :smtp
예시로 smtp_settings.rb.sample
을 확인하세요.
systemd 단위 구성
SysV 이니셜 스크립트를 사용하는 경우 SysV 이니셜 스크립트 구성을 확인하세요.
시스템드 단위가 업데이트되었는지 확인하세요.
cd /home/git/gitlab
git diff origin/PREVIOUS_BRANCH:lib/support/systemd origin/BRANCH:lib/support/systemd
다음과 같이 복사하세요.
sudo mkdir -p /usr/local/lib/systemd/system
sudo cp lib/support/systemd/* /usr/local/lib/systemd/system/
sudo systemctl daemon-reload
SysV 이니셜 스크립트 구성
시스템드 단위를 사용하는 경우 systemd 단위 구성을 확인하세요.
gitlab.default.example
에 새로운 구성 옵션이 있을 수 있습니다. 아래 명령어로 확인하고 현재 /etc/default/gitlab
에 매뉴얼으로 적용하세요.
cd /home/git/gitlab
git diff origin/PREVIOUS_BRANCH:lib/support/init.d/gitlab.default.example origin/BRANCH:lib/support/init.d/gitlab.default.example
최신 이니셜 스크립트 변경 내용을 확인하세요.
cd /home/git/gitlab
sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab
시스템드를 이니셜로 사용 중인 시스템에서 이니셜 스크립트를 사용 중인 경우에 이렇게 실행하세요.
sudo systemctl daemon-reload
10. 라이브러리, 마이그레이션 등 설치
필요한 PostgreSQL 확장이 설치되어 있는지 확인한 후, 필요한 라이브러리를 설치하세요.
cd /home/git/gitlab
# 설치 중이거나 이전 업그레이드에서 아직 수행하지 않은 경우
sudo -u git -H bundle config set --local deployment 'true'
sudo -u git -H bundle config set --local without 'development test kerberos'
# 젬 업데이트
sudo -u git -H bundle install
# 선택 사항: 이전 젬 정리
sudo -u git -H bundle clean
# 데이터베이스 마이그레이션 실행
sudo -u git -H bundle exec rake db:migrate RAILS_ENV=production
# 노드 의존성 업데이트 및 에셋 재컴파일
sudo -u git -H bundle exec rake yarn:install gitlab:assets:clean gitlab:assets:compile RAILS_ENV=production NODE_ENV=production NODE_OPTIONS="--max_old_space_size=4096"
# 캐시 정리
sudo -u git -H bundle exec rake cache:clear RAILS_ENV=production
11. GitLab Shell 업데이트
cd /home/git/gitlab-shell
sudo -u git -H git fetch --all --tags --prune
sudo -u git -H git checkout v$(</home/git/gitlab/GITLAB_SHELL_VERSION)
sudo -u git -H make build
12. GitLab Workhorse 업데이트
GitLab Workhorse를 설치하고 컴파일하세요.
cd /home/git/gitlab
sudo -u git -H bundle exec rake "gitlab:workhorse:install[/home/git/gitlab-workhorse]" RAILS_ENV=production
13. Gitaly 업데이트
만약 Gitaly가 별도의 서버에 있거나 Gitaly 클러스터를 사용하는 경우 Gitaly 또는 Gitaly 클러스터를 참고하세요.
Gitaly 컴파일
# Git으로 Gitaly 소스를 가져와 Go로 컴파일
cd /home/git/gitlab
sudo -u git -H bundle exec rake "gitlab:gitaly:install[/home/git/gitaly,/home/git/repositories]" RAILS_ENV=production
14. GitLab Pages 업데이트
GitLab Pages 사용 시에만 필요
GitLab Pages를 설치하고 컴파일하세요. GitLab Pages는 GNU Make를 사용합니다.
Linux를 사용하지 않는 경우 아래 make
대신 gmake
를 실행해야 할 수 있습니다.
cd /home/git/gitlab-pages
sudo -u git -H git fetch --all --tags --prune
sudo -u git -H git checkout v$(</home/git/gitlab/GITLAB_PAGES_VERSION)
sudo -u git -H make
15. 애플리케이션 시작
# systemd를 실행 중인 시스템의 경우
sudo systemctl start gitlab.target
sudo systemctl restart nginx.service
# SysV init를 실행 중인 시스템의 경우
sudo service gitlab start
sudo service nginx restart
16. 애플리케이션 상태 확인
GitLab 및 해당 환경이 올바르게 구성되었는지 확인하세요:
cd /home/git/gitlab
sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production
누락된 부분이 없는지 보다 철저한 확인을 하려면:
cd /home/git/gitlab
sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production
모든 항목이 초록색이라면, 축하합니다. 업그레이드가 완료되었습니다!
버전별 변경 내용
버전 업그레이드에는 매뉴얼 개입이 필요할 수 있습니다. 자세한 내용은 업그레이드하는 버전을 확인하세요, 모든 GitLab 설치에 필요한 추가 단계 및 자체 컴파일된 설치에 해당하는 단계에 대해 더 알아보세요.
문제 해결
1. 코드를 이전 버전으로 되돌리기
이전 버전으로 되돌리려면, 이전 버전의 업그레이드 가이드를 따라야 합니다.
예를 들어, GitLab 12.6로 업그레이드한 후 12.5로 되돌리려면, 12.4에서 12.5로 업그레이드하는 가이드를 따르세요. 페이지 상단의 버전 드롭다운 디렉터리을 사용하여 올바른 버전을 선택할 수 있습니다.
되돌릴 때는 이미 백업이 이전 버전으로 마이그레이션이 완료되었으므로 데이터베이스 마이그레이션 가이드를 따라가면 안 됩니다.
2. 백업에서 복원하기
cd /home/git/gitlab
sudo -u git -H bundle exec rake gitlab:backup:restore RAILS_ENV=production
여러 개의 백업 *.tar
파일이 있는 경우, 위에 BACKUP=백업_타임스탬프
를 추가하세요.