開発者の環境設定

Linux パッケージの開発者は、Downloads ページから入手できる既存のパッケージを使用することができます。これらのパッケージをビルドして使用するためのビルド環境のセットアップ方法については、ビルド環境のセットアップをお読みください。

以下のGitLabインストール方法のいずれかを選択してください。分離を提供し、変更のたびにパッケージがリビルドされるのを防ぐために、開発者にはコンテナを使用することをお勧めします。

コンテナのセットアップ

  1. 公式のDockerインストールドキュメントに従って、お使いのOSにDockerをインストールします。

  2. GitLab CEナイトリーイメージをプルします:

    docker pull gitlab/gitlab-ce:nightly
    
  3. シェルプロンプトでDockerイメージを実行します:

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

    このコマンドはGitLabのナイトリーイメージでDockerを実行します。Bashプロンプトから始めて、以下のコマンドを実行します。

  4. まずrunsvを起動してGitLabを初期化し、続いてreconfigure

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

    reconfigureを実行した後に sysctl エラーが発生した場合は、common installation problems doc に回避策があります。

  5. (オプション)コンテナのスナップショットを取り、必要に応じてこのイメージに戻すことができます。Dockerホスト上で以下のコマンドを実行してください:

    docker ps # Find the container ID of our container.
    docker commit <container_id> gitlab_nightly_post_install
    

公式のナイトリーパッケージを使用

  1. GitLab CEのナイトリーパッケージをNightly Buildリポジトリから取得し、そのページの説明に従ってインストールしてください。

    note
    Ubuntu Xenialでは、tzdata をインストールする必要があるかもしれません。このイシューは#4769 でレポーターされています。
  2. GitLab を設定して起動します。
  3. <ip address of host> のホストブラウザから GitLab インスタンスにアクセスできるか確認します。
  4. 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 に指示します。

    開発中には、Cookbookに加えた変更を実行中のGitLabインスタンスに即座に適用する必要があります。そのため、インストール時に出荷されたCookbookではなく、それらのCookbookを使うようにGitLabを設定しなければなりません。そのためには、既存のCookbooksディレクトリをバックアップし、変更を加えたディレクトリをその場所にシンボリックリンクします:

    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
    

特定の chefspec テストを実行します。

現在のテストに対して変更をテストすることもできます(あるいは新しく追加したテストをテストすることもできます)。

  1. 必要な gems をビルドするために必要なbundlerruby-dev をインストールします:

    sudo apt install bundler ruby-dev
    
  2. omnibus-gitlab ディレクトリに移動します:

    cd ~/omnibus-gitlab
    
  3. 必要なgemをomnibusディレクトリにインストールします:

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

    GitLab Nightly Dockerイメージを使用する場合、$PATH の前に/opt/gitlab/embedded/bin が追加されるため、bundle 単独で bundle使用するとbundle GitLabの一部として含まれているバイナリが使用さ bundleれます。そのbundle ため、絶対パスで . bundle

  4. 必要なテストを実行します。テストはシークレットファイルを読むためのアクセスが必要なので、rootとして実行する必要があるかもしれません:

    sudo bundle exec rspec spec/<path_to_spec_file>
    

omnibus-gitlab cookbooks で Chef-shell を使用してください。

chef-shellを使ってインスタンスのcookbookの変更をデバッグできます。

開発サーバで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インスタンスをCustomers Portal Stagingに接続するには、/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"
}

OpenShift GitLab 開発セットアップ

Omnibus GitLab開発セットアップのドキュメントを参照してください。