Creating a pipeline script with a parameters declaration that declares copies of an exact same parameter seem to work. The code block below in a jenkins pipeline would update the job with three parameters all of the name TAG. This seems like unexpected behavior. I would have expected Jenkins to error with an exception?
properties([ parameters([ string(name: 'TAG', description: 'git tag to merge to master'), string(name: 'TAG', description: 'git tag to merge to master'), string(name: 'TAG', description: 'git tag to merge to master') ]) ]) stage('TEST') { if (params.TAG == null || params.TAG.trim().isEmpty()) { error('TAG must be specified') } }