gitlab/gerrit

这篇具有很好参考价值的文章主要介绍了gitlab/gerrit。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

首先声明:本文在最后gitlab和gerrit关联部分配置有问题,导致后来代码提交不了,所以本文仅作为了解配置过程使用,不可作为搭建模板

1. gitlab

安装配置参考 CHAPTER 3 Jenkins SVN GItlab
gitlab/gerrit,运维工具,gitlab

# 启动容器
docker run  -itd  -p 9980:80  -p 9922:22  -v /home/gitlab/etc:/etc/gitlab   -v /home/gitlab/log:/var/log/gitlab  -v /home/gitlab/opt:/var/opt/gitlab  --restart always  --privileged=true  --name gitlab  gitlab/gitlab-ce

账号:root
密码:Newm123@

这里由于是docker启动gitlab,所以有些配置需要在容器中修改

#进容器内部
docker exec -it gitlab /bin/bash
 
#修改gitlab.rb
vi /etc/gitlab/gitlab.rb
 
#加入如下
#gitlab访问地址,可以写域名。如果端口不写的话默认为80端口
external_url 'http://192.168.124.194'
#ssh主机ip
gitlab_rails['gitlab_ssh_host'] = '192.168.124.194'
#ssh连接端口
gitlab_rails['gitlab_shell_ssh_port'] = 9922
 
# 让配置生效
gitlab-ctl reconfigure
# 修改http和ssh配置
vi /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
 
  gitlab:
    host: 192.168.124.194
    port: 9980 # 这里改为9980
    https: false


#重启gitlab 
gitlab-ctl restart
#退出容器 
exit

然后配置gitlab免密登录才能使用

2. gerrit

Gerrit,一种免费、开放源代码的代码审查软件,使用网页界面。利用网页浏览器,同一个团队的软件程序员,可以相互审阅彼此修改后的程序代码,决定是否能够提交,退回或者继续修改。它使用Git作为底层版本控制系统。它分支自Rietveld,作者为Google公司的Shawn Pearce,原先是为了管理Android计划而产生。

这个软件的名称,来自于荷兰设计师赫里特·里特费尔德(Gerrit Rietveld)。最早它是由Python写成,在第二版后,改成用Java与SQL。使用Google Web Toolkit来产生前端的JavaScript。

2.1 环境准备

  • CentOS7.9

  • Java 11

  • Git配置解决Gerrit中文编码支持

    # git utf-8配置
    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf8
    git config --global i18n.commitencoding utf8
    
  • 安装git工具,gerrit使用git命令执行git相关命令

    	cd  /etc/yum.repos.d
    mkdir  repobak
    mv *.repo   repobak
    
    
    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
    
    yum clean all
    yum makecache
    

    yum安装git

    # 安装
    [root@gerrit ~]# yum -y install git
    # 验证
    [root@gerrit ~]# git --version
    git version 1.8.3.1
    

    此处建议通过源码编译安装(推荐)新版本的 git,需要自行下载 git 源码来编译安装。

    本地的git版本不能太低,容易引起位置错误。笔者贪图省事安装的1.8.3.1,结果提交的时候各种报错,而且各种不好查

    1、卸载旧版本 git

    yum remove git
    

    2、进入 Github 中的 git 版本页面 ,或者在镜像站,自行选择版本下载,我这里下载的是 git-2.30.2.tar.gz
    3、将本地的安装包上传到 linux 服务器上,我这里放在 /home/software 目录下

    4、解压压缩包,得到目录 git-2.30.2,位置在 /home/software/git-2.30.2

    tar -zxvf git-2.30.2.tar.gz
    

    5、提前安装可能需要的依赖

    yum install curl-devel expat-devel openssl-devel zlib-devel gcc-c++ 
    yum install perl-ExtUtils-MakeMaker automake autoconf libtool make
    

    6、编译安装 Git

    进入到 git-2.30.2 目录,执行编译安装等命令

    cd git-2.30.2
    make configure
    ./configure --prefix=/usr/local/git
    make profix=/usr/local/git
    make install
    

    7、将 git 加入环境变量中,修改 /etc/profile 文件,在 profile 文件末尾追加配置内容

    编辑配置文件

    vim /etc/profile
    

    末尾追加

    export GIT_HOME=/usr/local/git
    export PATH=$PATH:$GIT_HOME/bin
    

    8、刷新 profile 配置文件

    source /etc/profile
    

    9、查看是否配置成功

    git --version
    git version 2.30.2
    

    配置成功!

