开发 Linux 软件包可以使用现有的软件包,从下载页面获取。要了解如何设置构建环境来构建和使用这些软件包,请阅读设置构建环境

选择以下极狐GitLab 安装方法之一。为了提供隔离并防止每次更改都重建软件包,建议使用容器进行开发。

设置容器

  1. 根据官方 Docker 安装文档为您的操作系统安装 Docker。

  2. 拉取极狐GitLab CE 每日镜像:

    docker pull gitlab/gitlab-ce:nightly
    
  3. 使用 shell 提示符运行 Docker 镜像:

    docker run -it --publish 443:443 --publish 80:80 --publish 22:22 gitlab/gitlab-ce:nightly bash
    

    此命令使用极狐GitLab 每日镜像运行 Docker。您将以 bash 提示符开始,在此处运行以下命令。

  4. 首先启动 runsv,然后运行 reconfigure 来初始化极狐GitLab:

    /opt/gitlab/embedded/bin/runsvdir-start &
    gitlab-ctl reconfigure
    

    如果在运行 reconfigure 后出现 sysctl 错误,可以在常见安装问题文档中找到解决方法。

  5. (可选)为您的容器创建快照,以便在需要时可以恢复到此镜像。在 Docker 主机上运行以下命令:

    docker ps # 找到我们容器的容器 ID。
    docker commit <container_id> gitlab_nightly_post_install
    

使用官方每日软件包

  1. Nightly Build 仓库获取极狐GitLab CE 每日软件包,并按照页面上的说明进行安装。

    {{< alert type=”note” >}}

在 Ubuntu Xenial 上,您可能需要安装 tzdata

{{< /alert >}}

  1. 配置并启动极狐GitLab。
  2. 检查您是否可以从您的主机浏览器访问极狐GitLab 实例。
  3. 安装用于开发 Omnibus 极狐GitLab 的基本工具:

    sudo apt-get install git
    

获取 Omnibus 极狐GitLab 的源代码

  1. 极狐GitLab.com 上的仓库获取 Omnibus 极狐GitLab 的源代码:

    git clone https://gitlab.com/gitlab-org/omnibus-gitlab.git ~/omnibus-gitlab
    

    我们将在 ~/omnibus-gitlab 目录中进行开发。

  2. 指导极狐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 添加自己的测试以验证您的工作。

  1. 为极狐GitLab QA 创建用户帐户以供使用

    然后,从任何可以访问您的开发实例的机器:

  2. 克隆极狐GitLab EE仓库

    git clone git@gitlab.com:gitlab-org/gitlab.git
    
  3. 进入 qa 目录

    cd gitlab/qa
    
  4. 安装所需的 gems

    bundle install
    
  5. 运行测试

    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 测试

您还可以针对当前测试测试您的更改(或测试您新添加的测试)。

  1. 安装 bundlerruby-dev,它们是构建必要的 gems 所需的:

    sudo apt install bundler ruby-dev
    
  2. 切换到 omnibus-gitlab 目录:

    cd ~/omnibus-gitlab
    
  3. 在 omnibus 目录中安装所需的 gems:

    /usr/bin/bundle install --path vendor/bundle
    

    如果您使用极狐GitLab 每日 Docker 镜像,/opt/gitlab/embedded/bin 将被添加到 $PATH 前面,因此仅使用 bundle 就会使用极狐GitLab 自带的二进制文件。这就是为什么我们使用系统 bundle 的绝对路径。

  4. 运行您想要的测试。测试可能需要以 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_MODEtest
  • CUSTOMER_PORTAL_URLhttps://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 >}}