[高度な運用とメンテナンスの知識] GitLab の基本操作 (インストールのデプロイ + ローカリゼーション + コードのプッシュ + ブランチのマージ + メイン ブランチの保護 + GitLab のバックアップ) を理解するための記事です。

GitLab は、倉庫管理システムのオープン ソース プロジェクトです。コード管理ツールとして Git を使用し、これに基づいて構築された Web サービスは、Web インターフェイスを通じてパブリックまたはプライベート プロジェクトにアクセスできます。Github と同様の機能を備えており、ソース コード、欠陥とコメントの管理、ウェアハウスへのチームのアクセスを表示できます。提出されたバージョンの閲覧が非常に特殊で、ファイル履歴ライブラリを提供します。チーム メンバーは、組み込みのシンプルなチャット プログラム (ウォール) を使用してコミュニケーションできます。 、コードを簡単に再利用できるコード スニペット コレクション機能も提供します。

官网:https://about.gitlab.com/
国内镜像:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/

環境整備

1. 設置環境

1、Centos7.9
2、2G内存(测试),生产至少需要4G
3、安装包:gitlab-ce-10.2.2-ce.0.el7.x86_64.rpm(下载连接放在文末)
4、禁用防火墙,关闭selinux

2.GitLabをインストールする

公式 Web サイトからダウンロードすることも、rpm パッケージのインストールを選択することもできます (ダウンロード リンクは記事の最後にあります)。

[root@Gitlab ~]# yum -y install policycoreutils-python    #安装依赖
[root@Gitlab ~]# rpm -ivh gitlab-ce-10.2.2-ce.0.el7.x86_64.rpm   #安装软件包
vim /etc/gitlab/gitlab.rb       #  gitlab 配置文件
更改url地址为本机IP地址 external_url 'http://10.0.0.200'
gitlab-ctl reconfigure          # 更改配置文件后需重新配置

/opt/gitlab/                    # gitlab的程序安装目录
/var/opt/gitlab                 # gitlab目录数据目录
/var/opt/gitlab/git-dfata       # 存放仓库数据
gitlab-ctl status               # 查看目前gitlab所有服务运维状态
gitlab-ctl stop                 # 停止gitlab服务
gitlab-ctl stop nginx           # 单独停止某个服务
gitlab-ctl tail                 # 查看所有服务的日志

GitLab的服务构成:
nginx:   静态web服务器
gitlab-workhorse: 轻量级的反向代理服务器
logrotate:日志文件管理工具
postgresql:数据库
redis:缓存数据库
sidekiq:用于在后台执行队列任务(异步执行)。(Ruby)
unicorn:An HTTP server for Rack applications,GitLab Rails应用是托管在这个服务器上面的。(Ruby Web Server,主要使用Ruby编写)

GitLab 中国化

10.0.0.200 に直接アクセス、英語インターフェイスを表示 

1.中国語パッチをダウンロードします。

[root@Gitlab ~]# git clone [email protected]:xhang/gitlab.git    #需要先做免密钥

