- コンテナのセットアップ
- 公式のナイトリーパッケージを使用
- Omnibus GitLabのソースを入手します。
- 開発環境に対して GitLab QA を実行します。
- 特定の chefspec テストを実行します。
omnibus-gitlab
cookbooks で Chef-shell を使用してください。- GitLabでカスタマーポータルのステージングを使用します。
- OpenShift GitLab 開発セットアップ
開発者の環境設定
Linux パッケージの開発者は、Downloads ページから入手できる既存のパッケージを使用することができます。これらのパッケージをビルドして使用するためのビルド環境のセットアップ方法については、ビルド環境のセットアップをお読みください。
以下のGitLabインストール方法のいずれかを選択してください。分離を提供し、変更のたびにパッケージがリビルドされるのを防ぐために、開発者にはコンテナを使用することをお勧めします。
コンテナのセットアップ
-
公式のDockerインストールドキュメントに従って、お使いのOSにDockerをインストールします。
-
GitLab CEナイトリーイメージをプルします:
docker pull gitlab/gitlab-ce:nightly
-
シェルプロンプトでDockerイメージを実行します:
docker run -it --publish 443:443 --publish 80:80 --publish 22:22 gitlab/gitlab-ce:nightly bash
このコマンドはGitLabのナイトリーイメージでDockerを実行します。Bashプロンプトから始めて、以下のコマンドを実行します。
-
まずrunsvを起動してGitLabを初期化し、続いて
reconfigure
:/opt/gitlab/embedded/bin/runsvdir-start & gitlab-ctl reconfigure
reconfigure
を実行した後に sysctl エラーが発生した場合は、common installation problems doc に回避策があります。 -
(オプション)コンテナのスナップショットを取り、必要に応じてこのイメージに戻すことができます。Dockerホスト上で以下のコマンドを実行してください:
docker ps # Find the container ID of our container. docker commit <container_id> gitlab_nightly_post_install
公式のナイトリーパッケージを使用
-
GitLab CEのナイトリーパッケージをNightly Buildリポジトリから取得し、そのページの説明に従ってインストールしてください。
Ubuntu Xenialでは、tzdata
をインストールする必要があるかもしれません。このイシューは#4769 でレポーターされています。 - GitLab を設定して起動します。
-
<ip address of host>
のホストブラウザから 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 に指示します。
開発中には、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に独自のテストを追加して、作業内容を検証することもできます。
-
開発インスタンスで 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
特定の chefspec テストを実行します。
現在のテストに対して変更をテストすることもできます(あるいは新しく追加したテストをテストすることもできます)。
-
必要な gems をビルドするために必要な
bundler
とruby-dev
をインストールします:sudo apt install bundler ruby-dev
-
omnibus-gitlab
ディレクトリに移動します:cd ~/omnibus-gitlab
-
必要なgemをomnibusディレクトリにインストールします:
/usr/bin/bundle install --path vendor/bundle
GitLab Nightly Dockerイメージを使用する場合、
$PATH
の前に/opt/gitlab/embedded/bin
が追加されるため、bundle
単独でbundle
使用するとbundle
GitLabの一部として含まれているバイナリが使用さbundle
れます。そのbundle
ため、絶対パスで .bundle
-
必要なテストを実行します。テストはシークレットファイルを読むためのアクセスが必要なので、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_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"
}
OpenShift GitLab 開発セットアップ
Omnibus GitLab開発セットアップのドキュメントを参照してください。