기술나눔

Jihu Gitlab 사용 (2)

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

목차

1. 관리자 비밀번호를 변경하는 Gitlab 명령줄

2. Gitlab 서비스 관리

3. 회사의 개발 코드 제출 프로세스

4. Gitlab 백업 및 복구

데이터 백업

테스트 데이터 복구

5. 이메일 구성


 

1. 관리자 비밀번호를 변경하는 Gitlab 명령줄

  1. [root@tty01 ~]# gitlab-rails console -e production # 启动GitLab的Rails控制台
  2. --------------------------------------------------------------------------------
  3. Ruby: ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux]
  4. GitLab: 16.11.5-jh (3a067aedcc3) EE
  5. GitLab Shell: 14.35.0
  6. PostgreSQL: 14.11
  7. ------------------------------------------------------------[ booted in 50.69s ]
  8. Loading production environment (Rails 7.0.8.1)
  9. irb(main):001:0> user = User.where(id: 1).first # id为1的是超级管理员
  10. => #<User id:1 @root>
  11. irb(main):002:0> user.password = 'Qq111111' # 密码必须至少8个字符
  12. => "Qq111111"
  13. irb(main):003:0> user.save! # 如没有问题 返回true
  14. => true
  15. irb(main):004:0> exit # 退出

2. Gitlab 서비스 관리

  1. gitlab-ctl start # 启动所有 gitlab 组件;
  2. gitlab-ctl stop # 停止所有 gitlab 组件;
  3. gitlab-ctl restart # 重启所有 gitlab 组件;
  4. gitlab-ctl status # 查看服务状态;
  5. gitlab-ctl reconfigure # 启动服务;
  6. vim /etc/gitlab/gitlab.rb # 修改默认的配置文件;
  7. gitlab-ctl tail # 查看日志;

3. 회사의 개발 코드 제출 프로세스

  • 프로젝트 관리자(PM)는 GitLab에서 작업을 생성하고 개발자에게 할당합니다.

    • PM은 GitLab의 Issue 기능을 사용하여 작업을 생성하고 작업에 대한 자세한 설명과 요구 사항을 지정합니다.
    • 특정 개발자에게 작업을 할당하고 우선순위와 기한을 설정하세요.
  • 개발자는 작업을 받은 후 로컬에서 git clone을 사용하여 코드 라이브러리를 가져옵니다.

    • 개발자는 로컬 터미널에서 다음 명령을 실행합니다.
      git clone <仓库地址>
    • 코드 베이스를 로컬 개발 환경에 복제합니다.
  • 개발자는 개발 브랜치를 생성하고 개발합니다.

    • 로컬에서 새 개발 브랜치를 만듭니다.dev
      git checkout -b dev
    • 존재하다dev코드 개발 및 수정은 브랜치에서 수행됩니다.
  • 개발자가 개발을 완료한 후 현지 창고에 제출합니다.

    • 코드 변경 사항을 로컬로 제출:
      git add . git commit -m "完成任务描述"
  • 개발자는 GitLab 인터페이스에서 브랜치 병합 요청(Merge request)을 신청합니다.

    • 로컬 분기를 원격 저장소로 푸시합니다.
      git push origin dev
    • GitLab에 로그인하고 프로젝트의 병합 요청 페이지에서 새 병합 요청을 생성한 후 병합할 소스 브랜치와 대상 브랜치를 선택합니다(일반적으로master또는main)。
  • PM은 GitLab에서 제출물과 코드 수정 사항이 올바른지 확인한 후 개발자의 브랜치가 메인 브랜치에 병합되는지 확인합니다.

    • PM은 코드 변경 및 제출 기록을 포함하여 GitLab의 병합 요청을 검토합니다.
    • 모든 것이 순조롭게 진행되면 PM은 병합 요청을 승인하고dev지점이 다음으로 병합되었습니다.master나뭇가지.
  • 개발자는 GitLab에서 Mark done에 의해 개발이 완료되었음을 확인하고 이슈를 종료합니다.

    • 개발자는 병합 요청을 제출할 때 설명을 추가할 수 있습니다.close #1(안에#1는 Issue 번호)이므로 Merge Request가 병합되면 관련 Issue가 자동으로 종료됩니다.
    • 설명에 이슈를 종료하라는 지침이 추가되지 않은 경우 개발자는 이슈 페이지에서 이슈를 수동으로 종료할 수 있습니다.

 

4. Gitlab 백업 및 복구

시스템 버전 및 소프트웨어 버전 확인

  1. [root@tty01 ~]# cat /etc/redhat-release
  2. Rocky Linux release 9.4 (Blue Onyx)
  3. [root@tty01 ~]# cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
  4. 16.11.5-jh
데이터 백업

/etc/gitlab/gitlab.rb 구성 파일을 열고 백업과 관련된 구성 항목을 확인합니다.

 

  1. [root@tty01 ~]# vim /etc/gitlab/gitlab.rb #启用下述两个配置项
  2. gitlab_rails['manage_backup_path'] = true #指定GitLab是否应该自动管理备份路径
  3. gitlab_rails['backup_path'] = "/var/opt/gitlab/backups" #指定GitLab备份文件的存储路径

이 항목은 기본 백업 파일의 경로를 정의하고 구성을 수정하고 실행할 수 있습니다. gitlab-ctl 재구성 또는 gitlab-ctl 재시작 적용하려면 서비스를 다시 시작하세요.

  1. [root@tty01 ~]# gitlab-ctl reconfigure
  2. [root@tty01 ~]# gitlab-ctl restart

백업 명령을 실행하여 백업

[root@tty01 ~]# gitlab-rake gitlab:backup:create

