GitLab_가이드

소스에서 Community Edition 및 Enterprise Edition 업그레이드

구일칠구 2022. 8. 1. 19:13

소스에서 Community Edition 및 Enterprise Edition 업그레이드

12.0.0으로 업그레이드하려는 사용자는 몇 가지 추가 단계를 수행해야 합니다. 자세한 내용은 12.0.0에 대한 버전별 업그레이드 지침을 참조하십시오.

설치하려는 GitLab의 분기(버전)에서 이 업데이트 가이드를 확인하십시오(예: 11.8). GitLab 문서 페이지의 오른쪽 상단에 있는 드롭다운에서 필요한 문서 버전을 선택할 수 있습니다.

다음 각 예에서 BRANCH업그레이드하려는 버전의 분기로 바꿉니다(예: 11-8-stablefor 11.8). 업그레이드하려는 버전의 분기로 바꿉니다 PREVIOUS_BRANCH(예: 11-7-stable) 11.7.

가장 높은 안정 브랜치가 확실하지 않은 경우 GitLab 블로그 에서 버전별 설치 가이드 링크를 확인하세요.

GitLab Community Edition에서 GitLab Enterprise Edition으로 변경하는 경우 CE에서 EE로 업그레이드 문서를 참조하십시오.

새로운 주 버전으로 업그레이드

메이저 버전은 이전 버전과 호환되지 않는 변경 사항을 위해 예약되어 있습니다. 먼저 현재 주 버전의 사용 가능한 최신 부 버전으로 업그레이드하는 것이 좋습니다. 이상적인 업그레이드 경로를 식별 하려면 업그레이드 권장 사항 을 따르십시오 .

새 주 버전으로 업그레이드하기 전에 이전 릴리스의 백그라운드 마이그레이션 작업이 완료되었는지 확인해야 합니다. background_migration대기열 의 현재 크기를 보려면 업그레이드하기 전에 백그라운드 마이그레이션을 확인하십시오 .

모든 버전에 대한 지침

이 섹션에는 업그레이드하려는 버전에 관계없이 Community Edition 또는 Enterprise Edition을 업그레이드하는 데 필요한 모든 단계가 포함되어 있습니다. 버전별 지침(있는 경우)은 별도로 다룹니다.

1. 백업

소스에서 GitLab을 설치했다면 설치되어 있는지 확인하십시오 rsync.

cd /home/git/gitlab
    
    sudo -u git -H bundle exec rake gitlab:backup:create RAILS_ENV=production
    

2. 서버 중지

# For systems running systemd
    sudo systemctl stop gitlab.target
    
    # For systems running SysV init
    sudo service gitlab stop
    

3. 루비 업데이트

GitLab 13.6부터 Ruby 2.7 이상만 지원하고 Ruby 2.6에 대한 지원을 중단했습니다. 필요한 경우 업그레이드하십시오.

실행 중인 버전을 확인할 수 있습니다 ruby -v.

Ruby를 다운로드하고 컴파일하십시오:

mkdir /tmp/ruby && cd /tmp/ruby
    curl --remote-name --progress-bar "https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.4.tar.gz"
    echo '3043099089608859fc8cce7f9fdccaa1f53a462457e3838ec3b25a7d609fbc5b ruby-2.7.4.tar.gz' | sha256sum -c - && tar xzf ruby-2.7.4.tar.gz
    cd ruby-2.7.4
    
    ./configure --disable-install-rdoc --enable-shared
    make
    sudo make install
    

4. Node.js 업데이트

최소 필수 Node.js 버전을 확인하려면 Node.js 버전을 참조 하십시오 .

>= v1.10.0GitLab은 또한 JavaScript 종속성을 관리하기 위해 Yarn을 사용해야 합니다 .

데비안 또는 우분투:

sudo apt-get remove yarn
    
    npm install --global yarn
    

자세한 내용은 Yarn 웹사이트 에서 확인할 수 있습니다 .

5. 업데이트 이동

필요한 최소 Go 버전을 확인하려면 Go 버전 을 참조 하십시오 .

실행 중인 버전을 확인할 수 있습니다 go version.

Go 다운로드 및 설치(Linux, 64비트용):

# Remove former Go installation folder
    sudo rm -rf /usr/local/go
    
    curl --remote-name --progress-bar "https://go.dev/dl/go1.16.10.linux-amd64.tar.gz"
    echo '414cd18ce1d193769b9e97d2401ad718755ab47816e13b2a1cde203d263b55cf  go1.16.10.linux-amd64.tar.gz' | shasum -a256 -c - && \
    sudo tar -C /usr/local -xzf go1.16.10.linux-amd64.tar.gz
    sudo ln -sf /usr/local/go/bin/{go,gofmt} /usr/local/bin/
    rm go1.16.10.linux-amd64.tar.gz
    

6. Git 업데이트

필요한 최소 Git 버전을 실행 중인지 확인하려면 Git 버전 을 참조 하십시오 .

