| ⚠️ 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'
assetsPath: 'datastage'
Tasks
MCIX Asset Analysis Test
Static code analysis of Cloud Pak 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 |
Optional. Required only for private registries |
imageName |
Yes |
Optional container image repository/name |
imageTag |
Yes |
Optional container image tag |
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 |
Cloud Pak for Data URL. Mutually exclusive with Asset path |
user |
No |
CP4D username. Required when CP4D URL is supplied |
apiKey |
No |
CP4D API key. Required when CP4D URL is supplied |
project |
No |
CP4D project name. Supply either Project name or Project ID |
projectId |
No |
CP4D 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 |
Do not fail the task because some tests failed |
includeAssetInTestName |
No |
Include the asset name in generated test names |
testSuite |
No |
Optional JUnit test suite name |
additionalArgs |
No |
Additional raw arguments to append to the mcix command |
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"
url: "url-value"
user: "user-value"
apiKey: "apiKey-value"
report: "$(REPORT)"
| Input |
Required |
Description |
containerRegistry |
No |
Optional. Required only for private registries |
imageName |
Yes |
The name of the MCIX Docker image to use for compilation |
imageTag |
Yes |
The tag of the MCIX Docker image to use for compilation |
url |
Yes |
The base URL for the CP4D instance |
user |
Yes |
The username for the CP4D instance |
apiKey |
Yes |
The API key for the CP4D instance |
project |
No |
For CP4D/CP4DaaS analysis, specify exactly one of Project or Project ID |
projectId |
No |
For CP4D/CP4DaaS analysis, specify exactly one of Project or Project ID |
report |
Yes |
Path to the JUnit report file. Relative paths are resolved from $(Build.SourcesDirectory) |
includeAssetInTestName |
No |
Whether to include the asset name in the JUnit test report name |
additionalArgs |
No |
Additional arguments to enable diagnostics or try preview features |
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)"
url: "url-value"
user: "user-value"
apiKey: "apiKey-value"
report: "$(REPORT)"
| Input |
Required |
Description |
containerRegistry |
No |
Optional. Required only for private registries |
imageName |
Yes |
The name of the MCIX Docker image to use for compilation |
imageTag |
Yes |
The tag of the MCIX Docker image to use for compilation |
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 |
Yes |
The base URL for the CP4D instance |
user |
Yes |
The username for the CP4D instance |
apiKey |
Yes |
The API key for the CP4D instance |
project |
No |
For CP4D/CP4DaaS analysis, specify exactly one of Project or Project ID |
projectId |
No |
For CP4D/CP4DaaS analysis, specify exactly one of Project or Project ID |
report |
Yes |
Path to the compile JUnit report file. Relative paths are resolved from $(Build.SourcesDirectory) |
includeAssetInTestName |
No |
Whether to include the asset name in the JUnit test report name |
overlayAdditionalArgs |
No |
Additional arguments to enable diagnostics or try preview features with the overlay operation |
importAdditionalArgs |
No |
Additional arguments to enable diagnostics or try preview features with the import operation |
compileAdditionalArgs |
No |
Additional arguments to enable diagnostics or try preview features with the compile operation |
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"
assetsPath: "$(ASSETSPATH)"
| Input |
Required |
Description |
containerRegistry |
No |
Optional. Required only for private registries |
imageName |
Yes |
MCIX Docker image name |
imageTag |
Yes |
MCIX Docker image tag |
url |
Yes |
url: The base URL for the CP4D instance. |
user |
Yes |
user: The username for the CP4D instance. |
apiKey |
Yes |
api-key: The API key for the CP4D instance. |
project |
No |
For CP4D/CP4DaaS analysis, specify exactly one of Project or Project ID. |
projectId |
No |
For CP4D/CP4DaaS analysis, specify exactly one of Project or Project ID. |
assetsPath |
Yes |
assets: The path to the assets for the DataStage project. |
additionalArgs |
No |
Additional arguments to enable diagnostics or try preview features. |
MCIX Overlay Apply
Modification of file assets to apply environment-specific values
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 |
Optional. Required only for private registries |
imageName |
Yes |
Container image repository/name |
imageTag |
Yes |
Ignored if imageName already includes a tag or digest |
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 with the overlay operation |
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 |
Optional. Required only for private registries |
imageName |
Yes |
Container image repository/name. |
imageTag |
Yes |
Ignored if imageName already includes a tag or digest. |
additionalArgs |
No |
Additional arguments to enable diagnostics or try preview features. |
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"
url: "url-value"
user: "user-value"
apiKey: "apiKey-value"
report: "$(REPORT)"
| Input |
Required |
Description |
containerRegistry |
No |
Optional. Required only for private registries |
imageName |
Yes |
Docker image containing the mcix CLI |
imageTag |
Yes |
Docker tag to use (e.g. 1.0.204) |
url |
Yes |
Base URL of CP4D/CP4DaaS (e.g. https://cpd.example.com) |
user |
Yes |
Username for CP4D/CP4DaaS |
apiKey |
Yes |
CP4D/CP4DaaS API key (stored securely by Azure DevOps) |
project |
No |
For CP4D/CP4DaaS analysis, specify exactly one of Project or Project ID |
projectId |
No |
For CP4D/CP4DaaS analysis, specify exactly one of Project or Project ID |
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 passed to mcix unit-test execute (whitespace separated) |
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