aio-cli-plugin-cloudmanager
aio-cli-plugin-cloudmanager copied to clipboard
Update of CM pipeline settings doesn't validate branch/tag existence
Expected Behavior
User input (branch/tag/repositoryId) must be validated upon update of CM pipeline settings.
Actual Behavior
aio cloudmanager:pipeline:update ends successfully for not existing branches/tags.
Reproduction Scenario, Platform, and Version
$ aio -v
@adobe/aio-cli/8.1.0 darwin-x64 node-v14.17.6
Steps to Reproduce
$ aio cloudmanager:pipeline:update PIPELINEID -p PROGRAMID --branch=this-branch-does-not-exist
updating pipeline... updated pipeline ID <PIPELINEID>
$ aio cloudmanager:pipeline:update PIPELINEID -p PROGRAMID --tag=not-existing-tag
updating pipeline... updated pipeline ID <PIPELINEID>
Once above is set you can start the pipeline, but it's gonna fail immediately at validation stage with the following message:
Failed: Invalid pipeline: <PIPELINEID>. Reason=Branch=this-branch-does-not-exist not found in repository (Finished: September 22, 2021 11:14:23 AM GMT+2)
In contrast repository ID is being validated, so I assume that it may require some backend API changes:
$ aio cloudmanager:pipeline:update PIPELINEID -p PROGRAMID --repositoryId=123456
updating pipeline... failed
› Error: [CloudManagerSDK:ERROR_UPDATE_PIPELINE] Cannot update pipeline: https://cloudmanager.adobe.io/api/program/PROGRAMID/pipeline/PIPELINEID (400 Bad Request) - Validation
› Error(s): Referenced repository not found in application or is not ready for use: 123456
› Code: ERROR_UPDATE_PIPELINE
It could certainly make sense for this CLI command to accept a flag --validate-branch which gets the repositoryId (either from the current pipeline definition or the repositoryId flag), lists the branches, and validates that the branch is one of those. That wouldn't be possible for tags, however.