GitLab 13.6부터 다음과 같은 Gitaly에서 제공하는 Git 버전 을 사용하는 것이 좋습니다 .

  • 항상 GitLab에서 요구하는 버전입니다.
  • 올바른 작동에 필요한 사용자 지정 패치가 포함될 수 있습니다.
# Install dependencies
    sudo apt-get install -y libcurl4-openssl-dev libexpat1-dev gettext libz-dev libssl-dev libpcre2-dev build-essential
    
    # Clone the Gitaly repository
    git clone https://gitlab.com/gitlab-org/gitaly.git -b <X-Y-stable> /tmp/gitaly
    
    # Compile and install Git
    cd /tmp/gitaly
    sudo make git GIT_PREFIX=/usr/local
    

<X-Y-stable>설치하려는 GitLab 버전과 일치하는 안정적인 브랜치로 교체 합니다. 예를 들어 GitLab 13.6을 설치하려면 브랜치 이름을 사용하십시오 13-6-stable.

로 설정 git -> bin_path하는 것을 잊지 마십시오 . /usr/local/bin/gitconfig/gitlab.yml

7. PostgreSQL 업데이트

GitLab 14.0부터 PostgreSQL 12 이상을 사용해야 합니다.

최신 버전의 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 커뮤니티 에디션의 경우:

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
    

NGINX 구성

최신 NGINX 구성 변경 사항이 여전히 최신 상태인지 확인하십시오.

cd /home/git/gitlab
    
    # For HTTPS configurations
    git diff origin/PREVIOUS_BRANCH:lib/support/nginx/gitlab-ssl origin/BRANCH:lib/support/nginx/gitlab-ssl
    
    # For HTTP configurations
    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를 들어 보십시오.

시스템 단위 구성

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 초기화 스크립트 구성

체계 단위를 사용하는 경우 체계 단위 구성 을 참조하십시오 .

에 사용할 수 있는 새 구성 옵션이 있을 수 있습니다 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
    

systemd를 init로 실행하는 시스템에서 init 스크립트를 사용하는 경우 아직 기본 시스템 단위로 전환하지 않았기 때문에 다음을 실행하십시오.

sudo systemctl daemon-reload
    

10. 라이브러리, 마이그레이션 등 설치

필요한 PostgreSQL 확장 이 있는지 확인한 다음 필요한 라이브러리를 설치합니다.

cd /home/git/gitlab
    
    # If you haven't done so during installation or a previous upgrade already
    sudo -u git -H bundle config set --local deployment 'true'
    sudo -u git -H bundle config set --local without 'development test mysql aws kerberos'
    
    # Update gems
    sudo -u git -H bundle install
    
    # Optional: clean up old gems
    sudo -u git -H bundle clean
    
    # Run database migrations
    sudo -u git -H bundle exec rake db:migrate RAILS_ENV=production
    
    # Compile GetText PO files
    sudo -u git -H bundle exec rake gettext:compile RAILS_ENV=production
    
    # Update node dependencies and recompile assets
    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"
    
    # Clean up cache
    sudo -u git -H bundle exec rake cache:clear RAILS_ENV=production
    

11. GitLab 셸 업데이트

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.0 특정 업그레이드 지침을 참조하십시오.

13. 지탈리 업데이트

컴파일 Gitaly

# Fetch Gitaly source with Git and compile with 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 페이지 업데이트

GitLab Pages를 사용하는 경우에만 필요

GitLab 페이지를 설치하고 컴파일합니다. GitLab 페이지는 GNU Make 를 사용 합니다. gmakeLinux를 사용하지 않는 경우 아래 대신 실행해야 할 수 있습니다 make.

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. 신청 시작

# For systems running systemd
    sudo systemctl start gitlab.target
    sudo systemctl restart nginx.service
    
    # For systems running 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
    

모든 항목이 녹색이면 축하합니다. 업그레이드가 완료된 것입니다!

버전별 업그레이드 지침

이 섹션에는 특정 버전에 대한 업그레이드 지침이 포함되어 있습니다. 있는 경우 먼저 모든 버전에 대한 업그레이드 지침을 따르십시오. 업그레이드하려는 버전이 여기에 나열되지 않으면 추가 단계가 필요하지 않습니다.

13.0.1

Omnibus GitLab에서 Rack Attack 스로틀 을 더 이상 사용하지 않는 것의 일환으로 GitLab 의 Rack Attack 초기화 프로그램의 이름이 에서 로 변경 config/initializers/rack_attack_new.rb되었습니다config/initializers/rack_attack.rb . 이 파일이 설치에 존재하는 경우 업데이트하기 전에 백업을 만드는 것이 좋습니다.

cd /home/git/gitlab
    cp config/initializers/rack_attack.rb ~/config/initializers/rack_attack_backup.rb
    

문제 해결

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위에 추가합니다.

'GitLab_가이드' 카테고리의 다른 글

다중 노드/HA 배포  (0) 2022.08.02
다운타임 없는 업그레이드  (0) 2022.08.01
비 Omnibus 설치에서 Omnibus 설치로 업그레이드  (0) 2022.08.01
패키지 정보  (0) 2022.08.01
지원 중단 정책  (0) 2022.08.01