명령을 실행하면 다음과 같은 경고 메시지가 나타납니다.gitlab.rb그리고gitlab-secrets.json 파일에는 중요한 데이터가 포함되어 있으므로 이 백업에는 포함되지 않습니다. 백업을 복원할 때 이러한 파일을 수동으로 백업해야 합니다.

물론 이는 계획된 작업과 연계하여 수행할 수도 있습니다.

백업 디렉터리에 파일이 정상적으로 존재하는지 확인

  1. [root@tty01 ~]# ls /var/opt/gitlab/backups/
  2. 1720624341_2024_07_10_16.11.5-jh_gitlab_backup.tar

매일 백업이 수행되지 않도록 백업 보존 시간을 설정하십시오. /etc/gitlab/gitlab.rb 구성 파일을 열고 다음 구성을 찾으십시오.

  1. [root@tty01 ~]# vim /etc/gitlab/gitlab.rb # 启用下述两个配置项
  2. gitlab_rails['backup_keep_time'] = 604800 # 设置备份文件过期时间,604800秒等于7天

구성된 시간은 초 단위입니다. 이를 늘리거나 줄이려면 여기에서 직접 구성하고 gitlab-ctl restart를 통해 서비스를 다시 시작하면 적용됩니다.

백업이 완료되면 백업 디렉터리에 오늘 날짜의 tar 패키지가 생성됩니다.

테스트 데이터 복구

관리 사용자로 로그인하여 라이브러리 항목 삭제

 

복원하기 전에 데이터 연결 서비스를 중지해야 합니다.

  1. [root@tty01 ~]# gitlab-ctl stop unicorn
  2. [root@tty01 ~]# gitlab-ctl stop sidekiq

Taishin이 구축한 호스트라면 일반적으로 데이터 연결 작업을 중지할 필요가 없습니다. 이론적으로는 이 두 서비스를 중지해도 괜찮습니다. 이 두 서비스를 중지하는 것은 데이터 일관성을 보장하는 것입니다. 일반적으로 이전 서버의 /data/gitlab/backups 디렉터리에 있는 백업 파일을 새 서버의 /data/gitlab/backups에 복사하여 복구합니다. 여기서 실험 환경은 이 머신에 복원됩니다.

참고 권한: 600 권한은 복원할 수 없습니다. 실험환경은 777로 변경이 가능합니다. 프로덕션 환경의 경우 소유자, 그룹 수정을 권장합니다.

명령을 실행한 후 잠시 기다린 후... yes를 두 번 입력하면 복구가 완료됩니다.

  1. [root@tty01 ~]# cd /var/opt/gitlab/backups/ #进入数据备份目录
  2. [root@tty01 backups]# gitlab-rake gitlab:backup:restore BACKUP=1720624341_2024_07_10_16.11.5-jh

여기서 BACKUP= 뒤의 파일 이름에 주의하세요. 최신 버전에서는 전체 이름을 사용할 수 없으며 _gitlab_backup.tarh가 자동으로 추가되므로 여기에 파일 이름 뒤의 지점을 쓸 수 없습니다.

복구가 완료되면 이제 모든 서비스를 다시 시작하거나 이전에 종료된 두 개의 데이터 연결 서비스를 시작할 수 있습니다.

  1. [root@tty01 backups]# gitlab-ctl restart
  2. [root@tty01 backups]# gitlab-ctl start unicorn
  3. [root@tty01 backups]# gitlab-ctl start sidekiq

참고: 백업 파일을 통해 gitlab을 복원하려면 두 호스트의 gitlab 버전이 일관되어야 합니다. 그렇지 않으면 버전이 일치하지 않는다는 메시지가 표시됩니다.  

 

삭제된 데이터를 보려면 새로 고치거나 다시 로그인하세요.

 

 

5. 이메일 구성

이메일 주소, 이메일 서비스 제공업체, 인증 코드, 포트 및 기타 정보로 변경하세요.

  1. [root@tty01 ~]# vim /etc/gitlab/gitlab.rb #找到并替换邮箱配置,更改你的邮箱进行测试
  2. gitlab_rails['smtp_enable'] = true
  3. gitlab_rails['smtp_address'] = "smtp.163.com"
  4. gitlab_rails['smtp_port'] = 465
  5. gitlab_rails['smtp_user_name'] = "[email protected]"
  6. gitlab_rails['smtp_password'] = "UWYNCPQOBQFCDLIW"
  7. gitlab_rails['smtp_domain'] = "smtp.163.com"
  8. gitlab_rails['smtp_authentication'] = "login"
  9. gitlab_rails['smtp_enable_starttls_auto'] = false
  10. gitlab_rails['smtp_tls'] = true
  11. gitlab_rails['smtp_pool'] = false
  12. gitlab_rails['gitlab_email_from'] = '[email protected]'

 

설정 후 저장하고 종료한 후 구성을 다시 로드하세요.

[root@tty01 ~]# gitlab-ctl reconfigure  #重新配置 GitLab 服务

웹 페이지에 로그인하고 임의의 사용자로 로그인합니다. 이전에 사용한 임의 이메일 형식을 사용했습니다. 이제 이메일 구성을 테스트하기 위해 이를 실제 이메일로 변경합니다.

 

변경한 후 저장을 클릭하면 팝업이 나타나며 이메일로 이동하여 확인을 클릭해야 합니다.

메일함으로 가보니 발신인이 제가 설정해둔 qq 메일함인 것을 알 수 있고, 사용자의 변경된 메일함으로 확인 메일이 옵니다.

확인을 클릭하면 새 페이지로 이동하여 사용자가 이메일 주소를 성공적으로 변경했음을 확인할 수 있습니다.