소스에서 컴파일된 인스턴스 업그레이드
Offering: GitLab Self-Managed
소스에서 컴파일된 인스턴스를 최신 버전의 GitLab으로 업그레이드합니다. 소스에서 컴파일된 인스턴스를 업그레이드하려면: 더 새로운 버전의 Ruby가 필요한 경우 Ruby를 업데이트해야 합니다: 현재 보유한 Ruby 버전을 확인하려면 다음을 실행합니다:
소스에서 컴파일된 인스턴스를 최신 버전의 GitLab으로 업그레이드합니다.
전제 조건#
업그레이드 전에:
- 필수 정보를 읽고 필수 단계를 수행해야 합니다.
- Ruby, Node.js, Go 및 PostgreSQL에 대한 소프트웨어 요구 사항을 검토합니다.
소스에서 컴파일된 인스턴스 업그레이드#
소스에서 컴파일된 인스턴스를 업그레이드하려면:
- 업그레이드 중에 유지 관리 모드 켜기를 고려합니다.
- 실행 중인 CI/CD 파이프라인 및 작업을 일시 중지합니다.
- 대상 GitLab 버전과 동일한 버전으로 GitLab Runner를 업그레이드합니다.
- 이 페이지의 지침에 따라 GitLab을 업그레이드합니다.
업그레이드 후:
- 실행 중인 CI/CD 파이프라인 및 작업의 일시 중지를 해제합니다.
- 활성화된 경우 유지 관리 모드를 끕니다.
- 업그레이드 상태 검사를 실행합니다.
백업 만들기#
전제 조건:
rsync가 설치되어 있는지 확인합니다.
백업을 만들려면:
cd /home/git/gitlab
sudo -u git -H bundle exec rake gitlab:backup:create RAILS_ENV=production
GitLab 중지#
GitLab을 중지하려면:
# systemd를 실행하는 시스템의 경우
sudo systemctl stop gitlab.target
# SysV init를 실행하는 시스템의 경우
sudo service gitlab stop
Ruby 업데이트#
더 새로운 버전의 Ruby가 필요한 경우 Ruby를 업데이트해야 합니다:
-
현재 보유한 Ruby 버전을 확인하려면 다음을 실행합니다:
ruby -v -
최신 버전의 Ruby로 업데이트하는 방법은 Ruby 설치 지침을 참조하십시오.
Node.js 업데이트#
더 새로운 버전의 Node.js가 필요한 경우 Node.js를 업데이트해야 합니다:
-
현재 보유한 Node.js 버전을 확인하려면 다음을 실행합니다:
node -v -
최신 버전의 Node.js로 업데이트하는 방법은 Node.js 다운로드 지침을 참조하십시오.
GitLab은 JavaScript 의존성을 관리하기 위해 Yarn >= v1.10.0도 필요합니다. 자세한 내용은 Yarn 웹사이트를 참조하십시오.
Go 업데이트#
더 새로운 버전의 Go가 필요한 경우 Go를 업데이트해야 합니다:
-
현재 보유한 Go 버전을 확인하려면 다음을 실행합니다:
go version -
최신 버전의 Go로 업데이트하는 방법은 Go 설치 지침을 참조하십시오.
Git 업데이트#
Gitaly에서 제공하는 Git 버전을 사용해야 합니다. 자세한 내용은 Git에 대한 GitLab 설치 지침을 참조하십시오.
PostgreSQL 업데이트#
더 새로운 버전의 PostgreSQL이 필요한 경우 PostgreSQL을 업데이트해야 합니다:
-
현재 보유한 PostgreSQL 버전을 확인하려면 다음을 실행합니다:
pg_ctl --version -
최신 버전의 PostgreSQL로 업데이트하는 방법은 PostgreSQL 업그레이드 문서를 참조하십시오.
-
필요한 PostgreSQL 확장 프로그램이 있는지 확인합니다.
GitLab 코드베이스 업데이트#
GitLab 코드베이스의 클론을 업데이트하려면:
-
리포지터리 메타데이터를 가져옵니다:
cd /home/git/gitlab sudo -u git -H git fetch --all --prune sudo -u git -H git checkout -- Gemfile.lock db/structure.sql locale -
업그레이드하려는 버전의 브랜치를 체크아웃합니다:
cd /home/git/gitlab sudo -u git -H git checkoutcd /home/git/gitlab sudo -u git -H git checkout구성 파일 업데이트#
GitLab 업그레이드는 다음 구성에 대한 업데이트가 필요할 수 있습니다:
gitlab.ymldatabase.yml- NGINX (또는 Apache)
- SMTP
- systemd
- SysV
다음 섹션에서는 구성 업데이트가 필요한지 확인하는 방법을 설명합니다.
gitlab.yml의 새 구성#gitlab.yml에 사용 가능한 새 구성 옵션이 있을 수 있습니다.-
가능한 새 구성을 확인합니다:
cd /home/git/gitlab git diff origin/PREVIOUS_BRANCH:config/gitlab.yml.example origin/BRANCH:config/gitlab.yml.example -
현재
gitlab.yml에 새 구성을 수동으로 적용합니다.
database.yml의 새 구성#히스토리
- GitLab 16.0에서
config/database.yml.postgresql에ci:섹션이 있도록 변경.
database.yml에 사용 가능한 새 구성 옵션이 있을 수 있습니다.-
가능한 새 구성을 확인합니다:
cd /home/git/gitlab git diff origin/PREVIOUS_BRANCH:config/database.yml.postgresql origin/BRANCH:config/database.yml.postgresql -
현재
database.yml에 새 구성을 수동으로 적용합니다.
NGINX 또는 Apache의 새 구성#
최신 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/gitlabGitLab 애플리케이션은 더 이상 설치에서 Strict-Transport-Security를 설정하지 않습니다. 계속 사용하려면 NGINX 구성에서 활성화해야 합니다.
NGINX 대신 Apache를 사용하는 경우 업데이트된 Apache 템플릿을 참조하십시오. Apache는 Unix 소켓 뒤의 업스트림을 지원하지 않으므로
/etc/default/gitlab을 사용하여 GitLab Workhorse가 TCP 포트에서 수신하도록 해야 합니다.SMTP 구성#
SMTP를 사용하여 메일을 전달하는 경우
config/initializers/smtp_settings.rb에 다음 줄을 추가해야 합니다:ActionMailer::Base.delivery_method = :smtp예제는
smtp_settings.rb.sample을 참조하십시오.systemd 유닛 구성#
-
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 스크립트 구성#
gitlab.default.example에 사용 가능한 새 구성 옵션이 있을 수 있습니다.-
가능한 새 구성을 확인합니다:
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 -
현재
/etc/default/gitlab에 수동으로 적용합니다.
최신 init 스크립트 변경 사항과 여전히 최신 상태인지 확인합니다:
cd /home/git/gitlab sudo cp lib/support/init.d/gitlab /etc/init.d/gitlabnative systemd 유닛으로 아직 전환하지 않았기 때문에 systemd를 init로 실행하는 시스템에서 init 스크립트를 사용하는 경우 다음을 실행합니다:
sudo systemctl daemon-reload라이브러리 설치 및 마이그레이션 실행#
라이브러리를 설치하고 마이그레이션을 실행하려면:
-
필요한 라이브러리를 설치합니다:
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' # gem 업데이트 sudo -u git -H bundle install # 선택 사항: 오래된 gem 정리 sudo -u git -H bundle clean -
마이그레이션을 실행합니다:
# 데이터베이스 마이그레이션 실행 sudo -u git -H bundle exec rake db:migrate RAILS_ENV=production # node 의존성 업데이트 및 에셋 재컴파일 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
GitLab Shell 업데이트#
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 buildGitLab Workhorse 업데이트#
GitLab Workhorse를 설치하고 컴파일하려면 다음 명령을 실행합니다:
cd /home/git/gitlab sudo -u git -H bundle exec rake "gitlab:workhorse:install[/home/git/gitlab-workhorse]" RAILS_ENV=productionGitaly 업데이트#
애플리케이션 서버를 업그레이드하기 전에 Gitaly 서버를 최신 버전으로 업그레이드합니다. 이렇게 하면 애플리케이션 서버의 gRPC 클라이언트가 이전 Gitaly 버전에서 지원하지 않는 RPC를 전송하는 것을 방지합니다.
Gitaly가 자체 서버에 있거나 Gitaly 클러스터(Praefect)를 사용하는 경우 다운타임 없는 업그레이드를 참조하십시오.
빌드 프로세스 중에 Gitaly는 Git 바이너리를 컴파일하고 임베드하는데 이를 위해 추가 의존성이 필요합니다.
# 의존성 설치 sudo apt-get install -y libcurl4-openssl-dev libexpat1-dev gettext libz-dev libssl-dev libpcre2-dev build-essential # 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=productionGitLab Pages 업데이트#
GitLab Pages를 설치하고 컴파일하려면:
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업그레이드 후 단계#
업그레이드 후:
- GitLab 및 NGINX를 시작합니다.
- GitLab 상태를 확인합니다.
GitLab 및 NGINX 시작#
GitLab 및 NGINX를 시작하려면:
# systemd를 실행하는 시스템의 경우 sudo systemctl start gitlab.target sudo systemctl restart nginx.service # SysV init를 실행하는 시스템의 경우 sudo service gitlab start sudo service nginx restartGitLab 상태 확인#
GitLab의 상태를 확인하려면:
-
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 16.6으로 업그레이드했고 16.5로 되돌리려면 16.4에서 16.5로 업그레이드하는 가이드를 따릅니다.
되돌릴 때:
- 백업이 이미 이전 버전으로 마이그레이션되었으므로 데이터베이스 마이그레이션 가이드를 따르지 않아야 합니다.
- 데이터베이스 마이그레이션을 실행한 경우 다운그레이드 후 백업을 복원해야 합니다. 코드의 버전은 사용 중인 스키마의 버전과 호환되어야 합니다. 이전 스키마는 백업에 있습니다.
백업에서 복원#
백업에서 복원하려면:
cd /home/git/gitlab sudo -u git -H bundle exec rake gitlab:backup:restore RAILS_ENV=production백업
*.tar파일이 두 개 이상인 경우 이전 코드 블록에BACKUP=timestamp_of_backup을 추가합니다.
