デプロイ承認者
特定の保護された環境(例えば本番環境)にデプロイする前に、追加の承認者を要求することが有用な場合があります。このデプロイ前の承認要件は、各デプロイの前に行わなければならないテスト、セキュリティ、またはコンプライアンスプロセスに対応するのに便利です。
保護された環境で 1 つ以上の承認者が必要な場合、その環境へのデプロイはすべてブロックされ、Allowed to Deploy
リストから必要な承認を待ってから実行されます。
前提条件
- GitLab 環境とデプロイに関する基本的な知識。
- 保護環境に関する基本的な知識
プロジェクトのデプロイ承認者の設定
プロジェクトのデプロイ承認を設定します:
- デプロイジョブを作成します。
- 保護環境の承認者を要求します。
デプロイ ジョブの作成
目的のプロジェクトの.gitlab-ci.yml
ファイルにデプロイジョブを作成します。ジョブは手動である必要はありません(when: manual
)。
使用例:
stages:
- deploy
production:
stage: deploy
script:
- 'echo "Deploying to ${CI_ENVIRONMENT_NAME}"'
environment:
name: ${CI_JOB_NAME}
保護環境に対する承認者の必要性
承認者を設定するには、2 つの方法があります:
- 統一承認者設定…デプロイの実行者と承認者を定義できます。これは、組織内で実行者と承認者の職務が分離されていない場合に便利です。
- 複数の承認ルール…誰がデプロイを実行または承認できるかを定義できます。これは、組織内で実行者と承認者の職務が分離されている場合に便利です。
統一承認設定 (非推奨)
- GitLab 15.11でUI設定が削除されました。
保護された環境で承認者を設定するには:
-
REST API を使用して、
required_approval_count
フィールドを 1 以上に設定します。
この設定後、この環境にデプロイするすべてのジョブは自動的にブロック状態になり、実行前に承認者を待ちます。必要な承認者数がデプロイを許可されるユーザー数より少ないことを確認してください。
使用例:
curl --header 'Content-Type: application/json' --request POST \
--data '{"name": "production", "deploy_access_levels": [{"group_id": 9899826}], "required_approval_count": 1}' \
--header "PRIVATE-TOKEN: <your_access_token>" \
"https://gitlab.example.com/api/v4/projects/22034114/protected_environments"
複数の承認者ルール
- GitLab 14.10 で
deployment_approval_rules
というフラグで導入されました。デフォルトでは無効です。- GitLab 15.0で一般的に利用可能に。機能フラグ
deployment_approval_rules
は削除されました。- GitLab 15.11で導入されたUI設定。
-
REST API を使う
-
deploy_access_levels
は、デプロイ ジョブを実行できるエンティティを表します。 -
approval_rules
は、どのエンティティがデプロイジョブを承認できるかを表します。
-
-
UI を使用します。
- Allowed to deployは、デプロイ ジョブを実行できるエンティティを設定します。
- 承認者] は、デプロイ ジョブを承認できるエンティティを設定します。
この設定を行うと、この環境にデプロイするすべてのジョブは自動的にブロック状態になり、実行前に承認を待ちます。必要な承認者数が、デプロイを許可されるユーザー数より少ないことを確認します。デプロイ ジョブが承認されたら、手動で実行する必要があります。
REST API を使用する設定は次のようになります:
curl --header 'Content-Type: application/json' --request POST \
--data '{"name": "production", "deploy_access_levels": [{"group_id": 138}], "approval_rules": [{"group_id": 134}, {"group_id": 135, "required_approvals": 2}]}' \
--header "PRIVATE-TOKEN: <your_access_token>" \
"https://gitlab.example.com/api/v4/groups/128/protected_environments"
この設定では
- オペレータグループ (
group_id: 138
) には、組織 (group_id: 128
) 内のproduction
環境へのデプロイジョブを実行する権限があります。 - QA テスター グループ (
group_id: 134
) とセキュリティ グループ (group_id: 135
) には、組織内のproduction
環境 (group_id: 128
) へのデプロイ ジョブを承認する権限があります。 - セキュリティグループからの 2 つの承認者と QA テスターグループからの 1 つの承認者が集まらなければ、 オペレーターグループはデプロイジョブを実行できません。
複数の承認ルールへのマイグレーション
保護された環境を統一承認ルールから複数承認ルールにマイグレーションできます。統一承認ルールでは、環境にデプロイできるすべてのエンティティがデプロイ ジョブを承認できます。複数の承認ルールにマイグレーションするには、環境へのデプロイが許可されているエンティティごとに新しい承認ルールを作成します。
UI を使用してマイグレーションするには
- 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
- Settings > CI/CDを選択します。
- 保護された環境を展開します。
- 環境] リストから環境を選択します。
- 環境へのデプロイが許可されている各エンティティについて説明します:
- 承認者の追加] を選択します。
- モーダルウィンドウで、デプロイジョブの承認者を選択します。
- 必要な承認者数を入力します。
- Save を選択します。
各デプロイには、各エンティティから指定された数の承認者が必要です。
たとえば、以下のProduction
環境では、合計 5 つの承認者が必要であり、グループVery Important Group
とユーザーAdministrator
からのデプロイのみが許可されます:
マイグレーションを行うには、Very Important Group
とAdministrator
のルールを作成します。必要な承認者数を維持するために、Very Important Group
の必要な承認者数を4人に設定し、Administrator
1 Administrator
人に設定します。Administrator
新しいルールでは Administrator
、Production
のすべてのデプロイ ジョブを承認するAdministrator
必要が Administrator
あります。
自己承認の許可
デフォルトでは、デプロイパイプラインをトリガーしたユーザーはデプロイジョブを承認することもできません。デプロイジョブの自己承認を許可するには:
- 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
- Settings > CI/CDを選択します。
- 保護された環境を展開します。
- 承認]オプションから、[パイプライン トリガラがデプロイを承認できるようにする]チェックボックスを選択します。
デプロイの承認者または拒否者
GitLab 14.9 で導入されました。
GitLab UIまたはAPIを使うと、以下のことができます:
- デプロイを承認して、デプロイを進めることができます。
- デプロイを拒否すると、デプロイができません。
UI を使ったデプロイの承認者・却下者
前提条件:
- 保護環境へのデプロイの権限。
UI を使用して保護環境へのデプロイを承認または拒否するには
- 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
- オペレーション > 環境を選択します。
- 環境名を選択します。
- デプロイの行で[承認オプション]({サムアップ})を選択します。デプロイを承認または拒否する前に、付与された承認数と残りの承認数、承認者ま たは拒否者を確認できます。
- オプション。配置を承認または拒否する理由を説明するコメントを追加します。
- 承認者]または[拒否者]を選択します。
API を使用したデプロイの承認者または拒否者
前提条件:
- 保護環境へのデプロイの権限。
API を使用して保護された環境へのデプロイを承認または拒否するには、必要な属性を渡します。詳細は、「ブロックされたデプロイを承認または拒否する」を参照してください。
使用例:
curl --data "status=approved&comment=Looks good to me" \
--header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/deployments/1/approval"
デプロイの承認者の詳細を表示します。
前提条件:
- 保護環境へのデプロイの権限。
保護された環境へのデプロイは、必要なすべての承認者が許可された後にのみ続行できます。
デプロイの承認者の詳細を表示するには、次の手順に従います:
- 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
- オペレーション > 環境を選択します。
- 環境名を選択します。
- デプロイの行で、[承認者] オプションを選択します({サムアップ})。
承認ステータスの詳細が表示されます:
- 承認者
- 承認者数および必要承認者数
- 承認者ユーザー数
- 承認者または却下者の履歴
ブロックされたデプロイの確認方法
UIの使い方
- 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
- オペレーション > 環境を選択します。
- デプロイ先の環境を選択します。
-
blocked
のラベルを探します。
API の使用
-
status
フィールドは、デプロイがブロックされているかどうかを示します。 -
統合承認者設定が構成されている場合:
-
pending_approval_count
フィールドは、デプロイを実行するための承認者の残り数を示します。 -
approvals
フィールドにはデプロイの承認者が含まれます。
-
-
複数の承認ルールが設定されている場合:
-
approval_summary
フィールドには、ルールごとの現在の承認ステータスが表示されます。
-
関連する機能
デプロイの保護を目的とした他の GitLab 機能の詳細については、安全なデプロイをご覧ください。