You've already forked sap-jenkins-library
mirror of
https://github.com/SAP/jenkins-library.git
synced 2025-09-16 09:26:22 +02:00
switch to nested configuration for change management related steps
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
# checkChangeInDevelopment
|
# checkChangeInDevelopment
|
||||||
|
|
||||||
## Description
|
## Description
|
||||||
Checks if a Change Document is in status 'in development'. The change document id is retrieved from the git commit history. The change document id
|
Checks if a Change Document in SAP Solution Manager is in status 'in development'. The change document id is retrieved from the git commit history. The change document id
|
||||||
can also be provided via parameter `changeDocumentId`. Any value provided as parameter has a higher precedence than a value from the commit history.
|
can also be provided via parameter `changeDocumentId`. Any value provided as parameter has a higher precedence than a value from the commit history.
|
||||||
|
|
||||||
By default the git commit messages between `origin/master` and `HEAD` are scanned for a line like `ChangeDocument : <changeDocumentId>`. The commit
|
By default the git commit messages between `origin/master` and `HEAD` are scanned for a line like `ChangeDocument : <changeDocumentId>`. The commit
|
||||||
@@ -15,27 +15,72 @@ range and the pattern can be configured. For details see 'parameters' table.
|
|||||||
| -------------------|-----------|--------------------------------------------------------|--------------------|
|
| -------------------|-----------|--------------------------------------------------------|--------------------|
|
||||||
| `script` | yes | | |
|
| `script` | yes | | |
|
||||||
| `changeDocumentId` | yes | | |
|
| `changeDocumentId` | yes | | |
|
||||||
| `credentialsId` | yes | | |
|
| `changeManagement/changeDocumentLabel` | no | `ChangeDocument\s?:` | regex pattern |
|
||||||
| `endpoint` | yes | | |
|
| `changeManagement/credentialsId` | yes | | |
|
||||||
| `gitFrom` | no | `origin/master` | |
|
| `changeManagement/endpoint` | yes | | |
|
||||||
| `gitTo` | no | `HEAD` | |
|
| `changeManagement/git/from` | no | `origin/master` | |
|
||||||
| `gitChangeDocumentLabel` | no | `ChangeDocument\s?:` | regex pattern |
|
| `changeManagement/git/to` | no | `HEAD` | |
|
||||||
| `gitFormat` | no | `%b` | see `git log --help` |
|
| `changeManagement/git/format` | no | `%b` | see `git log --help` |
|
||||||
|
| `failIfStatusIsNotInDevelopment` | no | `true` | `true`, `false` |
|
||||||
|
|
||||||
* `script` - The common script environment of the Jenkinsfile running. Typically the reference to the script calling the pipeline step is provided with the `this` parameter, as in `script: this`. This allows the function to access the [`commonPipelineEnvironment`](commonPipelineEnvironment.md) for retrieving, for example, configuration parameters.
|
* `script` - The common script environment of the Jenkinsfile running. Typically the reference to the script calling the pipeline step is provided with the `this` parameter, as in `script: this`. This allows the function to access the [`commonPipelineEnvironment`](commonPipelineEnvironment.md) for retrieving, for example, configuration parameters.
|
||||||
* `changeDocumentId` - The id of the change document to transport. If not provided, it is retrieved from the git commit history.
|
* `changeDocumentId` - The id of the change document to transport. If not provided, it is retrieved from the git commit history.
|
||||||
* `credentialsId` - The credentials to connect to the Solution Manager.
|
* `changeManagement/changeDocumentLabel` - A pattern used for identifying lines holding the change document id.
|
||||||
* `endpoint` - The address of the Solution Manager.
|
* `changeManagement/credentialsId` - The id of the credentials to connect to the Solution Manager. The credentials needs to be maintained on Jenkins.
|
||||||
* `gitFrom` - The starting point for retrieving the change document id
|
* `changeManagement/endpoint` - The address of the Solution Manager.
|
||||||
* `gitTo` - The end point for retrieving the change document id
|
* `changeManagement/git/from` - The starting point for retrieving the change document id
|
||||||
* `gitChangeDocumentLabel` - A pattern used for identifying lines holding the change document id.
|
* `changeManagement/git/to` - The end point for retrieving the change document id
|
||||||
* `gitFormat` - Specifies what part of the commit is scanned. By default the body of the commit message is scanned.
|
* `changeManagement/git/format` - Specifies what part of the commit is scanned. By default the body of the commit message is scanned.
|
||||||
|
* `failIfStatusIsNotInDevelopment` - when set to `false` the step will not fail in case the step is not in status 'in development'.
|
||||||
|
|
||||||
## Step configuration
|
## Step configuration
|
||||||
The following parameters can also be specified as step parameters using the global configuration file:
|
The step is configured using a customer configuration file provided as
|
||||||
|
resource in an custom shared library.
|
||||||
|
|
||||||
* `credentialsId`
|
```
|
||||||
* `endpoint`
|
@Library('piper-library-os@master') _
|
||||||
|
|
||||||
|
// the shared lib containing the additional configuration
|
||||||
|
// needs to be configured in Jenkins
|
||||||
|
@Library(foo@master') __
|
||||||
|
|
||||||
|
// inside the shared lib denoted by 'foo' the additional configuration file
|
||||||
|
// needs to be located under 'resources' ('resoures/myConfig.yml')
|
||||||
|
prepareDefaultValues script: this,
|
||||||
|
customDefaults: 'myConfig.yml'
|
||||||
|
```
|
||||||
|
|
||||||
|
Example content of ```'resources/myConfig.yml'``` in branch ```'master'``` of the repository denoted by
|
||||||
|
```'foo'```:
|
||||||
|
|
||||||
|
```
|
||||||
|
general:
|
||||||
|
changeManagement:
|
||||||
|
changeDocumentLabel: 'ChangeDocument\s?:'
|
||||||
|
cmClientOpts: '-Djavax.net.ssl.trustStore=<path to truststore>'
|
||||||
|
credentialsId: 'CM'
|
||||||
|
endpoint: 'https://example.org/cm'
|
||||||
|
git:
|
||||||
|
from: 'HEAD~1'
|
||||||
|
to: 'HEAD'
|
||||||
|
format: '%b'
|
||||||
|
```
|
||||||
|
|
||||||
|
The properties configured in section `'general/changeManagement'` are shared between all change managment related steps.
|
||||||
|
|
||||||
|
The properties can also be configured on a per-step basis:
|
||||||
|
|
||||||
|
```
|
||||||
|
[...]
|
||||||
|
steps:
|
||||||
|
checkChangeInDevelopment:
|
||||||
|
changeManagement:
|
||||||
|
endpoint: 'https://example.org/cm'
|
||||||
|
[...]
|
||||||
|
failIfStatusIsNotInDevelopment: true
|
||||||
|
```
|
||||||
|
|
||||||
|
The parameters can also be provided when the step is invoked. For examples see below.
|
||||||
|
|
||||||
## Return value
|
## Return value
|
||||||
`true` in case the change document is in status 'in development'. Otherwise an hudson.AbortException is thrown. In case `failIfStatusIsNotInDevelopment`
|
`true` in case the change document is in status 'in development'. Otherwise an hudson.AbortException is thrown. In case `failIfStatusIsNotInDevelopment`
|
||||||
@@ -45,9 +90,26 @@ is set to `false`, `false` is returned in case the change document is not in sta
|
|||||||
* `AbortException`:
|
* `AbortException`:
|
||||||
* If the change id is not provided via parameter and if the change document id cannot be retrieved from the commit history.
|
* If the change id is not provided via parameter and if the change document id cannot be retrieved from the commit history.
|
||||||
* If the change is not in status `in development`. In this case no exception will be thrown when `failIfStatusIsNotInDevelopment` is set to `false`.
|
* If the change is not in status `in development`. In this case no exception will be thrown when `failIfStatusIsNotInDevelopment` is set to `false`.
|
||||||
|
* `IllegalArgumentException`:
|
||||||
## Example
|
* If a mandatory property is not provided.
|
||||||
|
## Examples
|
||||||
```groovy
|
```groovy
|
||||||
|
// simple case. All mandatory parameters provided via
|
||||||
|
// configuration, changeDocumentId provided via commit
|
||||||
|
// history
|
||||||
checkChangeInDevelopment script:this
|
checkChangeInDevelopment script:this
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```groovy
|
||||||
|
// explict endpoint provided, we search for changeDocumentId
|
||||||
|
// starting at the previous commit (HEAD~1) rather than on
|
||||||
|
// 'origin/master' (the default).
|
||||||
|
checkChangeInDevelopment script:this
|
||||||
|
changeManagement: [
|
||||||
|
endpoint: 'https:example.org/cm'
|
||||||
|
git: [
|
||||||
|
from: 'HEAD~1'
|
||||||
|
]
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
@@ -11,41 +11,88 @@ Creates a Transport Request for a Change Document on the Solution Manager.
|
|||||||
| -----------------|-----------|--------------------------------------------------------|--------------------|
|
| -----------------|-----------|--------------------------------------------------------|--------------------|
|
||||||
| `script` | yes | | |
|
| `script` | yes | | |
|
||||||
| `changeDocumentId` | yes | | |
|
| `changeDocumentId` | yes | | |
|
||||||
| `credentialsId` | yes | | |
|
| `changeManagement/credentialsId` | yes | | |
|
||||||
| `endpoint` | yes | | |
|
| `changeManagement/endpoint` | yes | | |
|
||||||
| `clientOpts` | no | | |
|
| `changeManagement/clientOpts` | no | | |
|
||||||
| `gitFrom` | no | `origin/master` | |
|
| `changeManagement/git/from` | no | `origin/master` | |
|
||||||
| `gitTo` | no | `HEAD` | |
|
| `changeManagement/git/to` | no | `HEAD` | |
|
||||||
| `gitChangeDocumentLabel` | no | `ChangeDocument\s?:` | regex pattern |
|
| `changeManagement/changeDocumentLabel` | no | `ChangeDocument\s?:` | regex pattern |
|
||||||
| `gitFormat` | no | `%b` | see `git log --help` |
|
| `changeManagement/git/format` | no | `%b` | see `git log --help` |
|
||||||
|
|
||||||
* `script` - The common script environment of the Jenkinsfile running. Typically the reference to the script calling the pipeline step is provided with the `this` parameter, as in `script: this`. This allows the function to access the [`commonPipelineEnvironment`](commonPipelineEnvironment.md) for retrieving, for example, configuration parameters.
|
* `script` - The common script environment of the Jenkinsfile running. Typically the reference to the script calling the pipeline step is provided with the `this` parameter, as in `script: this`. This allows the function to access the [`commonPipelineEnvironment`](commonPipelineEnvironment.md) for retrieving, for example, configuration parameters.
|
||||||
* `changeDocumentId` - The id of the change document to transport.
|
* `changeDocumentId` - The id of the change document to transport.
|
||||||
* `credentialsId` - The credentials to connect to the Solution Manager.
|
* `changeManagement/credentialsId` - The credentials to connect to the Solution Manager.
|
||||||
* `endpoint` - The address of the Solution Manager.
|
* `changeManagement/endpoint` - The address of the Solution Manager.
|
||||||
* `clientOpts`- Options forwarded to JVM used by the CM client, like `JAVA_OPTS`
|
* `changeManagement/clientOpts`- Options forwarded to JVM used by the CM client, like `JAVA_OPTS`
|
||||||
* `gitFrom` - The starting point for retrieving the change document id
|
* `changeManagement/git/from` - The starting point for retrieving the change document id
|
||||||
* `gitTo` - The end point for retrieving the change document id
|
* `changeManagement/git/to` - The end point for retrieving the change document id
|
||||||
* `gitChangeDocumentLabel` - A pattern used for identifying lines holding the change document id.
|
* `changeManagement/changeDocumentLabel` - A pattern used for identifying lines holding the change document id.
|
||||||
* `gitFormat` - Specifies what part of the commit is scanned. By default the body of the commit message is scanned.
|
* `changeManagement/git/format` - Specifies what part of the commit is scanned. By default the body of the commit message is scanned.
|
||||||
|
|
||||||
## Step configuration
|
## Step configuration
|
||||||
The following parameters can also be specified as step parameters using the global configuration file:
|
The step is configured using a customer configuration file provided as
|
||||||
|
resource in an custom shared library.
|
||||||
|
|
||||||
* `credentialsId`
|
```
|
||||||
* `endpoint`
|
@Library('piper-library-os@master') _
|
||||||
* `clientOpts`
|
|
||||||
|
// the shared lib containing the additional configuration
|
||||||
|
// needs to be configured in Jenkins
|
||||||
|
@Library(foo@master') __
|
||||||
|
|
||||||
|
// inside the shared lib denoted by 'foo' the additional configuration file
|
||||||
|
// needs to be located under 'resources' ('resoures/myConfig.yml')
|
||||||
|
prepareDefaultValues script: this,
|
||||||
|
customDefaults: 'myConfig.yml'
|
||||||
|
```
|
||||||
|
|
||||||
|
Example content of ```'resources/myConfig.yml'``` in branch ```'master'``` of the repository denoted by
|
||||||
|
```'foo'```:
|
||||||
|
|
||||||
|
```
|
||||||
|
general:
|
||||||
|
changeManagement:
|
||||||
|
changeDocumentLabel: 'ChangeDocument\s?:'
|
||||||
|
cmClientOpts: '-Djavax.net.ssl.trustStore=<path to truststore>'
|
||||||
|
credentialsId: 'CM'
|
||||||
|
endpoint: 'https://example.org/cm'
|
||||||
|
git:
|
||||||
|
from: 'HEAD~1'
|
||||||
|
to: 'HEAD'
|
||||||
|
format: '%b'
|
||||||
|
```
|
||||||
|
|
||||||
|
The properties configured in section `'general/changeManagement'` are shared between
|
||||||
|
all change managment related steps.
|
||||||
|
|
||||||
|
The properties can also be configured on a per-step basis:
|
||||||
|
|
||||||
|
```
|
||||||
|
[...]
|
||||||
|
steps:
|
||||||
|
transportRequestCreate:
|
||||||
|
changeManagement:
|
||||||
|
endpoint: 'https://example.org/cm'
|
||||||
|
[...]
|
||||||
|
```
|
||||||
|
|
||||||
|
The parameters can also be provided when the step is invoked. For examples see below.
|
||||||
|
|
||||||
## Return value
|
## Return value
|
||||||
The id of the Transport Request that has been created.
|
The id of the Transport Request that has been created.
|
||||||
|
|
||||||
## Exceptions
|
## Exceptions
|
||||||
* `AbortException`:
|
* `AbortException`:
|
||||||
* If the change id is not provided.
|
|
||||||
* If the creation of the transport request fails.
|
* If the creation of the transport request fails.
|
||||||
|
* `IllegalStateException`:
|
||||||
|
* If the change id is not provided.
|
||||||
|
|
||||||
## Example
|
## Example
|
||||||
```groovy
|
```groovy
|
||||||
def transportRequestId = transportRequestCreate script:this, changeDocumentId: '001'
|
def transportRequestId = transportRequestCreate script:this,
|
||||||
|
changeDocumentId: '001,'
|
||||||
|
changeManagement: [
|
||||||
|
endpoint: 'https://example.org/cm'
|
||||||
|
]
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@@ -12,32 +12,88 @@ Releases a Transport Request for a Change Document on the Solution Manager.
|
|||||||
| `script` | yes | | |
|
| `script` | yes | | |
|
||||||
| `changeDocumentId` | yes | | |
|
| `changeDocumentId` | yes | | |
|
||||||
| `transportRequestId`| yes | | |
|
| `transportRequestId`| yes | | |
|
||||||
| `credentialsId` | yes | | |
|
| `changeManagement/changeDocumentLabel` | no | `ChangeDocument\s?:` | regex pattern |
|
||||||
| `endpoint` | yes | | |
|
| `changeManagement/credentialsId` | yes | | |
|
||||||
|
| `changeManagement/endpoint` | yes | | |
|
||||||
|
| `changeManagement/git/from` | no | `origin/master` | |
|
||||||
|
| `changeManagement/git/to` | no | `HEAD` | |
|
||||||
|
| `changeManagement/git/format` | no | `%b` | see `git log --help` |
|
||||||
|
|
||||||
* `script` - The common script environment of the Jenkinsfile running. Typically the reference to the script calling the pipeline step is provided with the `this` parameter, as in `script: this`. This allows the function to access the [`commonPipelineEnvironment`](commonPipelineEnvironment.md) for retrieving, for example, configuration parameters.
|
* `script` - The common script environment of the Jenkinsfile running. Typically the reference to the script calling the pipeline step is provided with the `this` parameter, as in `script: this`. This allows the function to access the [`commonPipelineEnvironment`](commonPipelineEnvironment.md) for retrieving, for example, configuration parameters.
|
||||||
* `changeDocumentId` - The id of the change document related to the transport request to release.
|
* `changeDocumentId` - The id of the change document related to the transport request to release.
|
||||||
* `transportRequestId` - The id of the transport request to release.
|
* `transportRequestId` - The id of the transport request to release.
|
||||||
* `credentialsId` - The credentials to connect to the Solution Manager.
|
* `changeManagement/changeDocumentLabel` - A pattern used for identifying lines holding the change document id.
|
||||||
* `endpoint` - The address of the Solution Manager.
|
* `changeManagement/credentialsId` - The id of the credentials to connect to the Solution Manager. The credentials needs to be maintained on Jenkins.
|
||||||
|
* `changeManagement/endpoint` - The address of the Solution Manager.
|
||||||
|
* `changeManagement/git/from` - The starting point for retrieving the change document id
|
||||||
|
* `changeManagement/git/to` - The end point for retrieving the change document id
|
||||||
|
* `changeManagement/git/format` - Specifies what part of the commit is scanned. By default the body of the commit message is scanned.
|
||||||
|
|
||||||
## Step configuration
|
## Step configuration
|
||||||
The following parameters can also be specified as step parameters using the global configuration file:
|
The step is configured using a customer configuration file provided as
|
||||||
|
resource in an custom shared library.
|
||||||
|
|
||||||
* `credentialsId`
|
```
|
||||||
* `endpoint`
|
@Library('piper-library-os@master') _
|
||||||
|
|
||||||
|
// the shared lib containing the additional configuration
|
||||||
|
// needs to be configured in Jenkins
|
||||||
|
@Library(foo@master') __
|
||||||
|
|
||||||
|
// inside the shared lib denoted by 'foo' the additional configuration file
|
||||||
|
// needs to be located under 'resources' ('resoures/myConfig.yml')
|
||||||
|
prepareDefaultValues script: this,
|
||||||
|
customDefaults: 'myConfig.yml'
|
||||||
|
```
|
||||||
|
|
||||||
|
Example content of ```'resources/myConfig.yml'``` in branch ```'master'``` of the repository denoted by
|
||||||
|
```'foo'```:
|
||||||
|
|
||||||
|
```
|
||||||
|
general:
|
||||||
|
changeManagement:
|
||||||
|
changeDocumentLabel: 'ChangeDocument\s?:'
|
||||||
|
cmClientOpts: '-Djavax.net.ssl.trustStore=<path to truststore>'
|
||||||
|
credentialsId: 'CM'
|
||||||
|
endpoint: 'https://example.org/cm'
|
||||||
|
git:
|
||||||
|
from: 'HEAD~1'
|
||||||
|
to: 'HEAD'
|
||||||
|
format: '%b'
|
||||||
|
```
|
||||||
|
|
||||||
|
The properties configured in section `'general/changeManagement'` are shared between all change managment related steps.
|
||||||
|
|
||||||
|
The properties can also be configured on a per-step basis:
|
||||||
|
|
||||||
|
```
|
||||||
|
[...]
|
||||||
|
steps:
|
||||||
|
transportRequestRelease:
|
||||||
|
changeManagement:
|
||||||
|
endpoint: 'https://example.org/cm'
|
||||||
|
[...]
|
||||||
|
```
|
||||||
|
|
||||||
|
The parameters can also be provided when the step is invoked. For examples see below.
|
||||||
|
|
||||||
## Return value
|
## Return value
|
||||||
None.
|
None.
|
||||||
|
|
||||||
## Exceptions
|
## Exceptions
|
||||||
* `AbortException`:
|
* `IllegalArgumentException`:
|
||||||
* If the change id is not provided.
|
* If the change id is not provided.
|
||||||
* If the transport request id is not provided.
|
* If the transport request id is not provided.
|
||||||
|
* `AbortException`:
|
||||||
* If the release of the transport request fails.
|
* If the release of the transport request fails.
|
||||||
|
|
||||||
## Example
|
## Example
|
||||||
```groovy
|
```groovy
|
||||||
transportRequestRelease script:this, changeDocumentId: '001', transportRequestId: '001'
|
transportRequestRelease script:this,
|
||||||
|
changeDocumentId: '001',
|
||||||
|
transportRequestId: '001',
|
||||||
|
changeManagement: [
|
||||||
|
endpoint: 'https://example.org/cm'
|
||||||
|
]
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@@ -14,44 +14,97 @@ Uploads a file to a Transport Request for a Change Document on the Solution Mana
|
|||||||
| `transportRequestId`| yes | | |
|
| `transportRequestId`| yes | | |
|
||||||
| `applicationId` | yes | | |
|
| `applicationId` | yes | | |
|
||||||
| `filePath` | yes | | |
|
| `filePath` | yes | | |
|
||||||
| `credentialsId` | yes | | |
|
| `changeManagement/credentialsId` | yes | | |
|
||||||
| `endpoint` | yes | | |
|
| `changeManagement/endpoint` | yes | | |
|
||||||
| `gitFrom` | no | `origin/master` | |
|
| `changeManagement/git/from` | no | `origin/master` | |
|
||||||
| `gitTo` | no | `HEAD` | |
|
| `changeManagement/git/to` | no | `HEAD` | |
|
||||||
| `gitChangeDocumentLabel` | no | `ChangeDocument\s?:` | regex pattern |
|
| `changeManagement/changeDocumentLabel` | no | `ChangeDocument\s?:` | regex pattern |
|
||||||
| `gitFormat` | no | `%b` | see `git log --help` |
|
| `changeManagement/git/format` | no | `%b` | see `git log --help` |
|
||||||
|
|
||||||
* `script` - The common script environment of the Jenkinsfile running. Typically the reference to the script calling the pipeline step is provided with the `this` parameter, as in `script: this`. This allows the function to access the [`commonPipelineEnvironment`](commonPipelineEnvironment.md) for retrieving, for example, configuration parameters.
|
* `script` - The common script environment of the Jenkinsfile running. Typically the reference to the script calling the pipeline step is provided with the `this` parameter, as in `script: this`. This allows the function to access the [`commonPipelineEnvironment`](commonPipelineEnvironment.md) for retrieving, for example, configuration parameters.
|
||||||
* `changeDocumentId` - The id of the change document related to the transport request to release.
|
* `changeDocumentId` - The id of the change document related to the transport request to release.
|
||||||
* `transportRequestId` - The id of the transport request to release.
|
* `transportRequestId` - The id of the transport request to release.
|
||||||
* `applicationId` - The id of the application.
|
* `applicationId` - The id of the application.
|
||||||
* `filePath` - The path of the file to upload.
|
* `filePath` - The path of the file to upload.
|
||||||
* `credentialsId` - The credentials to connect to the Solution Manager.
|
* `changeManagement/credentialsId` - The credentials to connect to the Solution Manager.
|
||||||
* `endpoint` - The address of the Solution Manager.
|
* `changeManagement/endpoint` - The address of the Solution Manager.
|
||||||
* `gitFrom` - The starting point for retrieving the change document id
|
* `changeManagement/git/from` - The starting point for retrieving the change document id
|
||||||
* `gitTo` - The end point for retrieving the change document id
|
* `changeManagement/git/to` - The end point for retrieving the change document id
|
||||||
* `gitChangeDocumentLabel` - A pattern used for identifying lines holding the change document id.
|
* `changeManagement/changeDocumentLabel` - A pattern used for identifying lines holding the change document id.
|
||||||
* `gitFormat` - Specifies what part of the commit is scanned. By default the body of the commit message is scanned.
|
* `changeManagement/git/format` - Specifies what part of the commit is scanned. By default the body of the commit message is scanned.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Step configuration
|
## Step configuration
|
||||||
The following parameters can also be specified as step parameters using the global configuration file:
|
The step is configured using a customer configuration file provided as
|
||||||
|
resource in an custom shared library.
|
||||||
|
|
||||||
* `credentialsId`
|
```
|
||||||
* `endpoint`
|
@Library('piper-library-os@master') _
|
||||||
|
|
||||||
|
// the shared lib containing the additional configuration
|
||||||
|
// needs to be configured in Jenkins
|
||||||
|
@Library(foo@master') __
|
||||||
|
|
||||||
|
// inside the shared lib denoted by 'foo' the additional configuration file
|
||||||
|
// needs to be located under 'resources' ('resoures/myConfig.yml')
|
||||||
|
prepareDefaultValues script: this,
|
||||||
|
customDefaults: 'myConfig.yml'
|
||||||
|
```
|
||||||
|
|
||||||
|
Example content of ```'resources/myConfig.yml'``` in branch ```'master'``` of the repository denoted by
|
||||||
|
```'foo'```:
|
||||||
|
|
||||||
|
```
|
||||||
|
general:
|
||||||
|
changeManagement:
|
||||||
|
changeDocumentLabel: 'ChangeDocument\s?:'
|
||||||
|
cmClientOpts: '-Djavax.net.ssl.trustStore=<path to truststore>'
|
||||||
|
credentialsId: 'CM'
|
||||||
|
endpoint: 'https://example.org/cm'
|
||||||
|
git:
|
||||||
|
from: 'HEAD~1'
|
||||||
|
to: 'HEAD'
|
||||||
|
format: '%b'
|
||||||
|
```
|
||||||
|
|
||||||
|
The properties configured in section `'general/changeManagement'` are shared between all change managment related steps.
|
||||||
|
|
||||||
|
The properties can also be configured on a per-step basis:
|
||||||
|
|
||||||
|
```
|
||||||
|
[...]
|
||||||
|
steps:
|
||||||
|
transportRequestUploadFile:
|
||||||
|
applicationId: 'FOO'
|
||||||
|
changeManagement:
|
||||||
|
endpoint: 'https://example.org/cm'
|
||||||
|
[...]
|
||||||
|
```
|
||||||
|
|
||||||
|
The parameters can also be provided when the step is invoked. For examples see below.
|
||||||
|
|
||||||
## Return value
|
## Return value
|
||||||
None.
|
None.
|
||||||
|
|
||||||
## Exceptions
|
## Exceptions
|
||||||
* `AbortException`:
|
* `IllegalArgumentException`:
|
||||||
* If the change id is not provided.
|
* If the change id is not provided.
|
||||||
* If the transport request id is not provided.
|
* If the transport request id is not provided.
|
||||||
* If the application id is not provided.
|
* If the application id is not provided.
|
||||||
* If the file path is not provided.
|
* If the file path is not provided.
|
||||||
|
* `AbortException`:
|
||||||
* If the upload fails.
|
* If the upload fails.
|
||||||
|
|
||||||
## Example
|
## Example
|
||||||
```groovy
|
```groovy
|
||||||
transportRequestUploadFile script:this, changeDocumentId: '001', transportRequestId: '001', applicationId: '001', filePath: '/path'
|
transportRequestUploadFile script:this,
|
||||||
|
changeDocumentId: '001',
|
||||||
|
transportRequestId: '001',
|
||||||
|
applicationId: '001',
|
||||||
|
filePath: '/path',
|
||||||
|
changeManagement:[
|
||||||
|
endpoint: 'https://example.org/cm'
|
||||||
|
]
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@@ -1,7 +1,14 @@
|
|||||||
#Project Setup
|
#Project Setup
|
||||||
general:
|
general:
|
||||||
productiveBranch: 'master'
|
productiveBranch: 'master'
|
||||||
|
changeManagement:
|
||||||
|
changeDocumentLabel: 'ChangeDocument\s?:'
|
||||||
|
clientOpts: ''
|
||||||
|
credentialsId: 'CM'
|
||||||
|
git:
|
||||||
|
from: 'origin/master'
|
||||||
|
to: 'HEAD'
|
||||||
|
format: '%b'
|
||||||
#Steps Specific Configuration
|
#Steps Specific Configuration
|
||||||
steps:
|
steps:
|
||||||
artifactSetVersion:
|
artifactSetVersion:
|
||||||
@@ -174,27 +181,8 @@ steps:
|
|||||||
archive: false
|
archive: false
|
||||||
active: false
|
active: false
|
||||||
checkChangeInDevelopment:
|
checkChangeInDevelopment:
|
||||||
credentialsId: 'CM'
|
|
||||||
failIfStatusIsNotInDevelopment: true
|
failIfStatusIsNotInDevelopment: true
|
||||||
gitFrom: 'origin/master'
|
|
||||||
gitTo: 'HEAD'
|
|
||||||
gitChangeDocumentLabel: 'ChangeDocument\s?:'
|
|
||||||
gitFormat: '%b'
|
|
||||||
transportRequestCreate:
|
transportRequestCreate:
|
||||||
credentialsId: 'CM'
|
developmentSystemId: null
|
||||||
gitFrom: 'origin/master'
|
|
||||||
gitTo: 'HEAD'
|
|
||||||
gitChangeDocumentLabel: 'ChangeDocument\s?:'
|
|
||||||
gitFormat: '%b'
|
|
||||||
transportRequestUploadFile:
|
transportRequestUploadFile:
|
||||||
credentialsId: 'CM'
|
|
||||||
gitFrom: 'origin/master'
|
|
||||||
gitTo: 'HEAD'
|
|
||||||
gitChangeDocumentLabel: 'ChangeDocument\s?:'
|
|
||||||
gitFormat: '%b'
|
|
||||||
transportRequestRelease:
|
transportRequestRelease:
|
||||||
credentialsId: 'CM'
|
|
||||||
gitFrom: 'origin/master'
|
|
||||||
gitTo: 'HEAD'
|
|
||||||
gitChangeDocumentLabel: 'ChangeDocument\s?:'
|
|
||||||
gitFormat: '%b'
|
|
||||||
|
@@ -50,7 +50,7 @@ class CheckChangeInDevelopmentTest extends BasePiperTest {
|
|||||||
ChangeManagement cm = getChangeManagementUtils(true)
|
ChangeManagement cm = getChangeManagementUtils(true)
|
||||||
boolean inDevelopment = jsr.step.checkChangeInDevelopment(
|
boolean inDevelopment = jsr.step.checkChangeInDevelopment(
|
||||||
cmUtils: cm,
|
cmUtils: cm,
|
||||||
endpoint: 'https://example.org/cm')
|
changeManagement: [endpoint: 'https://example.org/cm'])
|
||||||
|
|
||||||
assert inDevelopment
|
assert inDevelopment
|
||||||
|
|
||||||
@@ -59,7 +59,7 @@ class CheckChangeInDevelopmentTest extends BasePiperTest {
|
|||||||
endpoint: 'https://example.org/cm',
|
endpoint: 'https://example.org/cm',
|
||||||
userName: 'defaultUser',
|
userName: 'defaultUser',
|
||||||
password: '********',
|
password: '********',
|
||||||
cmclientOpts: null
|
cmclientOpts: ''
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -72,7 +72,7 @@ class CheckChangeInDevelopmentTest extends BasePiperTest {
|
|||||||
ChangeManagement cm = getChangeManagementUtils(false)
|
ChangeManagement cm = getChangeManagementUtils(false)
|
||||||
jsr.step.checkChangeInDevelopment(
|
jsr.step.checkChangeInDevelopment(
|
||||||
cmUtils: cm,
|
cmUtils: cm,
|
||||||
endpoint: 'https://example.org/cm')
|
changeManagement: [endpoint: 'https://example.org/cm'])
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -81,7 +81,7 @@ class CheckChangeInDevelopmentTest extends BasePiperTest {
|
|||||||
ChangeManagement cm = getChangeManagementUtils(false)
|
ChangeManagement cm = getChangeManagementUtils(false)
|
||||||
boolean inDevelopment = jsr.step.checkChangeInDevelopment(
|
boolean inDevelopment = jsr.step.checkChangeInDevelopment(
|
||||||
cmUtils: cm,
|
cmUtils: cm,
|
||||||
endpoint: 'https://example.org/cm',
|
changeManagement: [endpoint: 'https://example.org/cm'],
|
||||||
failIfStatusIsNotInDevelopment: false)
|
failIfStatusIsNotInDevelopment: false)
|
||||||
assert !inDevelopment
|
assert !inDevelopment
|
||||||
}
|
}
|
||||||
@@ -93,7 +93,7 @@ class CheckChangeInDevelopmentTest extends BasePiperTest {
|
|||||||
jsr.step.checkChangeInDevelopment(
|
jsr.step.checkChangeInDevelopment(
|
||||||
changeDocumentId: '42',
|
changeDocumentId: '42',
|
||||||
cmUtils: cm,
|
cmUtils: cm,
|
||||||
endpoint: 'https://example.org/cm')
|
changeManagement: [endpoint: 'https://example.org/cm'])
|
||||||
|
|
||||||
assert cmUtilReceivedParams.changeId == '42'
|
assert cmUtilReceivedParams.changeId == '42'
|
||||||
}
|
}
|
||||||
@@ -104,7 +104,7 @@ class CheckChangeInDevelopmentTest extends BasePiperTest {
|
|||||||
|
|
||||||
jsr.step.checkChangeInDevelopment(
|
jsr.step.checkChangeInDevelopment(
|
||||||
cmUtils: cm,
|
cmUtils: cm,
|
||||||
endpoint: 'https://example.org/cm')
|
changeManagement : [endpoint: 'https://example.org/cm'])
|
||||||
|
|
||||||
assert cmUtilReceivedParams.changeId == '0815'
|
assert cmUtilReceivedParams.changeId == '0815'
|
||||||
}
|
}
|
||||||
@@ -128,7 +128,7 @@ class CheckChangeInDevelopmentTest extends BasePiperTest {
|
|||||||
|
|
||||||
jsr.step.checkChangeInDevelopment(
|
jsr.step.checkChangeInDevelopment(
|
||||||
cmUtils: cm,
|
cmUtils: cm,
|
||||||
endpoint: 'https://example.org/cm')
|
changeManagement: [endpoint: 'https://example.org/cm'])
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -142,7 +142,7 @@ class CheckChangeInDevelopmentTest extends BasePiperTest {
|
|||||||
ChangeManagement cm = getChangeManagementUtils(false, null)
|
ChangeManagement cm = getChangeManagementUtils(false, null)
|
||||||
jsr.step.checkChangeInDevelopment(
|
jsr.step.checkChangeInDevelopment(
|
||||||
cmUtils: cm,
|
cmUtils: cm,
|
||||||
endpoint: 'https://example.org/cm')
|
changeManagement: [endpoint: 'https://example.org/cm'])
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -156,7 +156,7 @@ class CheckChangeInDevelopmentTest extends BasePiperTest {
|
|||||||
ChangeManagement cm = getChangeManagementUtils(false, '')
|
ChangeManagement cm = getChangeManagementUtils(false, '')
|
||||||
jsr.step.checkChangeInDevelopment(
|
jsr.step.checkChangeInDevelopment(
|
||||||
cmUtils: cm,
|
cmUtils: cm,
|
||||||
endpoint: 'https://example.org/cm')
|
changeManagement: [endpoint: 'https://example.org/cm'])
|
||||||
}
|
}
|
||||||
|
|
||||||
private ChangeManagement getChangeManagementUtils(boolean inDevelopment, String changeDocumentId = '001') {
|
private ChangeManagement getChangeManagementUtils(boolean inDevelopment, String changeDocumentId = '001') {
|
||||||
|
@@ -47,12 +47,16 @@ public class TransportRequestCreateTest extends BasePiperTest {
|
|||||||
|
|
||||||
helper.registerAllowedMethod('sh', [Map], { Map m -> return 0 })
|
helper.registerAllowedMethod('sh', [Map], { Map m -> return 0 })
|
||||||
|
|
||||||
nullScript.commonPipelineEnvironment.configuration = [steps:
|
nullScript.commonPipelineEnvironment.configuration = [general:
|
||||||
[transportRequestCreate:
|
[changeManagement:
|
||||||
[
|
[
|
||||||
credentialsId: 'CM',
|
credentialsId: 'CM',
|
||||||
endpoint: 'https://example.org/cm',
|
endpoint: 'https://example.org/cm',
|
||||||
clientOpts: '-DmyProp=myVal'
|
clientOpts: '-DmyProp=myVal',
|
||||||
|
changeDocumentLabel: 'ChangeId\\s?:',
|
||||||
|
git: [from: 'origin/master',
|
||||||
|
to: 'HEAD',
|
||||||
|
format: '%b']
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
|
@@ -44,8 +44,8 @@ public class TransportRequestReleaseTest extends BasePiperTest {
|
|||||||
|
|
||||||
helper.registerAllowedMethod('sh', [Map], { Map m -> return 0 })
|
helper.registerAllowedMethod('sh', [Map], { Map m -> return 0 })
|
||||||
|
|
||||||
nullScript.commonPipelineEnvironment.configuration = [steps:
|
nullScript.commonPipelineEnvironment.configuration = [general:
|
||||||
[transportRequestRelease:
|
[changeManagement:
|
||||||
[
|
[
|
||||||
credentialsId: 'CM',
|
credentialsId: 'CM',
|
||||||
endpoint: 'https://example.org/cm'
|
endpoint: 'https://example.org/cm'
|
||||||
|
@@ -47,8 +47,8 @@ public class TransportRequestUploadFileTest extends BasePiperTest {
|
|||||||
|
|
||||||
helper.registerAllowedMethod('sh', [Map], { Map m -> return 0 })
|
helper.registerAllowedMethod('sh', [Map], { Map m -> return 0 })
|
||||||
|
|
||||||
nullScript.commonPipelineEnvironment.configuration = [steps:
|
nullScript.commonPipelineEnvironment.configuration = [general:
|
||||||
[transportRequestUploadFile:
|
[changeManagement:
|
||||||
[
|
[
|
||||||
credentialsId: 'CM',
|
credentialsId: 'CM',
|
||||||
endpoint: 'https://example.org/cm'
|
endpoint: 'https://example.org/cm'
|
||||||
|
@@ -10,14 +10,8 @@ import com.sap.piper.cm.ChangeManagementException
|
|||||||
@Field def STEP_NAME = 'checkChangeInDevelopment'
|
@Field def STEP_NAME = 'checkChangeInDevelopment'
|
||||||
|
|
||||||
@Field Set stepConfigurationKeys = [
|
@Field Set stepConfigurationKeys = [
|
||||||
'cmClientOpts',
|
'changeManagement',
|
||||||
'credentialsId',
|
'failIfStatusIsNotInDevelopment'
|
||||||
'endpoint',
|
|
||||||
'failIfStatusIsNotInDevelopment',
|
|
||||||
'gitFrom',
|
|
||||||
'gitTo',
|
|
||||||
'gitChangeDocumentLabel',
|
|
||||||
'gitFormat'
|
|
||||||
]
|
]
|
||||||
|
|
||||||
@Field Set parameterKeys = stepConfigurationKeys.plus('changeDocumentId')
|
@Field Set parameterKeys = stepConfigurationKeys.plus('changeDocumentId')
|
||||||
@@ -40,6 +34,17 @@ def call(parameters = [:]) {
|
|||||||
.mixinStageConfig(script.commonPipelineEnvironment, parameters.stageName?:env.STAGE_NAME, stepConfigurationKeys)
|
.mixinStageConfig(script.commonPipelineEnvironment, parameters.stageName?:env.STAGE_NAME, stepConfigurationKeys)
|
||||||
.mixinStepConfig(script.commonPipelineEnvironment, stepConfigurationKeys)
|
.mixinStepConfig(script.commonPipelineEnvironment, stepConfigurationKeys)
|
||||||
.mixin(parameters, parameterKeys)
|
.mixin(parameters, parameterKeys)
|
||||||
|
// for the following parameters we expect defaults
|
||||||
|
.withMandatoryProperty('changeManagement/changeDocumentLabel')
|
||||||
|
.withMandatoryProperty('changeManagement/clientOpts')
|
||||||
|
.withMandatoryProperty('changeManagement/credentialsId')
|
||||||
|
.withMandatoryProperty('changeManagement/git/from')
|
||||||
|
.withMandatoryProperty('changeManagement/git/to')
|
||||||
|
.withMandatoryProperty('changeManagement/git/format')
|
||||||
|
.withMandatoryProperty('failIfStatusIsNotInDevelopment')
|
||||||
|
// for the following parameters we expect a value provided from outside
|
||||||
|
.withMandatoryProperty('changeManagement/endpoint')
|
||||||
|
|
||||||
|
|
||||||
Map configuration = configHelper.use()
|
Map configuration = configHelper.use()
|
||||||
|
|
||||||
@@ -51,15 +56,15 @@ def call(parameters = [:]) {
|
|||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
echo "[INFO] Retrieving ChangeDocumentId from commit history [from: ${configuration.gitFrom}, to: ${configuration.gitTo}]." +
|
echo "[INFO] Retrieving ChangeDocumentId from commit history [from: ${configuration.changeManagement.git.from}, to: ${configuration.changeManagement.git.to}]." +
|
||||||
"Searching for pattern '${configuration.gitChangeDocumentLabel}'. Searching with format '${configuration.gitFormat}'."
|
"Searching for pattern '${configuration.changeManagement.changeDocumentLabel}'. Searching with format '${configuration.changeManagement.git.format}'."
|
||||||
|
|
||||||
try {
|
try {
|
||||||
changeId = cm.getChangeDocumentId(
|
changeId = cm.getChangeDocumentId(
|
||||||
configuration.gitFrom,
|
configuration.changeManagement.git.from,
|
||||||
configuration.gitTo,
|
configuration.changeManagement.git.to,
|
||||||
configuration.gitChangeDocumentLabel,
|
configuration.changeManagement.changeDocumentLabel,
|
||||||
configuration.gitFormat
|
configuration.changeManagement.git.format
|
||||||
)
|
)
|
||||||
if(changeId?.trim()) {
|
if(changeId?.trim()) {
|
||||||
echo "[INFO] ChangeDocumentId '${changeId}' retrieved from commit history"
|
echo "[INFO] ChangeDocumentId '${changeId}' retrieved from commit history"
|
||||||
@@ -70,11 +75,10 @@ def call(parameters = [:]) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
configuration = configHelper.mixin([changeDocumentId: changeId?.trim() ?: null], ['changeDocumentId'] as Set)
|
configuration = configHelper.mixin([changeDocumentId: changeId?.trim() ?: null], ['changeDocumentId'] as Set)
|
||||||
.withMandatoryProperty('endpoint')
|
|
||||||
.withMandatoryProperty('changeDocumentId',
|
.withMandatoryProperty('changeDocumentId',
|
||||||
"No changeDocumentId provided. Neither via parameter 'changeDocumentId' " +
|
"No changeDocumentId provided. Neither via parameter 'changeDocumentId' " +
|
||||||
"nor via label '${configuration.gitChangeDocumentLabel}' in commit range " +
|
"nor via label '${configuration.changeManagement.changeDocumentLabel}' in commit range " +
|
||||||
"[from: ${configuration.gitFrom}, to: ${configuration.gitTo}].")
|
"[from: ${configuration.changeManagement.git.from}, to: ${configuration.changeManagement.git.to}].")
|
||||||
.use()
|
.use()
|
||||||
|
|
||||||
boolean isInDevelopment
|
boolean isInDevelopment
|
||||||
@@ -82,16 +86,16 @@ def call(parameters = [:]) {
|
|||||||
echo "[INFO] Checking if change document '${configuration.changeDocumentId}' is in development."
|
echo "[INFO] Checking if change document '${configuration.changeDocumentId}' is in development."
|
||||||
|
|
||||||
withCredentials([usernamePassword(
|
withCredentials([usernamePassword(
|
||||||
credentialsId: configuration.credentialsId,
|
credentialsId: configuration.changeManagement.credentialsId,
|
||||||
passwordVariable: 'password',
|
passwordVariable: 'password',
|
||||||
usernameVariable: 'username')]) {
|
usernameVariable: 'username')]) {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
isInDevelopment = cm.isChangeInDevelopment(configuration.changeDocumentId,
|
isInDevelopment = cm.isChangeInDevelopment(configuration.changeDocumentId,
|
||||||
configuration.endpoint,
|
configuration.changeManagement.endpoint,
|
||||||
username,
|
username,
|
||||||
password,
|
password,
|
||||||
configuration.cmClientOpts)
|
configuration.changeManagement.clientOpts)
|
||||||
} catch(ChangeManagementException ex) {
|
} catch(ChangeManagementException ex) {
|
||||||
throw new AbortException(ex.getMessage())
|
throw new AbortException(ex.getMessage())
|
||||||
}
|
}
|
||||||
|
@@ -12,16 +12,11 @@ import hudson.AbortException
|
|||||||
@Field def STEP_NAME = 'transportRequestCreate'
|
@Field def STEP_NAME = 'transportRequestCreate'
|
||||||
|
|
||||||
@Field Set stepConfigurationKeys = [
|
@Field Set stepConfigurationKeys = [
|
||||||
'credentialsId',
|
'changeManagement',
|
||||||
'clientOpts',
|
'developmentSystemId'
|
||||||
'endpoint',
|
|
||||||
'gitFrom',
|
|
||||||
'gitTo',
|
|
||||||
'gitChangeDocumentLabel',
|
|
||||||
'gitFormat'
|
|
||||||
]
|
]
|
||||||
|
|
||||||
@Field Set parameterKeys = stepConfigurationKeys.plus(['changeDocumentId', 'developmentSystemId'])
|
@Field Set parameterKeys = stepConfigurationKeys.plus(['changeDocumentId'])
|
||||||
|
|
||||||
@Field generalConfigurationKeys = stepConfigurationKeys
|
@Field generalConfigurationKeys = stepConfigurationKeys
|
||||||
|
|
||||||
@@ -39,7 +34,12 @@ def call(parameters = [:]) {
|
|||||||
.mixinStageConfig(script.commonPipelineEnvironment, parameters.stageName?:env.STAGE_NAME, stepConfigurationKeys)
|
.mixinStageConfig(script.commonPipelineEnvironment, parameters.stageName?:env.STAGE_NAME, stepConfigurationKeys)
|
||||||
.mixinStepConfig(script.commonPipelineEnvironment, stepConfigurationKeys)
|
.mixinStepConfig(script.commonPipelineEnvironment, stepConfigurationKeys)
|
||||||
.mixin(parameters, parameterKeys)
|
.mixin(parameters, parameterKeys)
|
||||||
.withMandatoryProperty('endpoint')
|
.withMandatoryProperty('changeManagement/clientOpts')
|
||||||
|
.withMandatoryProperty('changeManagement/credentialsId')
|
||||||
|
.withMandatoryProperty('changeManagement/endpoint')
|
||||||
|
.withMandatoryProperty('changeManagement/git/from')
|
||||||
|
.withMandatoryProperty('changeManagement/git/to')
|
||||||
|
.withMandatoryProperty('changeManagement/git/format')
|
||||||
.withMandatoryProperty('developmentSystemId')
|
.withMandatoryProperty('developmentSystemId')
|
||||||
|
|
||||||
Map configuration = configHelper.use()
|
Map configuration = configHelper.use()
|
||||||
@@ -52,15 +52,16 @@ def call(parameters = [:]) {
|
|||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
echo "[INFO] Retrieving ChangeDocumentId from commit history [from: ${configuration.gitFrom}, to: ${configuration.gitTo}]." +
|
echo "[INFO] Retrieving ChangeDocumentId from commit history [from: ${configuration.changeManagement.git.from}, to: ${configuration.changeManagement.git.to}]." +
|
||||||
"Searching for pattern '${configuration.gitChangeDocumentLabel}'. Searching with format '${configuration.gitFormat}'."
|
"Searching for pattern '${configuration.changeDocumentLabel}'. Searching with format '${configuration.changeManagement.git.format}'."
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
changeDocumentId = cm.getChangeDocumentId(
|
changeDocumentId = cm.getChangeDocumentId(
|
||||||
configuration.gitFrom,
|
configuration.changeManagement.git.from,
|
||||||
configuration.gitTo,
|
configuration.changeManagement.git.to,
|
||||||
configuration.gitChangeDocumentLabel,
|
configuration.changeManagement.changeDocumentLabel,
|
||||||
configuration.gitFormat
|
configuration.changeManagement.git.format
|
||||||
)
|
)
|
||||||
|
|
||||||
echo "[INFO] ChangeDocumentId '${changeDocumentId}' retrieved from commit history"
|
echo "[INFO] ChangeDocumentId '${changeDocumentId}' retrieved from commit history"
|
||||||
@@ -79,17 +80,17 @@ def call(parameters = [:]) {
|
|||||||
echo "[INFO] Creating transport request for change document '${configuration.changeDocumentId}' and development system '${configuration.developmentSystemId}'."
|
echo "[INFO] Creating transport request for change document '${configuration.changeDocumentId}' and development system '${configuration.developmentSystemId}'."
|
||||||
|
|
||||||
withCredentials([usernamePassword(
|
withCredentials([usernamePassword(
|
||||||
credentialsId: configuration.credentialsId,
|
credentialsId: configuration.changeManagement.credentialsId,
|
||||||
passwordVariable: 'password',
|
passwordVariable: 'password',
|
||||||
usernameVariable: 'username')]) {
|
usernameVariable: 'username')]) {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
transportRequestId = cm.createTransportRequest(configuration.changeDocumentId,
|
transportRequestId = cm.createTransportRequest(configuration.changeDocumentId,
|
||||||
configuration.developmentSystemId,
|
configuration.developmentSystemId,
|
||||||
configuration.endpoint,
|
configuration.changeManagement.endpoint,
|
||||||
username,
|
username,
|
||||||
password,
|
password,
|
||||||
configuration.clientOpts)
|
configuration.changeManagement.clientOpts)
|
||||||
} catch(ChangeManagementException ex) {
|
} catch(ChangeManagementException ex) {
|
||||||
throw new AbortException(ex.getMessage())
|
throw new AbortException(ex.getMessage())
|
||||||
}
|
}
|
||||||
|
@@ -12,9 +12,7 @@ import hudson.AbortException
|
|||||||
@Field def STEP_NAME = 'transportRequestRelease'
|
@Field def STEP_NAME = 'transportRequestRelease'
|
||||||
|
|
||||||
@Field Set stepConfigurationKeys = [
|
@Field Set stepConfigurationKeys = [
|
||||||
'credentialsId',
|
'changeManagement'
|
||||||
'cmClientOpts',
|
|
||||||
'endpoint'
|
|
||||||
]
|
]
|
||||||
|
|
||||||
@Field Set parameterKeys = stepConfigurationKeys.plus([
|
@Field Set parameterKeys = stepConfigurationKeys.plus([
|
||||||
@@ -40,23 +38,25 @@ def call(parameters = [:]) {
|
|||||||
.mixin(parameters, parameterKeys)
|
.mixin(parameters, parameterKeys)
|
||||||
.withMandatoryProperty('changeDocumentId')
|
.withMandatoryProperty('changeDocumentId')
|
||||||
.withMandatoryProperty('transportRequestId')
|
.withMandatoryProperty('transportRequestId')
|
||||||
.withMandatoryProperty('endpoint')
|
.withMandatoryProperty('changeManagement/clientOpts')
|
||||||
|
.withMandatoryProperty('changeManagement/credentialsId')
|
||||||
|
.withMandatoryProperty('changeManagement/endpoint')
|
||||||
.use()
|
.use()
|
||||||
|
|
||||||
echo "[INFO] Closing transport request '${configuration.transportRequestId}' for change document '${configuration.changeDocumentId}'."
|
echo "[INFO] Closing transport request '${configuration.transportRequestId}' for change document '${configuration.changeDocumentId}'."
|
||||||
|
|
||||||
withCredentials([usernamePassword(
|
withCredentials([usernamePassword(
|
||||||
credentialsId: configuration.credentialsId,
|
credentialsId: configuration.changeManagement.credentialsId,
|
||||||
passwordVariable: 'password',
|
passwordVariable: 'password',
|
||||||
usernameVariable: 'username')]) {
|
usernameVariable: 'username')]) {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
cm.releaseTransportRequest(configuration.changeDocumentId,
|
cm.releaseTransportRequest(configuration.changeDocumentId,
|
||||||
configuration.transportRequestId,
|
configuration.transportRequestId,
|
||||||
configuration.endpoint,
|
configuration.changeManagement.endpoint,
|
||||||
username,
|
username,
|
||||||
password,
|
password,
|
||||||
configuration.cmClientOpts)
|
configuration.changeManagement.clientOpts)
|
||||||
} catch(ChangeManagementException ex) {
|
} catch(ChangeManagementException ex) {
|
||||||
throw new AbortException(ex.getMessage())
|
throw new AbortException(ex.getMessage())
|
||||||
}
|
}
|
||||||
|
@@ -12,13 +12,7 @@ import hudson.AbortException
|
|||||||
@Field def STEP_NAME = 'transportRequestUploadFile'
|
@Field def STEP_NAME = 'transportRequestUploadFile'
|
||||||
|
|
||||||
@Field Set generalConfigurationKeys = [
|
@Field Set generalConfigurationKeys = [
|
||||||
'credentialsId',
|
'changeManagement',
|
||||||
'cmClientOpts',
|
|
||||||
'endpoint',
|
|
||||||
'gitFrom',
|
|
||||||
'gitTo',
|
|
||||||
'gitChangeDocumentLabel',
|
|
||||||
'gitFormat'
|
|
||||||
]
|
]
|
||||||
|
|
||||||
@Field Set parameterKeys = generalConfigurationKeys.plus([
|
@Field Set parameterKeys = generalConfigurationKeys.plus([
|
||||||
@@ -43,10 +37,16 @@ def call(parameters = [:]) {
|
|||||||
.mixinStageConfig(script.commonPipelineEnvironment, parameters.stageName?:env.STAGE_NAME, stepConfigurationKeys)
|
.mixinStageConfig(script.commonPipelineEnvironment, parameters.stageName?:env.STAGE_NAME, stepConfigurationKeys)
|
||||||
.mixinStepConfig(script.commonPipelineEnvironment, stepConfigurationKeys)
|
.mixinStepConfig(script.commonPipelineEnvironment, stepConfigurationKeys)
|
||||||
.mixin(parameters, parameterKeys)
|
.mixin(parameters, parameterKeys)
|
||||||
.withMandatoryProperty('endpoint')
|
|
||||||
.withMandatoryProperty('transportRequestId')
|
|
||||||
.withMandatoryProperty('applicationId')
|
.withMandatoryProperty('applicationId')
|
||||||
|
.withMandatoryProperty('changeManagement/changeDocumentLabel')
|
||||||
|
.withMandatoryProperty('changeManagement/clientOpts')
|
||||||
|
.withMandatoryProperty('changeManagement/credentialsId')
|
||||||
|
.withMandatoryProperty('changeManagement/endpoint')
|
||||||
|
.withMandatoryProperty('changeManagement/git/from')
|
||||||
|
.withMandatoryProperty('changeManagement/git/to')
|
||||||
|
.withMandatoryProperty('changeManagement/git/format')
|
||||||
.withMandatoryProperty('filePath')
|
.withMandatoryProperty('filePath')
|
||||||
|
.withMandatoryProperty('transportRequestId')
|
||||||
|
|
||||||
Map configuration = configHelper.use()
|
Map configuration = configHelper.use()
|
||||||
|
|
||||||
@@ -58,15 +58,15 @@ def call(parameters = [:]) {
|
|||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
echo "[INFO] Retrieving ChangeDocumentId from commit history [from: ${configuration.gitFrom}, to: ${configuration.gitTo}]." +
|
echo "[INFO] Retrieving ChangeDocumentId from commit history [from: ${configuration.changeManagement.git.from}, to: ${configuration.changeManagement.git.to}]." +
|
||||||
"Searching for pattern '${configuration.gitChangeDocumentLabel}'. Searching with format '${configuration.gitFormat}'."
|
"Searching for pattern '${configuration.changeManagement.changeDocumentLabel}'. Searching with format '${configuration.changeManagement.git.format}'."
|
||||||
|
|
||||||
try {
|
try {
|
||||||
changeDocumentId = cm.getChangeDocumentId(
|
changeDocumentId = cm.getChangeDocumentId(
|
||||||
configuration.gitFrom,
|
configuration.changeManagement.git.from,
|
||||||
configuration.gitTo,
|
configuration.changeManagement.git.to,
|
||||||
configuration.gitChangeDocumentLabel,
|
configuration.changeManagement.changeDocumentLabel,
|
||||||
configuration.gitFormat
|
configuration.changeManagement.git.format
|
||||||
)
|
)
|
||||||
|
|
||||||
echo "[INFO] ChangeDocumentId '${changeDocumentId}' retrieved from commit history"
|
echo "[INFO] ChangeDocumentId '${changeDocumentId}' retrieved from commit history"
|
||||||
@@ -85,7 +85,7 @@ def call(parameters = [:]) {
|
|||||||
echo "[INFO] Uploading file '${configuration.filePath}' to transport request '${configuration.transportRequestId}' of change document '${configuration.changeDocumentId}'."
|
echo "[INFO] Uploading file '${configuration.filePath}' to transport request '${configuration.transportRequestId}' of change document '${configuration.changeDocumentId}'."
|
||||||
|
|
||||||
withCredentials([usernamePassword(
|
withCredentials([usernamePassword(
|
||||||
credentialsId: configuration.credentialsId,
|
credentialsId: configuration.changeManagement.credentialsId,
|
||||||
passwordVariable: 'password',
|
passwordVariable: 'password',
|
||||||
usernameVariable: 'username')]) {
|
usernameVariable: 'username')]) {
|
||||||
|
|
||||||
@@ -94,10 +94,10 @@ def call(parameters = [:]) {
|
|||||||
configuration.transportRequestId,
|
configuration.transportRequestId,
|
||||||
configuration.applicationId,
|
configuration.applicationId,
|
||||||
configuration.filePath,
|
configuration.filePath,
|
||||||
configuration.endpoint,
|
configuration.changeManagement.endpoint,
|
||||||
username,
|
username,
|
||||||
password,
|
password,
|
||||||
configuration.cmClientOpts)
|
configuration.changeManagement.clientOpts)
|
||||||
} catch(ChangeManagementException ex) {
|
} catch(ChangeManagementException ex) {
|
||||||
throw new AbortException(ex.getMessage())
|
throw new AbortException(ex.getMessage())
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user