将Gitlab主机上的公钥复制到gitlab官网(https://gitlab.com)自己的账号配置中

用http下载方式理论上也可以,但是我这边测试下载不上

2. すべてのブランチ バージョンを表示する

[root@Gitlab gitlab]# git branch -a    #需要在安装好的gitlab目录下

3. バージョンを比較し、パッチ パッケージを生成する

[root@Gitlab gitlab]# git diff remotes/origin/10-2-stable remotes/origin/10-2-stable-zh > ../10.2.2-zh.diff
[root@Gitlab gitlab]# cd ..
[root@Gitlab ~]# ls
10.2.2-zh.diff  gitlab  gitlab.bak  gitlab-ce-10.2.2-ce

4. サーバーを停止します

gitlab-ctl stop

5. パッチ適用

[root@Gitlab ~]# patch -d /opt/gitlab/embedded/service/gitlab-rails -p1 < 10.2.2-zh.diff 

6. 起動と再構成 

gitlab-ctl start
gitlab-ctl reconfigure

もう一度アクセスすると中国語のインターフェースが表示されます

を使用した GitLab 構成

初めてログインする場合は、最初にパスワードを設定する必要があります。最短は 8 文字です。ログイン ユーザー名は root、パスワードは自分で設定したパスワードです。

1. 構成の外観

設定後、ログインインターフェイスが変更されます

ログイン後、左上が変更されました

2. 自動登録をオフにする

実際のニーズに合わせて運用してください イントラネットであれば解約してもしなくても問題ありません パブリックネットワークであれば、勝手に見つかって登録されてしまうとgitlabにログインできてしまうので非常に危険です。

キャンセル後、下にスクロールして保存します 

3. グループとユーザーの作成

グループを作る

ユーザーを作成 

作成後、「編集」をクリックし、ここにユーザーパスワードを追加します 

 

4. ユーザーをグループに追加する

5. 倉庫(プロジェクト)を作成する

6. koten ユーザーにログインして、空のテスト ウェアハウスが表示されるかどうかをテストします。

ブラウザがプライバシー モードの場合、koten に初めてログインするユーザーはパスワードを変更する必要があります。変更しない場合は、元のパスワードを新しいパスワードと同じにすることができます。

7. GitLab に ssh キーを追加する

サーバーキーは 1 つの gitlab サーバーにのみ追加でき、ユーザーは複数のキーを追加できます

8. リモート ウェアハウスを追加し、ローカル コードをリモート ウェアハウスにプッシュします。

[root@Gitlab ~]# mkdir git_test
[root@Gitlab ~]# cd git_test
[root@Gitlab git_test]# git init    #初始化git仓库
Initialized empty Git repository in /root/git_test/.git/
[root@Gitlab git_test]# git remote add origin [email protected]:koten_group/test.git    #添加远程仓库
[root@Gitlab git_test]# git checkout -b master    #创建本地master分支
Switched to a new branch 'master'
[root@Gitlab git_test]# git remote rename origin koten-origin    #更改origin名字
[root@Gitlab git_test]# touch 1.txt
[root@Gitlab git_test]# git add .                  #添加项目到缓存区
[root@Gitlab git_test]# git commit -m "file 1.txt" #添加项目到本地仓库
[master (root-commit) e364410] file 1.txt
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 1.txt
[root@Gitlab git_test]# git push -u koten-origin master    #推送本地仓库至远程仓库
Counting objects: 3, done.
Writing objects: 100% (3/3), 199 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To [email protected]:koten_group/test.git
 * [new branch]      master -> master
Branch master set up to track remote branch master from koten-origin.

リモートウェアハウスを参照できるファイルを更新します 

9. コードを別のホストに複製し、プッシュをテストします。

認証を行わない場合は、gitlab のパスワードの入力を求められます。認証にはキーを使用します。 

[root@Web01 ~]# ssh-keygen
[root@Web01 ~]# cat .ssh/id_rsa.pub    #复制进koten用户的ssh密钥

 クローンコード

[root@Web01 git_test]#   git config --global user.email "[email protected]"
[root@Web01 git_test]#   git config --global user.name "Your Name"
[root@Web01 ~]# mkdir git_test
[root@Web01 ~]# cd git_test
[root@Web01 git_test]# git init
Initialized empty Git repository in /root/git_test/.git/
[root@Web01 git_test]# git clone [email protected]:koten_group/test.git    #克隆远程仓库代码
Cloning into 'test'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), done.
[root@Web01 git_test]# tree
.
└── test
    └── 1.txt

1 directory, 1 file

プッシュコード

[root@Web01 git_test]# git branch dev
[root@Web01 git_test]# git checkout dev
[root@Web01 git_test]# touch dev_test
[root@Web01 git_test]# git add .
[root@Web01 git_test]# git commit -m "add dev_test"
[dev cac97e4] add dev_test
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 dev_test
[root@Web01 git_test]# git remote add origin [email protected]:koten_group/test.git    #添加远程仓库
[root@Web01 git_test]# git push -u origin dev    #推送dev分支到远程仓库
Counting objects: 5, done.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (5/5), 464 bytes | 0 bytes/s, done.
Total 5 (delta 0), reused 0 (delta 0)
remote: 
remote: To create a merge request for dev, visit:
remote:   http://10.0.0.200/koten_group/test/merge_requests/new?merge_request%5Bsource_branch%5D=dev
remote: 
To [email protected]:koten_group/test.git
 * [new branch]      dev -> dev
