技術共有

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インターフェース上でブランチマージリクエスト(マージリクエスト)を申請します。

    • ローカル ブランチをリモート リポジトリにプッシュします。
      git push origin dev
    • GitLab にログインし、プロジェクトのマージ リクエスト ページで新しいマージ リクエストを作成し、マージするソース ブランチとターゲット ブランチを選択します (通常はmasterまたはmain)。
  • PM は GitLab 上で提出とコードの修正をチェックし、それらが正しいことを確認した後、開発者のブランチがメイン ブランチにマージされることを確認します。

    • PM は、コードの変更や送信記録など、GitLab 上のマージ リクエストをレビューします。
    • すべてがうまくいけば、PM はマージ リクエストを承認し、devブランチが統合されましたmaster支店。
  • 開発者は、GitLab 上でマーク完了によって開発が完了したことを確認し、問題をクローズします。

    • 開発者はマージリクエストを送信するときに説明を追加できますclose #1(で#1は問題番号です)。これにより、マージ リクエストがマージされると、関連する問題が自動的にクローズされます。
    • 問題を閉じるための指示が説明に追加されていない場合、開発者は問題ページで問題を手動で閉じることができます。

 

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 が構築したホストの場合、理論的には、これら 2 つのサービスを停止しても問題ありません。これら 2 つのサービスを停止するのは、データの整合性を確保するためです。通常、古いサーバーの /data/gitlab/backups ディレクトリにあるバックアップ ファイルは、復元のために新しいサーバーの /data/gitlab/backups にコピーされます。ここでは、実験環境がこのマシンに復元されます。

アクセス許可に注意してください: 600 のアクセス許可は復元できません。 実験環境は 777 に変更できます。実稼働環境では、所有者とグループを変更することをお勧めします。

コマンド実行後、しばらく待ってから「yes」を2回入力するとリカバリが完了します。

  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が自動的に追加されるため、ファイル名の後の部分はここに記述できません。

回復が完了したら、すべてのサービスを再起動することも、以前に終了した 2 つのデータ接続サービスだけを開始することもできます。

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

注: バックアップ ファイルを使用して gitlab を復元するには、2 つのホストの 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 服务

Web ページにログインし、ランダム ユーザーとしてログインします。ここでは、以前に使用したランダムな電子メール形式を実際の電子メール形式に変更して、電子メール設定をテストします。

 

変更を加えて「保存」をクリックすると、ポップアップが表示されます。電子メールにアクセスして「確認」をクリックして確認する必要があります。

メールボックスにアクセスすると、送信者が設定に入力した qq メールボックスであることがわかり、ユーザーの変更されたメールボックスに検証が送信されます。

[確認] をクリックすると新しいページにジャンプし、ユーザーが電子メール アドレスを正常に変更したことがわかります。