mirror of
https://github.com/SAP/jenkins-library.git
synced 2024-12-14 11:03:09 +02:00
41dcebb3a5
* Changes: - New YamlSubstituteVariables step to substitute variables in YAML files with values from another YAML - New Tests, that check the different substitution patterns. - Added test resources, including various manifest and variables files. - Improved usage of JenkinsLoggingRule - Improved JenkinsReadYamlRule to properly reflect the mocked library's behaviour. - Added a new JenkinsWriteYamlRule. * Changes: - added a Logger that checks a config.verbose flag before it logs debug messages. - changed error handling to rethrow Yaml parsing exception in case of wrongly-formatted Yaml files. - changed JenkinsWriteYamlRule to capture Yaml file details of every invocation of writeYaml. This allows sanity checks at end of tests, even if there were multiple invocations. - adjusted tests. * Changes: - Removed javadoc-code blocks from API documentation since they are not supported. - Removed skipDeletion boolean. - Added a new deleteFile script which deletes a file if present. - Added a new JenkinsDeleteFileRule to mock deleteFile script and optionally skip deletion for tests. - Adjusted yamlSubstituteVariables script. - Adjusted tests to include new JenkinsDeleteFileRule. - Changed code that deletes an already existing output file to produce better logs. * Changes: - Turned yamlSubstituteVariables into a script that works purely based on Yaml data (not files). - Added a new cfManifestSubstituteVariables that uses yamlSubstituteVariables under the hood but works based on files. - Adjusted tests, and added new ones. * Adjusted documentation and a few log statements. * Changed documentation to no longer include javadoc code statements. * Made mocking of deletion of a file a default. Adjusted tests. * Changed signature of yamlSubstituteVariables' call method to return void. * Changes: - Fixed naming issues in deleteFile. - Renamed Logger to DebugHelper. - Fixed some documentation. * Changed implementation of deleteFile not to use java.io.File - which is evil when using it for file operations. * PROPERLY Changed implementation of deleteFile not to use java.io.File - which is evil when using it for file operations. * Changes: - Added tests for deleteFile script - Changed JenkinsFileExistsRule to also keep track of which files have been queried for existence. * Changes: - Removed java.io.File usage from cfManifestSubstituteVariables and using fileExists instead now. - Adjusted tests. * Wrapped file path inside ticks to allow spaces in file path when calling deleteFile. * Removed null checks of mandatory parameters, and resorted to ConfigurationHelper.withMandatoryProperty * Fixed a NullPointer due to weird Jenkins / Groovy behaviour. * Changes: - Turned yamlSubstituteVariables step into a utils class. - Added tests - Adjusted cfManifestSubstituteVariables to use utils class instead of step. - Adjusted tests - Adjusted APIs of DebugHelper. * Re-introduced log statement that shows what variables are being replaced and with what. * Changing API of YamlUtils to take the script and config as input. * Test * Test * Test * Test * Test * Fixing issue. * Fixing issue. * Changes: - Refactored DebugHelper and YamlUtils to make usage nicer and rely on dependency injection. - Removed Field for DebugHelper and turned it into local variable. - Adjusted classes using the above. - Adjusted tests where necessary. * Added link to CF standards to YamlUtils also. * Add docu for step cfManifestSubstituteVariables.md * Added documentation. * Added missing script parameter to documentation. Some steps document it, some don't. Right now you need it, so we document it. * Fixed some layouting and typos * Beautified exception listing. * Removed trailing whitespaces to make code climate checks pass. * Trying to get documentation generated, with all the exceptions to markup one should not use. * cosmetics. * cosmetics, part 2 * Code climate changes... * Inlined deleteFile step. * Added two more tests to properly check file deletion and output handling. * Changes: - adjusted API to take a list of variables files, as does 'cf push --vars-file' - adjusted API to allow for an optional list of variable key-value-maps as does 'cf push --vars' - reproduced conflict resolution and overriding behavior of variables files and vars lists - adjusted tests and documentation * Added missing paramter to doc comment. * Re-checked docs for missing paramters or params that have no counterpart in the method signature. * Adjusted documentation. * Removed absolute path usage from documentation. * corrected documentation. * Changed javadoc comment to plain comment. * Turned all comments to plain comments.
74 lines
2.5 KiB
Markdown
74 lines
2.5 KiB
Markdown
# ${docGenStepName}
|
|
|
|
## ${docGenDescription}
|
|
|
|
## ${docGenParameters}
|
|
|
|
## ${docGenConfiguration}
|
|
|
|
## ${docJenkinsPluginDependencies}
|
|
|
|
## Side effects
|
|
|
|
Unless configured otherwise, this step will *replace* the input `manifest.yml` with a version that has all variable references replaced. This alters the source tree in your Jenkins workspace.
|
|
If you prefer to generate a separate output file, use the step's `outputManifestFile` parameter. Keep in mind, however, that your Cloud Foundry deployment step should then also reference this output file - otherwise CF deployment will fail with unresolved variable reference errors.
|
|
|
|
## Exceptions
|
|
|
|
* `org.yaml.snakeyaml.scanner.ScannerException` - in case any of the loaded input files contains malformed Yaml and cannot be parsed.
|
|
|
|
* `hudson.AbortException` - in case of internal errors and when not all variables could be replaced due to missing replacement values.
|
|
|
|
## Example
|
|
|
|
Usage of pipeline step:
|
|
|
|
```groovy
|
|
cfManifestSubstituteVariables (
|
|
script: this,
|
|
manifestFile: "path/to/manifest.yml", //optional, default: manifest.yml
|
|
manifestVariablesFiles: ["path/to/manifest-variables.yml"] //optional, default: ['manifest-variables.yml']
|
|
manifestVariables: [[key : value], [key : value]] //optional, default: []
|
|
)
|
|
```
|
|
|
|
For example, you can refer to the parameters using relative paths (similar to `cf push --vars-file`):
|
|
|
|
```groovy
|
|
cfManifestSubstituteVariables (
|
|
script: this,
|
|
manifestFile: "manifest.yml",
|
|
manifestVariablesFiles: ["manifest-variables.yml"]
|
|
)
|
|
```
|
|
|
|
Furthermore, you can also specify variables and their values directly (similar to `cf push --var`):
|
|
|
|
```groovy
|
|
cfManifestSubstituteVariables (
|
|
script: this,
|
|
manifestFile: "manifest.yml",
|
|
manifestVariablesFiles: ["manifest-variables.yml"],
|
|
manifestVariables: [[key1 : value1], [key2 : value2]]
|
|
)
|
|
```
|
|
|
|
If you are using the Cloud Foundry [Create-Service-Push](https://github.com/dawu415/CF-CLI-Create-Service-Push-Plugin) CLI plugin you will most likely also have a `services-manifest.yml` file.
|
|
Also in this file you can specify variable references, that can be resolved from the same variables file, e.g. like this:
|
|
|
|
```groovy
|
|
// resolve variables in manifest.yml
|
|
cfManifestSubstituteVariables (
|
|
script: this,
|
|
manifestFile: "manifest.yml",
|
|
manifestVariablesFiles: ["manifest-variables.yml"]
|
|
)
|
|
|
|
// resolve variables in services-manifest.yml from same file.
|
|
cfManifestSubstituteVariables (
|
|
script: this,
|
|
manifestFile: "services-manifest.yml",
|
|
manifestVariablesFiles: ["manifest-variables.yml"]
|
|
)
|
|
```
|