| ⚠️ Warning! |
| This extension is a pre-release technical preview which may break without warning at any time! |
MettleCI for IBM DataStage NextGen
MettleCI's IBM DataStage NextGen DevOps automation toolkit (MCIX) in Azure DevOps pipelines using a deployment and infrastructure-free containerised solution.
This extension provides a set of custom Azure DevOps tasks that wrap the MCIX CLI and run it inside a Docker container, ensuring consistent behaviour across agents and environments.
Requirements
- A Linux build agent with Docker available
(Microsoft-hosted Ubuntu agents work out of the box)
- All input and output paths must be under the agent working directory:
$(System.DefaultWorkingDirectory)
$(Build.SourcesDirectory)
$(Build.ArtifactStagingDirectory)
Quick start
Note that these tasks provide a graphical user interface in Azure DevOps pipelines which will enable you to author CI/CD pipelines for IBM Cloud Pak without needing to be an expert in YAML. The following snippet demonstrates how a task is used in a pipeline.
pool:
vmImage: 'ubuntu-latest'
stages:
- stage: Use_MCIX_Tasks
jobs:
- job: Demonstrate_MCIX_Tasks
displayName: "Demonstrate MCIX Tasks"
steps:
- checkout: self
- task: mcixDataStageImport@1
inputs:
containerRegistry: 'my-container-service-connection'
url: 'http://my-cpd.my-organization.com'
user: 'MyUserName'
apiKey: '${MySecureApiKey}'
project: 'MyProject'
assets: 'datastage'
Tasks
MCIX Asset-Analysis Test
Static code analysis of NextGen DataStage assets with optional publication of JUnit results.
YAML example
- task: mcixAssetAnalysisTest@1
displayName: "MCIX Asset-Analysis Test"
inputs:
imageName: "imageName-value"
imageTag: "imageTag-value"
rules: "$(RULES)"
report: "$(REPORT)"
| Input |
Required |
Description |
containerRegistry |
No |
For container images stored in a private Azure registry this is the name of the Azure Service Connection (which should be of type 'Docker Registry') connected to your registry. |
imageName |
Yes |
The name of the MCIX container image providing this task |
imageTag |
Yes |
The tag of the MCIX container image providing this task |
rules |
Yes |
Path to the Asset Analysis rules file or directory. Relative paths are resolved from $(Build.SourcesDirectory). |
report |
Yes |
Path for the generated report file. XML reports can be published as JUnit test results. Relative paths are resolved from $(Build.SourcesDirectory). |
path |
No |
Local asset path for file-based analysis. Mutually exclusive with URL. Relative paths are resolved from $(Build.SourcesDirectory). |
url |
No |
IBM Cloud Pak URL. Mutually exclusive with Asset path |
user |
No |
IBM Cloud Pak username. Required when Cloud Pak URL is supplied |
apiKey |
No |
IBM Cloud Pak API key. Required when Cloud Pak URL is supplied |
project |
No |
IBM Cloud Pak project name. Supply either Project name or Project ID |
projectId |
No |
IBM Cloud Pak project ID. Supply either Project ID or Project name |
includeTags |
No |
Optional 'include' tags. Newline, comma, or whitespace separated |
excludeTags |
No |
Optional 'exclude' tags. Newline, comma, or whitespace separated |
ignoreTestFailures |
No |
Check this option to ignore test failures, so the task does not cause the pipeline to fail even if some tests fail. |
testSuite |
No |
Optional JUnit test suite name |
additionalArgs |
No |
Additional arguments to enable diagnostics or try preview features, usually under the direction of your support contact. Normally blank. |
MCIX DataStage Compile
Compilation of DataStage assets in a specified Cloud Pak project
YAML example
- task: mcixDataStageCompile@1
displayName: "MCIX DataStage Compile"
inputs:
imageName: "imageName-value"
imageTag: "imageTag-value"
report: "$(REPORT)"
| Input |
Required |
Description |
containerRegistry |
No |
For container images stored in a private Azure registry this is the name of the Azure Service Connection (which should be of type 'Docker Registry') connected to your registry. |
imageName |
Yes |
The name of the MCIX container image providing this task |
imageTag |
Yes |
The tag of the MCIX container image providing this task |
url |
No |
IBM Cloud Pak URL. Mutually exclusive with Asset path |
user |
No |
IBM Cloud Pak username. Required when Cloud Pak URL is supplied |
apiKey |
No |
IBM Cloud Pak API key. Required when Cloud Pak URL is supplied |
project |
No |
IBM Cloud Pak project name. Supply either Project name or Project ID |
projectId |
No |
IBM Cloud Pak project ID. Supply either Project ID or Project name |
report |
Yes |
Path to the JUnit report file. Relative paths are resolved from $(Build.SourcesDirectory) |
additionalArgs |
No |
Additional arguments to enable diagnostics or try preview features, usually under the direction of your support contact. Normally blank. |
MCIX DataStage Deploy
Deployment of DataStage assets to a Cloud Pak project
YAML example
- task: mcixDataStageDeploy@1
displayName: "MCIX DataStage Deploy"
inputs:
imageName: "imageName-value"
imageTag: "imageTag-value"
assets: "$(ASSETS)"
overlays: |
path/one
path/two
output: "$(OUTPUT)"
importReport: "$(IMPORTREPORT)"
compileReport: "$(COMPILEREPORT)"
| Input |
Required |
Description |
containerRegistry |
No |
For container images stored in a private Azure registry this is the name of the Azure Service Connection (which should be of type 'Docker Registry') connected to your registry. |
imageName |
Yes |
The name of the MCIX container image providing this task |
imageTag |
Yes |
The tag of the MCIX container image providing this task |
assets |
Yes |
Path to DataStage export (.zip) or directory to apply overlays to. Relative paths are resolved from $(Build.SourcesDirectory) |
overlays |
Yes |
One overlay directory per line. Applied in order. Relative paths are resolved from $(Build.SourcesDirectory) |
properties |
No |
Optional properties file with replacement values. Relative paths are resolved from $(Build.SourcesDirectory) |
output |
Yes |
Zip file or directory to write updated assets. Relative paths are resolved from $(Build.SourcesDirectory) |
url |
No |
IBM Cloud Pak URL. Mutually exclusive with Asset path |
user |
No |
IBM Cloud Pak username. Required when Cloud Pak URL is supplied |
apiKey |
No |
IBM Cloud Pak API key. Required when Cloud Pak URL is supplied |
project |
No |
IBM Cloud Pak project name. Supply either Project name or Project ID |
projectId |
No |
IBM Cloud Pak project ID. Supply either Project ID or Project name |
importReport |
Yes |
Path to the import JUnit report file. Relative paths are resolved from $(Build.SourcesDirectory) |
compileReport |
Yes |
Path to the compile JUnit report file. Relative paths are resolved from $(Build.SourcesDirectory) |
overlayAdditionalArgs |
No |
Additional arguments to enable diagnostics or try preview features with the overlay operation, usually under the direction of your support contact. Normally blank. |
importAdditionalArgs |
No |
Additional arguments to enable diagnostics or try preview features with the import operation, usually under the direction of your support contact. Normally blank. |
compileAdditionalArgs |
No |
Additional arguments to enable diagnostics or try preview features of the compile operation, usually under the direction of your support contact. Normally blank. |
MCIX DataStage Import
Import of DataStage assets into a specified Cloud Pak project
YAML example
- task: mcixDataStageImport@1
displayName: "MCIX DataStage Import"
inputs:
imageName: "imageName-value"
imageTag: "imageTag-value"
url: "url-value"
user: "user-value"
apiKey: "apiKey-value"
assets: "$(ASSETSPATH)"
| Input |
Required |
Description |
containerRegistry |
No |
For container images stored in a private Azure registry this is the name of the Azure Service Connection (which should be of type 'Docker Registry') connected to your registry. |
imageName |
Yes |
The name of the MCIX container image providing this task |
imageTag |
Yes |
The tag of the MCIX container image providing this task |
url |
No |
IBM Cloud Pak URL. Mutually exclusive with Asset path |
user |
No |
IBM Cloud Pak username. Required when Cloud Pak URL is supplied |
apiKey |
No |
IBM Cloud Pak API key. Required when Cloud Pak URL is supplied |
project |
No |
IBM Cloud Pak project name. Supply either Project name or Project ID |
projectId |
No |
IBM Cloud Pak project ID. Supply either Project ID or Project name |
assetsPath |
Yes |
The path to the assets for the DataStage project. This can be the name of a zip file or directory. Relative paths are resolved from $(Build.SourcesDirectory). |
report |
Yes |
Path to the JUnit report file. Relative paths are resolved from $(Build.SourcesDirectory) |
additionalArgs |
No |
Additional arguments to enable diagnostics or try preview features, usually under the direction of your support contact. Normally blank. |
MCIX Overlay Apply
Modify file assets to apply environment-specific values for NextGen DataStage
YAML example
- task: mcixOverlayApply@1
displayName: "MCIX Overlay Apply"
inputs:
imageName: "imageName-value"
imageTag: "imageTag-value"
assets: "$(ASSETS)"
output: "$(OUTPUT)"
overlays: |
path/one
path/two
| Input |
Required |
Description |
containerRegistry |
No |
For container images stored in a private Azure registry this is the name of the Azure Service Connection (which should be of type 'Docker Registry') connected to your registry. |
imageName |
Yes |
The name of the MCIX container image providing this task |
imageTag |
Yes |
The tag of the MCIX container image providing this task |
assets |
Yes |
Path to DataStage export (.zip) or directory to apply overlays to. Relative paths are resolved from $(Build.SourcesDirectory) |
output |
Yes |
Zip file or directory to write updated assets. Relative paths are resolved from $(Build.SourcesDirectory) |
overlays |
Yes |
One overlay directory per line. Applied in order. Relative paths are resolved from $(Build.SourcesDirectory) |
properties |
No |
Optional properties file with replacement values. Relative paths are resolved from $(Build.SourcesDirectory) |
overlayAdditionalArgs |
No |
Additional arguments to enable diagnostics or try preview features, usually under the direction of your support contact. Normally blank. |
MCIX System Version
Retrieve details on the MCIX container providing DataStage CI/CD capabilities for IBM Software Hub (Cloud Pak)
YAML example
- task: mcixSystemVersion@1
displayName: "MCIX System Version"
inputs:
imageName: "imageName-value"
imageTag: "imageTag-value"
| Input |
Required |
Description |
containerRegistry |
No |
For container images stored in a private Azure registry this is the name of the Azure Service Connection (which should be of type 'Docker Registry') connected to your registry. |
imageName |
Yes |
The name of the MCIX container image providing this task |
imageTag |
Yes |
The tag of the MCIX container image providing this task |
additionalArgs |
No |
Additional arguments to enable diagnostics or try preview features, usually under the direction of your support contact. Normally blank. |
MCIX Unit-Test Execute
Unit testing of DataStage assets in a specified Cloud Pak project
YAML example
- task: mcixUnitTestExecute@1
displayName: "MCIX Unit-Test Execute"
inputs:
imageName: "imageName-value"
imageTag: "imageTag-value"
report: "$(REPORT)"
| Input |
Required |
Description |
containerRegistry |
No |
For container images stored in a private Azure registry this is the name of the Azure Service Connection (which should be of type 'Docker Registry') connected to your registry. |
imageName |
Yes |
The name of the MCIX container image providing this task |
imageTag |
Yes |
The tag of the MCIX container image providing this task |
url |
No |
IBM Cloud Pak URL. Mutually exclusive with Asset path |
user |
No |
IBM Cloud Pak username. Required when Cloud Pak URL is supplied |
apiKey |
No |
IBM Cloud Pak API key. Required when Cloud Pak URL is supplied |
project |
No |
IBM Cloud Pak project name. Supply either Project name or Project ID |
projectId |
No |
IBM Cloud Pak project ID. Supply either Project ID or Project name |
report |
Yes |
JUnit report file path to write (.xml). Must be inside the agent working directory |
testSuite |
No |
The test suite name for this invocation of unit testing |
maxConcurrency |
No |
Maximum number of concurrently executing test case jobs to run |
ignoreTestFailures |
No |
Returns zero when testing completes regardless of failures |
additionalArgs |
No |
Additional arguments to enable diagnostics or try preview features, usually under the direction of your support contact. Normally blank. |
Troubleshooting
Docker image pull fails (401 / 403)
If using a private container registry, authenticate earlier in the job (for example with the built-in Docker@2 login task).
© 2025-2026 Data Migrators Pty Ltd. All rights reserved.
Data Migrators policy documents