You are currently viewing Your Object IDs Have No Excuse Now – Ninja Comes to CI/CD

Your Object IDs Have No Excuse Now – Ninja Comes to CI/CD

AL Object ID Ninja is now available as a GitHub Action and an Azure DevOps Pipeline Task. It scans your AL repository during CI/CD and fails the build if it finds any object IDs, field IDs, or enum value IDs that aren’t tracked by the Ninja backend. No more spreadsheets, no more “we’ll coordinate manually”, no more conflicts surfacing during deployment.

Multi-app repos and app pools are supported automatically.

GitHub Actions

Add a new workflow file to your repository:

# .github/workflows/ninja-check.yml
name: AL Object ID Ninja Check
on:
push:
branches: [main]
pull_request:
branches: [main]
workflow_dispatch:
jobs:
check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: vjekob/al-objid-ninja-action@main

If you don’t need to check field IDs or enum value IDs, you can exclude them:

- uses: vjekob/al-objid-ninja-action@main
with:
exclude-field-ids: 'true'
exclude-enum-value-ids: 'true'

Azure DevOps

Install AL Object ID Ninja Task from the Azure DevOps Marketplace, then add the task to your pipeline:

- task: al-objid-ninja@1

Same optional exclusions apply:

- task: al-objid-ninja@1
inputs:
excludeFieldIds: true
excludeEnumValueIds: true

The Azure DevOps task is still under development, so treat it as a preview for now. The GitHub Action is production-ready.

Using Ninja with AL-Go for GitHub

You can’t inject steps into AL-Go workflows directly – AL-Go manages its own workflow files and overwrites customizations. Instead, create the Ninja check as a separate workflow file (like the example above) that runs independently alongside your AL-Go builds.

To enforce the check, go to Settings → Branches → Branch protection rules and add the Ninja workflow as a required status check. Both AL-Go and the Ninja check must pass before a pull request can be merged. The check runs in a few seconds and won’t slow down your builds.

What’s Next

This is just the beginning. More features are coming – but even as it stands today, having your pipeline catch untracked IDs before they reach main is already a meaningful improvement over relying on developers to stay in sync manually.

Give it a try and let me know how it works for you. If you run into anything unexpected, or have ideas for what you’d like to see next, drop a comment below or reach out directly.

Leave a Reply