- 设置容器
- 使用官方每日软件包
- 获取 Omnibus 极狐GitLab 的源代码
- 在开发环境中运行极狐GitLab QA
- 运行特定的 chefspec 测试
- 使用
omnibus-gitlab
食谱的 chef-shell - 在极狐GitLab 中使用客户门户测试环境
开发 Linux 软件包可以使用现有的软件包,从下载页面获取。要了解如何设置构建环境来构建和使用这些软件包,请阅读设置构建环境。
选择以下极狐GitLab 安装方法之一。为了提供隔离并防止每次更改都重建软件包,建议使用容器进行开发。
设置容器
-
根据官方 Docker 安装文档为您的操作系统安装 Docker。
-
拉取极狐GitLab CE 每日镜像:
docker pull gitlab/gitlab-ce:nightly
-
使用 shell 提示符运行 Docker 镜像:
docker run -it --publish 443:443 --publish 80:80 --publish 22:22 gitlab/gitlab-ce:nightly bash
此命令使用极狐GitLab 每日镜像运行 Docker。您将以 bash 提示符开始,在此处运行以下命令。
-
首先启动 runsv,然后运行
reconfigure
来初始化极狐GitLab:/opt/gitlab/embedded/bin/runsvdir-start & gitlab-ctl reconfigure
如果在运行
reconfigure
后出现 sysctl 错误,可以在常见安装问题文档中找到解决方法。 -
(可选)为您的容器创建快照,以便在需要时可以恢复到此镜像。在 Docker 主机上运行以下命令:
docker ps # 找到我们容器的容器 ID。 docker commit <container_id> gitlab_nightly_post_install
使用官方每日软件包
-
从 Nightly Build 仓库获取极狐GitLab CE 每日软件包,并按照页面上的说明进行安装。
{{< alert type=”note” >}}
在 Ubuntu Xenial 上,您可能需要安装 tzdata
。
{{< /alert >}}
- 配置并启动极狐GitLab。
- 检查您是否可以从您的主机浏览器访问极狐GitLab 实例。
-
安装用于开发 Omnibus 极狐GitLab 的基本工具:
sudo apt-get install git
获取 Omnibus 极狐GitLab 的源代码
-
从极狐GitLab.com 上的仓库获取 Omnibus 极狐GitLab 的源代码:
git clone https://gitlab.com/gitlab-org/omnibus-gitlab.git ~/omnibus-gitlab
我们将在
~/omnibus-gitlab
目录中进行开发。 -
指导极狐GitLab 应用我们对食谱所做的更改。
在开发过程中,我们需要立即将对食谱所做的更改应用到正在运行的极狐GitLab 实例。因此,我们必须配置极狐GitLab 使用这些食谱,而不是安装期间提供的食谱。这涉及备份现有食谱目录并将我们修改的目录符号链接到其位置:
cd ~/omnibus-gitlab/files/gitlab-cookbooks for i in $(ls); do mv "/opt/gitlab/embedded/cookbooks/${i}" "/opt/gitlab/embedded/cookbooks/${i}.$(date +%s)" ln -s "$(pwd)/${i}" "/opt/gitlab/embedded/cookbooks/${i}" done
现在,您可以在
~/omnibus-gitlab/files/gitlab-cookbooks/
内的食谱中进行必要的更改,并运行sudo gitlab-ctl reconfigure
以使这些更改生效。
在开发环境中运行极狐GitLab QA
您可以针对您的开发实例运行极狐GitLab QA测试。
这确保您的新工作按预期运行,并且不会破坏其他内容。您甚至可以向 QA 添加自己的测试以验证您的工作。
-
为极狐GitLab QA 创建用户帐户以供使用
然后,从任何可以访问您的开发实例的机器:
-
克隆极狐GitLab EE仓库
git clone git@gitlab.com:gitlab-org/gitlab.git
-
进入
qa
目录cd gitlab/qa
-
安装所需的 gems
bundle install
-
运行测试
GITLAB_USERNAME=$USERNAME GITLAB_PASSWORD=$PASSWORD bundle exec bin/qa Test::Instance $DEV_INSTANCE_URL
针对已部署实例触发 QA 流水线
如果对已部署实例有持续的网络访问,您可以使用极狐GitLab QA 执行器项目对已部署实例触发极狐GitLab QA 测试。它包含 CI 配置,以并行化方式在极狐GitLab 私有化部署环境中运行极狐GitLab QA。
运行特定的 chefspec 测试
您还可以针对当前测试测试您的更改(或测试您新添加的测试)。
-
安装
bundler
和ruby-dev
,它们是构建必要的 gems 所需的:sudo apt install bundler ruby-dev
-
切换到
omnibus-gitlab
目录:cd ~/omnibus-gitlab
-
在 omnibus 目录中安装所需的 gems:
/usr/bin/bundle install --path vendor/bundle
如果您使用极狐GitLab 每日 Docker 镜像,
/opt/gitlab/embedded/bin
将被添加到$PATH
前面,因此仅使用bundle
就会使用极狐GitLab 自带的二进制文件。这就是为什么我们使用系统bundle
的绝对路径。 -
运行您想要的测试。测试可能需要以 root 身份运行,因为它们需要访问密钥文件:
sudo bundle exec rspec spec/<path_to_spec_file>
使用 omnibus-gitlab
食谱的 chef-shell
您可以使用 chef-shell 来调试您实例中的食谱更改。
在开发服务器上以 root 身份运行:
/opt/gitlab/embedded/bin/cinc-shell -z -c /opt/gitlab/embedded/cookbooks/solo.rb -s -j /opt/gitlab/embedded/cookbooks/dna.json
在极狐GitLab 中使用客户门户测试环境
要将您的极狐GitLab 实例连接到客户门户测试环境,可以在 /etc/gitlab/gitlab.rb
中通过提供 gitlab_rails['env']
哈希设置以下自定义环境变量。设置:
-
GITLAB_LICENSE_MODE
为test
-
CUSTOMER_PORTAL_URL
为https://customers.staging.gitlab.com
例如:
gitlab_rails['env'] = {
"GITLAB_LICENSE_MODE" => "test",
"CUSTOMER_PORTAL_URL" => "https://customers.staging.gitlab.com"
}
{{< alert type=”note” >}}
对于极狐GitLab Geo,使用上述配置的部署必须添加到每个二级站点。
{{< /alert >}}