- 새 주요 버전으로 업그레이드
- 모든 버전을 위한 지침
- 버전별 변경 사항
- 문제 해결
Self-compiled 설치 업그레이드
GitLab 버전 (예: 16.0
)에서 업그레이드 가이드를 확인하십시오. GitLab 문서 페이지 오른쪽 상단의 드롭다운 목록에서 필요한 버전의 문서를 선택할 수 있습니다.
다음의 각 예에서 BRANCH
을(를) 업그레이드할 버전의 브랜치로, PREVIOUS_BRANCH
을(를) 업그레이드할 현재 버전의 브랜치로 바꿉니다 (예: 16.0
의 경우 16-0-stable
, 15.11
의 경우 15-11-stable
).
가장 높은 번호의 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
으로 확인할 수 있습니다.
Go 다운로드 및 설치(리눅스, 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부터 GitLab에서 제공하는 Git 버전 사용 을 사용해야 합니다.:
- 항상 GitLab에서 필요로 하는 버전으로 지정됩니다.
- 적절한 작동을 위해 필요한 사용자 정의 패치가 포함될 수 있습니다.
# 의존성 설치
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
GitLab 버전을 설치하려는 stable 브랜치와 일치하는 안정적인 브랜치(<X-Y-stable>
)로 대체합니다. 예를 들어, GitLab 13.6을 설치하려면 13-6-stable
브랜치 이름을 사용하십시오.
config/gitlab.yml
에서 git -> bin_path
를 /usr/local/bin/git
로 설정하는 것을 잊지 마십시오.
7. PostgreSQL 업데이트
경고: GitLab 16.0은 최소 PostgreSQL 13을 필요로합니다.
최신 버전의 GitLab은 실행 중인 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
을 위한 새로운 구성 옵션
- 변경됨 GitLab 16.0에는
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 소켓 뒤의 upstream을 지원하지 않기 때문에 GitLab Workhorse가 TCP 포트에서 수신하도록 설정해야 합니다.
이 작업은 /etc/default/gitlab
로 수행할 수 있습니다.
SMTP 구성
메일을 전달하기 위해 SMTP를 사용하는 경우, 다음 줄을 config/initializers/smtp_settings.rb
에 추가해야 합니다:
ActionMailer::Base.delivery_method = :smtp
예시로 smtp_settings.rb.sample
을 참조하세요.
systemd 유닛 구성
SysV init 스크립트를 사용하는 경우, SysV init 스크립트 구성을 참조하세요.
systemd 유닛이 업데이트되었는지 확인하세요:
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 init 스크립트 구성
systemd 유닛을 사용하는 경우, 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
최신 init 스크립트 변경 사항을 반영하세요:
cd /home/git/gitlab
sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab
시스템이 init으로 systemd를 사용하는 경우 아직 기본 systemd 유닛으로 전환하지 않았다면, 다음을 실행하세요:
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 Cluster를 사용하는 경우 Zero downtime upgrades 페이지의 Gitaly 또는 Gitaly Cluster를 참조하세요.
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=timestamp_of_backup
을 추가하세요.