2.2 下载软件

官网 https://www.gerritcodereview.com/
gitlab/gerrit,运维工具,gitlab

# 创建一个存放有关gerrit的目录
mkdir /usr/local/gerrit
cd /usr/local/gerrit
# 下载gerrit war包
wget https://gerrit-releases.storage.googleapis.com/gerrit-3.8.0.war

2.3 创建启动账户

[root@nexus-254 gerrit]# useradd gerrit
[root@nexus-254 gerrit]# passwd gerrit
Changing password for user gerrit.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
[root@nexus-254 gerrit_site]# grep 'gerrit'  /etc/sudoers	#为gerrit赋予执行权限
gerrit  ALL=(ALL)       ALL
[root@nexus-254 gerrit]# su - gerrit
[gerrit@nexus-254 ~]$ cd /usr/local/gerrit/
[gerrit@nexus-254 gerrit]$

2.4 安装gerrit

[gerrit@nexus-254 gerrit]$ java -jar gerrit-3.8.0.war init -d ~/gerrit_site
Using secure store: com.google.gerrit.server.securestore.DefaultSecureStore

*** Gerrit Code Review 3.8.0
***


*** Git Repositories
***

Location of Git repositories   [git]:

*** JGit Configuration
***


*** Index
***

Type                           [lucene]:

*** User Authentication
***

Authentication method          [http/?]: http
Get username from custom HTTP header [y/N]?
SSO logout URL                 :
Enable signed push support     [y/N]?

*** Review Labels
***

Install Verified label         [y/N]?

*** Email Delivery
***

SMTP server hostname           [localhost]:
SMTP server port               [(default)]:
SMTP encryption                [none/?]:
SMTP username                  :

*** Container Process
***

Run as                         [gerrit]:
Java runtime                   [/usr/lib/jvm/java-11-openjdk-11.0.18.0.10-1.el7_9.x86_64]:
Upgrade /home/gerrit/gerrit_site/bin/gerrit.war [Y/n]?
Copying gerrit-3.8.0.war to /home/gerrit/gerrit_site/bin/gerrit.war

*** SSH Daemon
***

Listen on address              [*]:
Listen on port                 [29418]: 8890

*** HTTP Daemon
***