Branch dev set up to track remote branch dev from origin.

10. ブランチリクエストのマージ

初めて、右上隅にある「マージリクエストの作成」をクリックします。

 

 

 dev で与えられる ID は開発者が独自にマージリクエストを受け入れる権限を持っているということなので、与える ID がレポーターの場合は root アカウントで管理してリクエストを受け入れる必要があり、master ブランチが保護されている場合は、 root 経由でリクエストを受け入れる必要もあります

マージ後、ルート側のリモート ウェアハウスはマージされたファイルを表示できますが、gitlab ローカル ウェアハウスでは表示できません。ウェアハウスを更新するためにプルすることはできます。

[root@Gitlab git_test]# ls
1.txt
[root@Gitlab git_test]# git pull
remote: Counting objects: 6, done.
remote: Compressing objects: 100% (6/6), done.
remote: Total 6 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (6/6), done.
From 10.0.0.200:koten_group/test
   e364410..600d0ef  master     -> koten-origin/master
Updating e364410..600d0ef
Fast-forward
 dev      | 0
 dev_test | 0
 test     | 1 +
 3 files changed, 1 insertion(+)
 create mode 100644 dev
 create mode 100644 dev_test
 create mode 160000 test
[root@Gitlab git_test]# ls
1.txt  dev  dev_test  test

11. メインブランチのセットアップと保護

root ユーザー以外のユーザーがコードをメイン ブランチに直接プッシュできないように、マスターを保護として設定できます。

[root@Web01 git_test]# git checkout master    #切换到master分支
Switched to branch 'master'
[root@Web01 git_test]# git merge dev          #合并dev分支
Updating 53298b6..cac97e4
Fast-forward
 dev_test | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 dev_test    
[root@Web01 git_test]# git push -u origin master    #推送主分支
To [email protected]:koten_group/test.git    
 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to '[email protected]:koten_group/test.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first merge the remote changes (e.g.,
hint: 'git pull') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

12. 保護されたブランチをルート側でテストプッシュする

#由于其他分支进行推送,和master端内容不一致,所以无法进行推送,使用git pull把代码拉取到本地,或者git fetch 把代码拉取到本地仓库后进行合并(注意:git pull = git tetch+git merge)
[root@Gitlab git_test]# git push -u koten-origin master 
Branch master set up to track remote branch master from koten-origin.
Everything up-to-date

GitLab バックアップ

对gitlab进行备份将会创建一个包含所有库和附件的归档文件。对备份的恢复只能恢复到与备份时的gitlab相同的版本。将gitlab迁移到另一台服务器上的最佳方法就是通过备份和还原。

gitlab提供了一个简单的命令行来备份整个gitlab,并且能灵活的满足需求。
备份文件将保存在配置文件中定义的backup_path中,文件名为TIMESTAMP_gitlab_backup.tar,TIMESTAMP为备份时的时间戳。TIMESTAMP的格式为:EPOCH_YYYY_MM_DD_Gitlab-version。
如果自定义备份目录需要赋予git权限
配置文件/etc/gitlab/gitlab.rb 中加入
gitlab_rails['backup_path'] = '/data/backup/gitlab'
gitlab_rails['backup_keep_time'] = 604800       备份保留的时间(以秒为单位,这个是七天默认值),

mkdir -p /data/backup/gitlab
chown -R git.git /data/backup/gitlab
完成后执行
gitlab-ctl reconfigure

gitlab rpm パッケージのダウンロード リンク: リンク: https://pan.baidu.com/s/1WCXrPxDzEchFys4i7kjr8A?pwd=q80w

運用保守歴10年、ドライグッズの運用保守を続けているkotenです。

おすすめ

転載: blog.csdn.net/qq_37510195/article/details/130795169