For the complete documentation index, see llms.txt. This page is also available as Markdown.

Configure GitLab CI for Deploy Change Investigator

Send build and deployment webhooks to track changes

Send build and deployment data from GitLab CI/CD pipelines to the Deploy Change Investigator using webhook jobs.

Before you begin

  • Deploy Change Investigator setup: Build and deploy webhook integrations created in AI SRE. Go to Deploy Change Investigator to create webhook endpoints.

  • GitLab project access: Maintainer role to edit .gitlab-ci.yml and configure CI/CD variables.

  • Webhook URLs: Build and deploy webhook URLs from the AI SRE integrations page.


Store webhook URLs as CI/CD variables

Store webhook URLs securely in GitLab CI/CD variables:

  1. In your project, go to Settings > CI/CD.

  2. Expand the Variables section.

  3. Click Add variable.

  4. Configure build webhook:

    • Key: AISRE_BUILD_WEBHOOK_URL

    • Value: Build webhook URL from AI SRE

    • Type: Variable

    • Flags: Protect variable, Mask variable

  5. Click Add variable

  6. Repeat for deploy webhook:

    • Key: AISRE_DEPLOY_WEBHOOK_URL

    • Value: Deploy webhook URL from AI SRE


Configure build webhooks

Add a webhook notification job to your pipeline after build completes.

Docker build pipeline


GitLab CI predefined variables

GitLab CI provides these predefined variables automatically:

Variable
Description
Example

CI_COMMIT_SHA

Full commit SHA

1ecfd275763eff1d6b4844ea3168962458c9f27a

CI_COMMIT_SHORT_SHA

Short commit SHA (first 8 characters)

1ecfd275

CI_COMMIT_REF_NAME

Branch or tag name

main

CI_PROJECT_PATH

Project path with namespace

group/project

CI_PROJECT_NAME

Project name only

project

CI_PROJECT_URL

Full project URL

https://gitlab.com/group/project

CI_PIPELINE_ID

Unique pipeline ID

1234567

CI_REGISTRY

GitLab Container Registry URL

registry.gitlab.com

Access variables using shell syntax: $CI_COMMIT_SHA or ${CI_COMMIT_SHA}


Configure deploy webhooks

Add webhook notification jobs to deployment pipelines after deployment completes.

Kubernetes deployment pipeline

DEPLOY STATUS IS RECORDED AS SUCCESS

The stock Harness Deployment template records every deploy activity as success. Sending a FAILURE status is accepted but does not create a failed-deployment record. Keep the failure job if you want the deploy event captured, but do not rely on the status value to distinguish failed deploys.


Job execution conditions

Control when jobs execute using when and only keywords:

Keyword
Purpose

when: on_success

Run if previous jobs succeeded

when: on_failure

Run if previous jobs failed

when: always

Run regardless of previous job status

when: manual

Require manual trigger

only: [main]

Run only on specified branches

except: [develop]

Skip on specified branches

Example with conditions:


Multi-service deployments

For pipelines that deploy multiple services, send all services in one webhook:


Reusable templates

Create reusable webhook notification templates using include:

Create template file

Create .gitlab/ci/webhook-notify.yml:

Use templates

Include and extend templates in main pipeline:


Map service and version fields

The Deploy Change Investigator requires exact matches between build and deploy webhooks:

Build webhook
Deploy webhook
Must match

service.name

services[].service

✅ Required

artifact.version or service.version

services[].version

✅ Required

Use the same variable ($CI_COMMIT_SHORT_SHA) in both build and deploy webhooks to ensure versions match.


Test webhooks

Test build webhook

Trigger a build and confirm the webhook reaches AI SRE:

  1. Push a commit or create a merge request.

  2. Check the pipeline job logs for the notify-build job.

  3. Verify the curl command executed successfully.

  4. In the AI SRE left navigation, go to Integrations.

  5. Click the More icon (...) on the BUILD integration.

  6. Select Debug.

  7. Verify the webhook appears with correct payload.

Test deploy webhook

Trigger a deployment and confirm the webhook reaches AI SRE:

  1. Trigger the deployment pipeline.

  2. Check the notify-deploy job logs.

  3. In the AI SRE left navigation, go to Integrations.

  4. Click the More icon (...) on the DEPLOY integration.

  5. Select Debug.

  6. Verify the webhook appears.

Verify correlation

After sending both webhooks:

  1. In the AI SRE left navigation, go to Change Management.

  2. Deployments should appear linked to builds.

  3. Click a deployment to see artifact versions and commit information.


Troubleshooting

GitLab CI webhook not received in AI SRE

Confirm the CI/CD variable AISRE_BUILD_WEBHOOK_URL or AISRE_DEPLOY_WEBHOOK_URL is configured, verify the curl command runs in the job logs, ensure GitLab runners allow outbound HTTPS, and check the JSON payload for syntax errors. Test manually with curl -v -X POST against the webhook URL.

GitLab CI deployments not linked to builds in AI SRE

Ensure services[].service in the deploy webhook exactly matches service.name in the build webhook, and services[].version exactly matches the build webhook version. Confirm both webhooks were sent successfully by checking the Debug view.

GitLab CI shell variable interpolation issues in webhook JSON

Shell variables may not expand in JSON. Use the quote pattern \"'\"$VARIABLE\"'\" for proper JSON escaping, for example \"service\": \"'\"$CI_PROJECT_NAME\"'\".

GitLab CI job fails with a protected variable when sending webhooks

Protected variables are only available on protected branches. Either unprotect the variable or restrict webhook jobs to protected branches using an only clause such as main or /^release\\/.*$/.


Next steps

Last updated

Was this helpful?