機密事項のマージリクエスト
GitLab 12.1 で導入されました。
公開リポジトリ内のマージリクエストは、機密issueのために作成されたマージリクエストであっても公開されます。機密イシューの作業中に機密情報が漏れるのを避けるには、同じ名前空間の非公開フォークからマージリクエストを作成してください。
ロールは親グループから継承されます。プライベートフォークを元の(公開)リポジトリと同じ名前空間(同じグループまたはサブグループ)に作成した場合、開発者はあなたのフォークで同じ権限を受け取ります。この継承により、以下のことが保証されます:
- 開発者ユーザーは、機密のイシューを閲覧し、解決するために必要な権限を持っています。
- 個々のユーザーにフォークへのアクセス権を与える必要はありません。
GitLab における機密マージリクエストのセキュリティ・プラクティスを読むことができます。
マージリクエストの作成
ブランチはデフォルトで公開されています。作業の機密性を守るため、ブランチとマージリクエストは同じ名前空間に作成する必要がありますが、ダウンストリームは非公開フォークにする必要があります。非公開フォークを公開リポジトリと同じ名前空間に作成した場合、そのフォークはアップストリーム公開リポジトリの権限を継承します。アップストリームの公開リポジトリで Developer ロールを持つユーザーは、あなたがアクションを起こさなくても、ダウンストリームの非公開フォークでそれらのアップストリームパーミッションを継承します。これらのユーザーは、非公開の問題を修正するために、あなたのプライベートフォークのブランチにコードをプッシュすることができます。
前提条件:
非公開マージリクエストを作成するには:
- 極秘issueのページに移動します。イシューの説明の下にスクロールし、マージリクエストを作成するを選択します。
- ニーズに合った項目を選択します:
- ブランチとマージリクエストの両方を作成するには、マージリクエストとブランチの両方を作成するを選択します。マージリクエストのターゲットは、公開アップストリームプロジェクトのデフォルトブランチではなく、あなたのフォークのデフォルトブランチになります。
- ブランチのみを作成するには、ブランチの作成を選択します。
- 使用するプロジェクトを選択します。これらのプロジェクトではマージリクエストが有効になっており、あなたは開発者ロール (あるいはそれ以上) を持っています。
- ブランチ名を入力し、ソース(ブランチまたはタグ)を選択します。GitLabはこれらのブランチが非公開フォークで利用可能かどうかをチェックします。なぜなら、選択したフォークでは両方のブランチが利用可能でなければならないからです。
- 作成を選択します。
このマージリクエストの対象は、公開アップストリームプロジェクトではなく、あなたの非公開フォークです。あなたのブランチ、マージリクエスト、コミットは非公開フォークに残ります。これにより、機密情報の早すぎる漏洩を防ぐことができます。
あなたのフォークからアップストリームリポジトリへのマージリクエストは、次のような場合に行います:
- 非公開フォークで問題が解決されたと確信したとき。
- 秘密のコミットを公開する準備ができました。