mirror of
https://github.com/SAP/jenkins-library.git
synced 2026-06-19 22:58:55 +02:00
switch to nested configuration for change management related steps
This commit is contained in:
1 parent
1e23a9ba3e
commit
9b4d55d0d9
13 files changed
+380
-165
No files matched your search
@@ -1,11 +1,11 @@
|
||||
# checkChangeInDevelopment
|
||||
|
||||
## 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.
|
||||
|
||||
By default the git commit messages between `origin/master` and `HEAD` are scanned for a line like `ChangeDocument : <changeDocumentId>`. The commit
|
||||
range and the pattern can be configured. For details see 'parameters' table.
|
||||
range and the pattern can be configured. For details see 'parameters' table.
|
||||
|
||||
## Prerequisites
|
||||
* **[Change Management Client 2.0.0 or compatible version](http://central.maven.org/maven2/com/sap/devops/cmclient/dist.cli/)** - available for download on Maven Central.
|
||||
@@ -15,27 +15,72 @@ range and the pattern can be configured. For details see 'parameters' table.
|
||||
| -------------------|-----------|--------------------------------------------------------|--------------------|
|
||||
| `script` | yes | | |
|
||||
| `changeDocumentId` | yes | | |
|
||||
| `credentialsId` | yes | | |
|
||||
| `endpoint` | yes | | |
|
||||
| `gitFrom` | no | `origin/master` | |
|
||||
| `gitTo` | no | `HEAD` | |
|
||||
| `gitChangeDocumentLabel` | no | `ChangeDocument\s?:` | regex pattern |
|
||||
| `gitFormat` | no | `%b` | see `git log --help` |
|
||||
| `changeManagement/changeDocumentLabel` | no | `ChangeDocument\s?:` | regex pattern |
|
||||
| `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` |
|
||||
| `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.
|
||||
* `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.
|
||||
* `endpoint` - The address of the Solution Manager.
|
||||
* `gitFrom` - The starting point for retrieving the change document id
|
||||
* `gitTo` - The end point for retrieving the change document id
|
||||
* `gitChangeDocumentLabel` - 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/changeDocumentLabel` - A pattern used for identifying lines holding the change document id.
|
||||
* `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.
|
||||
* `failIfStatusIsNotInDevelopment` - when set to `false` the step will not fail in case the step is not in status 'in development'.
|
||||
|
||||
## 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
|
||||
`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`:
|
||||
* 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`.
|
||||
|
||||
## Example
|
||||
* `IllegalArgumentException`:
|
||||
* If a mandatory property is not provided.
|
||||
## Examples
|
||||
```groovy
|
||||
// simple case. All mandatory parameters provided via
|
||||
// configuration, changeDocumentId provided via commit
|
||||
// history
|
||||
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 | | |
|
||||
| `changeDocumentId` | yes | | |
|
||||
| `credentialsId` | yes | | |
|
||||
| `endpoint` | yes | | |
|
||||
| `clientOpts` | no | | |
|
||||
| `gitFrom` | no | `origin/master` | |
|
||||
| `gitTo` | no | `HEAD` | |
|
||||
| `gitChangeDocumentLabel` | no | `ChangeDocument\s?:` | regex pattern |
|
||||
| `gitFormat` | no | `%b` | see `git log --help` |
|
||||
| `changeManagement/credentialsId` | yes | | |
|
||||
| `changeManagement/endpoint` | yes | | |
|
||||
| `changeManagement/clientOpts` | no | | |
|
||||
| `changeManagement/git/from` | no | `origin/master` | |
|
||||
| `changeManagement/git/to` | no | `HEAD` | |
|
||||
| `changeManagement/changeDocumentLabel` | no | `ChangeDocument\s?:` | regex pattern |
|
||||
| `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.
|
||||
* `changeDocumentId` - The id of the change document to transport.
|
||||
* `credentialsId` - The credentials to connect to the Solution Manager.
|
||||
* `endpoint` - The address of the Solution Manager.
|
||||
* `clientOpts`- Options forwarded to JVM used by the CM client, like `JAVA_OPTS`
|
||||
* `gitFrom` - The starting point for retrieving the change document id
|
||||
* `gitTo` - The end point for retrieving the change document id
|
||||
* `gitChangeDocumentLabel` - 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/credentialsId` - The credentials to connect to the Solution Manager.
|
||||
* `changeManagement/endpoint` - The address of the Solution Manager.
|
||||
* `changeManagement/clientOpts`- Options forwarded to JVM used by the CM client, like `JAVA_OPTS`
|
||||
* `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/changeDocumentLabel` - A pattern used for identifying lines holding 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
|
||||
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`
|
||||
* `clientOpts`
|
||||
```
|
||||
@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:
|
||||
transportRequestCreate:
|
||||
changeManagement:
|
||||
endpoint: 'https://example.org/cm'
|
||||
[...]
|
||||
```
|
||||
|
||||
The parameters can also be provided when the step is invoked. For examples see below.
|
||||
|
||||
## Return value
|
||||
The id of the Transport Request that has been created.
|
||||
|
||||
## Exceptions
|
||||
* `AbortException`:
|
||||
* If the change id is not provided.
|
||||
* If the creation of the transport request fails.
|
||||
* `IllegalStateException`:
|
||||
* If the change id is not provided.
|
||||
|
||||
## Example
|
||||
```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 | | |
|
||||
| `changeDocumentId` | yes | | |
|
||||
| `transportRequestId`| yes | | |
|
||||
| `credentialsId` | yes | | |
|
||||
| `endpoint` | yes | | |
|
||||
| `changeManagement/changeDocumentLabel` | no | `ChangeDocument\s?:` | regex pattern |
|
||||
| `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.
|
||||
* `changeDocumentId` - The id of the change document related to the transport request to release.
|
||||
* `transportRequestId` - The id of the transport request to release.
|
||||
* `credentialsId` - The credentials to connect to the Solution Manager.
|
||||
* `endpoint` - The address of the Solution Manager.
|
||||
* `changeManagement/changeDocumentLabel` - A pattern used for identifying lines holding the change document id.
|
||||
* `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
|
||||
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
|
||||
None.
|
||||
|
||||
## Exceptions
|
||||
* `AbortException`:
|
||||
* `IllegalArgumentException`:
|
||||
* If the change id is not provided.
|
||||
* If the transport request id is not provided.
|
||||
* `AbortException`:
|
||||
* If the release of the transport request fails.
|
||||
|
||||
## Example
|
||||
```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 | | |
|
||||
| `applicationId` | yes | | |
|
||||
| `filePath` | yes | | |
|
||||
| `credentialsId` | yes | | |
|
||||
| `endpoint` | yes | | |
|
||||
| `gitFrom` | no | `origin/master` | |
|
||||
| `gitTo` | no | `HEAD` | |
|
||||
| `gitChangeDocumentLabel` | no | `ChangeDocument\s?:` | regex pattern |
|
||||
| `gitFormat` | no | `%b` | see `git log --help` |
|
||||
| `changeManagement/credentialsId` | yes | | |
|
||||
| `changeManagement/endpoint` | yes | | |
|
||||
| `changeManagement/git/from` | no | `origin/master` | |
|
||||
| `changeManagement/git/to` | no | `HEAD` | |
|
||||
| `changeManagement/changeDocumentLabel` | no | `ChangeDocument\s?:` | regex pattern |
|
||||
| `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.
|
||||
* `changeDocumentId` - The id of the change document related to the transport request to release.
|
||||
* `transportRequestId` - The id of the transport request to release.
|
||||
* `applicationId` - The id of the application.
|
||||
* `filePath` - The path of the file to upload.
|
||||
* `credentialsId` - The credentials to connect to the Solution Manager.
|
||||
* `endpoint` - The address of the Solution Manager.
|
||||
* `gitFrom` - The starting point for retrieving the change document id
|
||||
* `gitTo` - The end point for retrieving the change document id
|
||||
* `gitChangeDocumentLabel` - 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/credentialsId` - The credentials to connect to the Solution Manager.
|
||||
* `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/changeDocumentLabel` - A pattern used for identifying lines holding 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
|
||||
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
|
||||
None.
|
||||
|
||||
## Exceptions
|
||||
* `AbortException`:
|
||||
* `IllegalArgumentException`:
|
||||
* If the change id is not provided.
|
||||
* If the transport request id is not provided.
|
||||
* If the application id is not provided.
|
||||
* If the file path is not provided.
|
||||
* `AbortException`:
|
||||
* If the upload fails.
|
||||
|
||||
## Example
|
||||
```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'
|
||||
]
|
||||
```
|
||||
|
||||
Reference in new issue
Block a user