Skip to main content
This guide explains how to configure Workload Identity for GitLab CI/CD to authenticate with Bytebase without storing long-lived credentials.

Step 1: Create a Workload Identity in Bytebase

  1. Go to IAM & Admin > Users & Groups.
  2. Click Add User in the upper-right corner.
  3. Select Workload Identity as the Type.
  4. Fill in the configuration:
  1. Click Confirm to create the Workload Identity.

Step 2: Assign Roles

After creating the Workload Identity, assign the GitOps Service Agent role to enable automated CI/CD workflows:
  1. Go to your project’s Settings > Members.
  2. Click Grant Access.
  3. Enter the Workload Identity email (e.g., gitlab-ci-deploy@workload.bytebase.com).
  4. Select the GitOps Service Agent role.
  5. Click Confirm.
The GitOps Service Agent role is designed for automated CI/CD workflows, allowing the identity to create and execute database changes. See Roles and Permissions for details.

Step 3: Configure GitLab CI/CD Pipeline

In your GitLab CI/CD pipeline, add the following configuration:

Request OIDC Token

Add id_tokens configuration to get the JWT token from GitLab:

Complete Example

Here’s a complete GitOps workflow that uses Workload Identity to deploy database migrations:
For more details on GitOps workflows, see GitOps Overview and Migration-Based Workflow.

Self-Hosted GitLab

For self-hosted GitLab instances, update the audience (aud) to match your GitLab instance URL:
When creating the Workload Identity in Bytebase, ensure the configuration matches your self-hosted GitLab instance.

Troubleshooting

Token Exchange Fails

If the token exchange returns an error:
  1. Verify the project path and branch: Check that your pipeline’s project path and branch match the configured values in Bytebase.
  2. Check the audience: Ensure the aud in your id_tokens configuration matches your GitLab instance URL (e.g., https://gitlab.com for GitLab.com).
  3. Verify OIDC is enabled: GitLab CI/CD OIDC tokens require GitLab 15.7 or later.

Permission Denied

If API calls return permission errors:
  1. Verify the Workload Identity has the GitOps Service Agent role assigned.
  2. Check that the Workload Identity is a member of the target project.

Debug Token Claims

To inspect the OIDC token claims, decode the JWT:
This shows the token’s claims including sub, aud, namespace_path, project_path, and ref that Bytebase validates.