Behind reverse proxy           [y/N]?
Use SSL (https://)             [y/N]?
Listen on address              [*]:
Listen on port                 [8081]: 8890
Canonical URL                  [http://192.168.70.249:8080/]: ^C[gerrit@nexus-254 gerrit]$
[gerrit@nexus-254 gerrit]$ java -jar gerrit-3.8.0.war init -d ~/gerrit_site
Using secure store: com.google.gerrit.server.securestore.DefaultSecureStore

*** Gerrit Code Review 3.8.0
***


*** Git Repositories
***

Location of Git repositories   [git]:

*** JGit Configuration
***


*** Index
***

Type                           [lucene]:

*** User Authentication
***

Authentication method          [http/?]: http			#修改此处
Get username from custom HTTP header [y/N]?
SSO logout URL                 :
Enable signed push support     [y/N]?

*** Review Labels
***

Install Verified label         [y/N]?

*** Email Delivery
***

SMTP server hostname           [localhost]:
SMTP server port               [(default)]:
SMTP encryption                [none/?]:
SMTP username                  :

*** Container Process
***

Run as                         [gerrit]:
Java runtime                   [/usr/lib/jvm/java-11-openjdk-11.0.18.0.10-1.el7_9.x86_64]:
Upgrade /home/gerrit/gerrit_site/bin/gerrit.war [Y/n]?
Copying gerrit-3.8.0.war to /home/gerrit/gerrit_site/bin/gerrit.war

*** SSH Daemon
***

Listen on address              [*]:
Listen on port                 [29418]:

*** HTTP Daemon
***

Behind reverse proxy           [y/N]?
Use SSL (https://)             [y/N]?
Listen on address              [*]:
Listen on port                 [8081]:
Canonical URL                  [http://192.168.70.249:8080/]:

*** Cache
***
*** Plugins
***

Installing plugins.
Install plugin codemirror-editor version v3.8.0 [y/N]?
Install plugin commit-message-length-validator version v3.8.0 [y/N]?
Install plugin delete-project version v3.8.0 [y/N]?
Install plugin download-commands version v3.8.0 [y/N]?
Install plugin gitiles version v3.8.0 [y/N]?
Install plugin hooks version v3.8.0 [y/N]?
Install plugin plugin-manager version v3.8.0 [y/N]?
Install plugin replication version v3.8.0 [y/N]?
Install plugin reviewnotes version v3.8.0 [y/N]?
Install plugin singleusergroup version v3.8.0 [y/N]?
Install plugin webhooks version v3.8.0 [y/N]?
Initializing plugins.
No plugins found with init steps.

============================================================================
Welcome to the Gerrit community

Find more information on the homepage: https://www.gerritcodereview.com
Discuss Gerrit on the mailing list: https://groups.google.com/g/repo-discuss
============================================================================
Initialized /home/gerrit/gerrit_site

2.5 创建登录账户

[root@nexus-254 gerrit_site]# yum install httpd-tools
[root@nexus-254 gerrit_site]# htpasswd -cb /etc/httpd/passwords admin centos
Adding password for user admin
[root@nexus-254 gerrit_site]# htpasswd -b /etc/httpd/passwords dev ubuntu
Adding password for user dev
[root@nexus-254 gerrit_site]# cat /etc/httpd/passwords
admin:$apr1$xBLi7KRG$ih1tsU.sxxzi32JhyOGEf/
dev:$apr1$Tgk3UiFs$4I/0Ndo01XUc11eS3O1Wm0

2.6 启动服务

[gerrit@nexus-254 gerrit_site]$ sudo ./bin/gerrit.sh start
[sudo] password for gerrit:
Starting Gerrit Code Review: Already Running!!

此时访问gerrit主页面仍会报错
gitlab/gerrit,运维工具,gitlab

2.7 修改配置文件

[gerrit@nexus-254 gerrit_site]$ cat etc/gerrit.config
[gerrit]
        basePath = git
        canonicalWebUrl = http://192.168.70.249:8081/		#gerrit端口
        serverId = 951f7595-f1e0-4847-9fa8-7a0344349253
[database]
        type = h2
        database = /home/gerrit/gerrit_site/db/ReviewDB
[container]
        javaOptions = "-Dflogger.backend_factory=com.google.common.flogger.backend.log4j.Log4jBackendFactory#getInstance"
        javaOptions = "-Dflogger.logging_context=com.google.gerrit.server.logging.LoggingContext#getInstance"
        user = gerrit
        javaHome = /usr/lib/jvm/java-11-openjdk-11.0.18.0.10-1.el7_9.x86_64
[index]
        type = lucene
[auth]
        type = HTTP
        userNameCaseInsensitive = true
[receive]
        enableSignedPush = false
[sendemail]
        smtpServer = localhost
[sshd]
        listenAddress = *:29418
[httpd]
        listenUrl = http://*:8081/			#gerrit端口
[cache]
        directory = cache

重启gerrit

配置文件中的端口要统一

2.8 配置反向代理(nginx)

[root@nexus-254 gerrit_site]# cat /etc/nginx/nginx.conf
...
     server {
        listen 8082;											#反向代理端口
        server_name localhost;

        location / {
            #root html;
            #index index.html index.htm;
            auth_basic "Gerrit Code Review";
            auth_basic_user_file /etc/httpd/passwords;
            proxy_pass http://192.168.70.249:8081;				#gerrit端口
            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_set_header Host $host;
                         }
                }


}

重启nginx

2.9 gerrit主页

gitlab/gerrit,运维工具,gitlab

3. gitlab+gerrit

此时我们需要将代码推送到gerrit,然后代码在gerrit review完成后,推送到gitlab

3.1 配置gerrit replication功能(用于复制具体项目)

由于前文中,安装gerrit 插件的时候全部pass了,所以此处需要重新安装插件。

  1. 正常情况下,可以在界面plugins中选择插件,笔者不清楚自己哪里配置出现的问题,无法访问插件列表,所以只能重新初始化gerrit进行安装
  2. 初始化gerrit安装插件
    [gerrit@nexus-254 gerrit]$ java -jar gerrit-3.8.0.war init -d ~/gerrit_site
    ...
    *** Plugins
    ***
    
    Installing plugins.
    Install plugin codemirror-editor version v3.8.0 [y/N]? y
    Installed codemirror-editor v3.8.0
    Install plugin commit-message-length-validator version v3.8.0 [y/N]? y
    Installed commit-message-length-validator v3.8.0
    Install plugin delete-project version v3.8.0 [y/N]? y
    Installed delete-project v3.8.0
    Install plugin download-commands version v3.8.0 [y/N]? y
    Installed download-commands v3.8.0
    Install plugin gitiles version v3.8.0 [y/N]? y
    Installed gitiles v3.8.0
    Install plugin hooks version v3.8.0 [y/N]? y
    Installed hooks v3.8.0
    Install plugin plugin-manager version v3.8.0 [y/N]? y
    Installed plugin-manager v3.8.0
    Install plugin replication version v3.8.0 [y/N]? y
    Installed replication v3.8.0
    Install plugin reviewnotes version v3.8.0 [y/N]? y
    Installed reviewnotes v3.8.0
    Install plugin singleusergroup version v3.8.0 [y/N]? y
    Installed singleusergroup v3.8.0
    Install plugin webhooks version v3.8.0 [y/N]? y
    Installed webhooks v3.8.0
    Initializing plugins.
    
    Initialized /home/gerrit/gerrit_site
    

3.2 新建项目

  1. 新增群组
    gitlab/gerrit,运维工具,gitlab
  2. 新建项目
    gitlab/gerrit,运维工具,gitlab
  3. 查看
    gitlab/gerrit,运维工具,gitlab
    如果出现"An error occurred while fetching folder content."报错,大概率是服务器内存不够,可适当加大内存,或者等一等。

可以新增用户yurq,把用户添加到Devs群中,这样yurq可以进行代码下载和上传
yurq / Newm123@123
gitlab/gerrit,运维工具,gitlab
不过我们在前面已经配置了免密登录,代码可以直接推送到gitlab

3.3 提交文件

  1. 下载代码
    [root@node-253 git]# git clone ssh://git@192.168.70.249:9922/devs/mypython.git
    Cloning into 'mypython'...
    The authenticity of host '[192.168.70.249]:9922 ([192.168.70.249]:9922)' can't be established.
    ECDSA key fingerprint is SHA256:b5JAzYRCuG7/IftDYp0F2ZoHAUgwszzyOnYU3pQyDm8.
    ECDSA key fingerprint is MD5:57:58:36:b7:25:04:93:23:df:cb:8b:a5:68:a6:cb:85.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added '[192.168.70.249]:9922' (ECDSA) to the list of known hosts.
    remote: Enumerating objects: 9, done.
    remote: Counting objects: 100% (9/9), done.
    remote: Compressing objects: 100% (8/8), done.
    remote: Total 9 (delta 1), reused 0 (delta 0), pack-reused 0
    Receiving objects: 100% (9/9), done.
    Resolving deltas: 100% (1/1), done.
    
    只有第一次需要输入yes,后面就不需要了
  2. 编写代码
    [root@node-253 mypython]# cat mypython.py
    #!/usr/bin/env python
    import time
    
    print("hello world!", time.strftime("%Y-%m-%d %H:%M:%S - ", time.localtime()))
    
  3. 提交代码
    [root@node-253 mypython]# git add mypython.py
    [root@node-253 mypython]# git commit mypython.py
    [main 862de96] hello world! time
     1 file changed, 4 insertions(+)
     create mode 100644 mypython.py
    [root@node-253 mypython]# git push
    warning: push.default is unset; its implicit value is changing in
    Git 2.0 from 'matching' to 'simple'. To squelch this message
    ...
    To ssh://git@192.168.70.249:9922/devs/mypython.git
       80b3a15..862de96  main -> main
    
    这里我们没建分支,均在main进行操作,在生产环境中注意切换分支
  4. 查看网页
    gitlab/gerrit,运维工具,gitlab
    到现在为止,我们直接可以把代码提交到git

3.4 配置gitlab/gerrit服务器互信

ssh-keygen -t rsa
ssh-copy-id 192.168.71.253

3.5 创建gerrit项目

  1. 在gerrit主页BROWSE,选择Repositories,CREATE NEW ,这里需要创建和gitlab中名称一致的项目,此处我们创建mypython
    注意:gerrit区分大小写,而gitlab不区分。所以我们在前面gitlab创建的MyPython,在gerrit中需要创建mypython。
    gitlab/gerrit,运维工具,gitlab

  2. 在gerrit生成密钥

    ssh-keygen -t rsa
    

    将公钥配置到gitlab和gerrit中
    gitlab/gerrit,运维工具,gitlab
    gitlab/gerrit,运维工具,gitlab

  3. 客户端克隆gerrit的代码
    后续通过从gerrit下载的代码进行修改,提交

3.6 编辑gerrit配置文件

  1. 在Gerrit服务器上编辑同步Gitlab的配置文件
cd /home/gerrit/gerrit_site
mkdir .ssh; cd .ssh
touch config
[root@nexus-254 gerrit_site]# cat .ssh/config
HOST 192.168.70.249       
IdentityFile /root/.ssh/id_rsa

PreferredAuthenticationns publickey
chmod 600 review_site/.ssh/config       #修改权限~降低安全风险
  1. 配置gerrit replication功能
[root@nexus-254 gerrit_site]# pwd
/home/gerrit/gerrit_site
[root@nexus-254 gerrit_site]# cat etc/replication.config
[remote "mypython"]
projects = mypython
url = git@192.168.70.249:9922/devs/mypython.git
push = +refs/heads/*:refs/heads/*
push = +refs/tags/*:refs/tags/*
push = +refs/changes/*:refs/changes/*
threads = 3

重启gerrit

3.7 验证Gerrit和Gitlab的集成效果-使用客户端直接提交代码到Gitlab

  1. 客户端克隆Gerrit代码后直接提交给main分支

    [root@nexus-254 mypython]# cat mypython.py
    #!/usr/bin/env python
    import time
    
    print("hello world!", time.strftime("%Y-%m-%d %H:%M:%S - Now", time.localtime()))
    
  2. 提交报错

    [root@nexus-254 testrepo]# git push -u origin HEAD:refs/for/master
    Enumerating objects: 3, done.
    Counting objects: 100% (3/3), done.
    Writing objects: 100% (3/3), 240 bytes | 240.00 KiB/s, done.
    Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
    fatal: Unpack error, check server log
    error: remote unpack failed: error Permission denied
    To ssh://192.168.70.249:29418/testrepo
     ! [remote rejected] HEAD -> refs/for/master (n/a (unpacker error))
    error: failed to push some refs to 'ssh://192.168.70.249:29418/testrepo'
    

    笔者花了很长时间研究,并参考网上方案一直没有解决,大概率是前面哪里的配置出了问题,或者版本问题

本次仅为了解配置过程,未能解决的问题先躺平吧,以后有机会在解决

以上部分内容参考 Gerrit - Gerrit与GitLab集成 文章来源地址https://www.toymoban.com/news/detail-528525.html

到了这里,关于gitlab/gerrit的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 系统运维工具KSysAK——让运维回归简单

    系统运维工具KSysAK——让运维回归简单 系统异常定位分析工具KSysAK是云峦操作系统研发及运维人员总结开发及运维经验,设计和研发的多个运维工具的集合, 可以覆盖系统的日常监控、线上问题诊断和系统故障修复等常见运维场景 。 工具的整体设计上,力图让运维工作回归

    2024年02月03日
    浏览(31)
  • 云运维工具

    企业通常寻找具有成本效益的方法来优化创收,维护物理基础架构以托管服务器和应用程序以提供服务交付需要巨大的空间和前期资金,最重要的是,物理基础设施会产生额外的运营支出以进行定期维护,这对收入造成了沉重的损失。 云使企业能够使用虚拟资源执行业务运营

    2024年02月14日
    浏览(32)
  • Gerrit 使用操作手册

    一、Gerrit简介 Gerrit 是一种免费、开源的代码审查工具,使用网页交互页面。这个软件的名称来自于荷兰设计师师赫里特·里特费尔德(Gerrit Rietveld),作者为Google公司的Shawn Pearce。它使用Git作为底层版本控制系统,相比于其他的代码管理工具,Gerrit明显的特色是代码审核。利

    2024年02月02日
    浏览(67)
  • gerrit用户指导

    v3.6.2 https://gerrit-documentation.storage.googleapis.com/Documentation/3.6.2/intro-user.html 关于Gerrit Gerrit用于访问控制被托管的Git仓库以及为review代码提供网页前端。代码review是Gerrit的核心功能,但这个功能仍然是可选的,可以不使用该功能。 Gerrit使用Git协议,意味着使用Gerrit不需要安装Ge

    2024年02月15日
    浏览(28)
  • gerrit 遇到的问题汇总

    更新远程代码 git pull --rebase 回退到指定版本 get reset --hard commitid 修改之前的提交 git commit --amend 本地提交了两个记录到远程,远程还没有合并,本地使用 git reset --soft HEAD~1 回退到了上一个提交,现在需要将本地的提交和远程的提交一致 解决方案 1、使用 git reflog 命令查看历史

    2024年02月12日
    浏览(31)
  • Git&Gerrit使用笔记

            全称Global Information Tracker,或者 stupid content tracker,分布式版本控制系统。         Git没有中央服务器,每个协作开发者的电脑都是一个完整的版本库,工作时无需联网只需推送。Git可以记录所有的变更记录,可以方便查询和回滚历史版本。         Gerri

    2024年02月10日
    浏览(42)
  • Gerrit 事件监听实现

    Centos 7.9 Gerrit 2.15 docker-compose.yml 启动docker 利用 gerrit stream-events 实现对Gerrit所有事件的监听 生成密钥 配置SSH 配置All-Projects的Stream Events 代码部分 在Gerrit操作patch,代码会打印相应的事件 以Gerrit 2.15为例 使用webhook插件实现Gerrit主动向自己的web服务发送请求 下载打包webhooks插件

    2024年02月08日
    浏览(31)
  • 云计算:常用运维软件工具

    目录 一、理论 1.云管理工具 2.虚拟化工具 3.容器管理工具 4.运维自动化工具 5.版本控制工具 6.配置管理工具 7.编辑器工具 8.代码质量工具 9.网络管理工具 10.数据库管理工具 11.数据中心设备管理工具 12.数据可视化工具 13.服务器管理工具 14.应用性能管理工具 15.日志管理工具

    2024年02月08日
    浏览(50)
  • 【教程】GitStats代码统计工具(附GitLab API相关)

    官方文档:GitStats - git history statistics generator GitStats是基于Git的数据统计生成器,输出格式为HTML,可直接在浏览器打开查看,展现为图表形式的可视化数据,内容包括: 常规信息:文件总数、行数、提交数、作者数 活跃度:按小时、日期、月度、年度统计提交量 贡献度:作

    2023年04月21日
    浏览(31)
  • 自动化运维工具——Ansible

    Ansible是一个基于Python开发的配置管理和应用部署工具,现在也在自动化管理领域大放异彩。它融合了众多老牌运维工具的优点,Pubbet和Saltstack能实现的功能,Ansible基本上都可以实现。 Ansible能批量配置、部署、管理上千台主机。比如以前需要切换到每个主机上执行的一或多个

    2024年02月14日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包