GitLab Pagesの開発に貢献しましょう。
GitLab Pagesの設定方法を学ぶことで、機能の開発に貢献することができます。
GitLab Pages のホスト名の設定
GitLab Pagesはホスト名かドメインが必要です。異なるGitLab Pagesサイトはそれぞれサブドメインを通してアクセスされるからです。GitLab Pagesのホスト名を設定することができます:
ワイルドカードを使わない場合、hostsファイルを編集します。
/etc/hosts
はワイルドカードのホスト名をサポートしていないので、GitLab Pages 用のエントリーを一つ、そして各ページサイト用のエントリーを一つ設定する必要があります:
127.0.0.1 gdk.test # If you're using GDK
127.0.0.1 pages.gdk.test # Pages host
# Any namespace/group/user needs to be added
# as a subdomain to the pages host. This is because
# /etc/hosts doesn't accept wildcards
127.0.0.1 root.pages.gdk.test # for the root pages
DNS ワイルドカードを使う場合
/etc/hosts
を編集する代わりに DNS ワイルドカードを使いたい場合は、次の方法があります:
GDK を使わない GitLab Pages の設定
GitLab Pages サイトのルートにgitlab-pages.conf
を作成します:
# Default port is 3010, but you can use any other
listen-http=:3010
# Your local GitLab Pages domain
pages-domain=pages.gdk.test
# Directory where the pages are stored
pages-root=shared/pages
# Show more information in the logs
log-verbose=true
より多くのオプションを見るには、internal/config/flags.go
をチェックするか、gitlab-pages --help
を実行します。
GitLab Pages の手動実行
コードを変更する場合は、make
を実行してアプリをビルドする必要があります。アプリを起動する前に必ず実行するのがベストです。ビルドはすぐに終わりますので、心配はいりません!
make && ./gitlab-pages -config=gitlab-pages.conf
GDKを使ったGitLab Pagesの設定
以下の手順では、$GDK_ROOT
は GDK をクローンしたディレクトリです。
- GDKのホスト名を設定します。
-
gdk.yml
にGitLab Pages のホスト名を追加します:gitlab_pages: enabled: true # enable GitLab Pages to be managed by gdk port: 3010 # default port is 3010 host: pages.gdk.test # the GitLab Pages domain auto_update: true # if gdk must update GitLab Pages git verbose: true # show more information in the logs
GDKでGitLab Pagesを動かす
これらの設定が終わったら、GDK は GitLab Pages プロセスを管理し、次のようなコマンドでアクセスできるようにします:
- Start:
gdk start gitlab-pages
- 停止
gdk stop gitlab-pages
- 再起動
gdk restart gitlab-pages
- テールログ
gdk tail gitlab-pages
GitLab Pages の手動実行
GDKのプロセス管理とは無関係にアプリをビルドして起動することもできます。
コードを変更する場合は、make
を実行してアプリをビルドする必要があります。アプリを起動する前に必ず実行するのがベストです。ビルドはすぐに終わりますので、心配はいりません!
make && ./gitlab-pages -config=gitlab-pages.conf
FIPSモードでのGitLab Pagesのビルド
FIPS_MODE=1 make && ./gitlab-pages -config=gitlab-pages.conf
GitLab Pagesサイトの作成
GitLab Pages サイトをローカルに構築するには、 gitlab-runner
を設定する必要があります。
詳しくはユーザーマニュアルを参照してください。
アクセスコントロールの有効化
GitLab Pagesは非公開サイトをサポートしています。非公開サイトはGitLabプロジェクトにアクセスできるユーザーだけがアクセスできます。
GitLab Pagesのアクセスコントロールはデフォルトでは無効になっています。有効にするには
-
GitLab自体でGitLab Pagesアクセスコントロールを有効にします。これには二つの方法があります:
-
GDK を使っていない場合は、
gitlab.yml
を編集します:# gitlab/config/gitlab.yml pages: access_control: true
-
GDKを使用している場合は、
gdk.yml
を編集してください:# $GDK_ROOT/gdk.yml gitlab_pages: enabled: true access_control: true
-
- GitLab を再起動します(GDK を使っている場合は
gdk restart
を実行します)。gdk reconfigure
を実行するとaccess_control
の値がconfig/gitlab.yml
に上書きされます。 - ローカルの GitLab インスタンスで、ブラウザから
http://gdk.test:3000/admin/applications
にアクセスします。 -
api
スコープでインスタンス全体の OAuth アプリケーションを作成します。 -
redirect-uri
の値をpages-domain
認証エンドポイントに設定します(例えば、http://pages.gdk.test:3010/auth
)。redirect-uri
には GitLab Pages のサイトドメインを含めてはいけません。 -
認証クライアント設定を追加します:
-
GDKでは、
gdk.yml
:gitlab_pages: enabled: true access_control: true auth_client_id: $CLIENT_ID # the OAuth application id created in http://gdk.test:3000/admin/applications auth_client_secret: $CLIENT_SECRET # the OAuth application secret created in http://gdk.test:3000/admin/applications
GDKはランダムな
auth_secret
を生成し、GitLab Pagesのホスト設定に基づいてauth_redirect_uri
。 -
GDK なしでは、
gitlab-pages.conf
:## the following are only needed if you want to test auth for private projects auth-client-id=$CLIENT_ID # the OAuth application id created in http://gdk.test:3000/admin/applications auth-client-secret=$CLIENT_SECRET # the OAuth application secret created in http://gdk.test:3000/admin/applications auth-secret=$SOME_RANDOM_STRING # should be at least 32 bytes long auth-redirect-uri=http://pages.gdk.test:3010/auth # the authentication callback url for GitLab Pages
-
-
GDK内部でPagesを実行する場合、
gdk.yml
のgdk
の下にある GDKprotected_config_files
セクションを使用することで、gitlab-pages.conf
の設定が書き換わるのを避けることができます:gdk: protected_config_files: - 'gitlab-pages/gitlab-pages.conf'
オブジェクトストレージの有効化
GitLab Pagesはアーティファクトの保存にオブジェクトストレージを使うことをサポートしていますが、オブジェクトストレージはデフォルトでは無効になっています。GDKで有効にすることができます:
-
Edit
gdk.yml
で、GitLab自体のオブジェクトストレージを有効にすることができます:# $GDK_ROOT/gdk.yml object_store: enabled: true
-
コマンド
gdk reconfigure
とgdk restart
を実行して GitLab を再設定し、再起動します。
詳細については、GDKのドキュメントを参照してください。
リンティング
# Run the linter locally
make lint
# Run linter and fix issues (if supported by the linter)
make format
テスト
テストを実行するには、以下のコマンドを使用します:
# This will run all of the tests in the codebase
make test
# Run a specfic test file
go test ./internal/serving/disk/
# Run a specific test in a file
go test ./internal/serving/disk/ -run TestDisk_ServeFileHTTP
# Run all unit tests except acceptance_test.go
go test ./... -short
# Run acceptance_test.go only
make acceptance
# Run specific acceptance tests
# We add `make` here because acceptance tests use the last binary that was compiled,
# so we want to have the latest changes in the build that is tested
make && go test ./ -run TestRedirect
貢献者
フィーチャーフラグ
自明でない変更には機能フラグを追加することを検討してください。機能フラグによって、これらの変更のリリースやロールバックが簡単になり、インシデントやダウンタイムを避けることができます。GitLab Pages に新しい機能フラグを追加するには:
-
internal/feature/feature.go
で機能フラグを作成します。デフォルトではオフでなければなりません。 -
Feature flag
テンプレートを使用して、機能フラグを追跡するイシューを作成してください。 - 機能フラグを扱うマージリクエストに
~"feature flag"
ラベルを追加してください。
GitLab Pages では、機能フラグはグローバルレベルで環境変数によって制御されます。機能フラグの状態を変更するには、サービスレベルでのデプロイが必要です。GitLab Pagesの機能フラグを有効にするマージリクエストの例:GitLab Pages のレート制限を適用します。