1
0
mirror of https://github.com/SAP/jenkins-library.git synced 2024-12-12 10:55:20 +02:00

Merge pull request #1 from fwilhe/pr/piper-api

Mark classes used by s4sdk as API
This commit is contained in:
Marcus Holl 2019-01-23 15:03:23 +01:00 committed by GitHub
commit bad044731a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 41 additions and 29 deletions

View File

@ -50,11 +50,11 @@ provided pipeline library.
## API
All steps are intended to be used by Pipelines. All the classes / groovy-scripts
contained in the `src` folder are by default not part of the API and are subjected to change
without prior notice. Types and methods annotated with `@API` are considered to be API, used e.g.
from other shared libraries. Changes to those methods/types needs to be announced, disussed and
agreed.
All steps (`vars` and `resources` directory) are intended to be used by Pipelines and are considered API.
All the classes / groovy-scripts contained in the `src` folder are by default not part of
the API and are subjected to change without prior notice. Types and methods annotated with
`@API` are considered to be API, used e.g. from other shared libraries. Changes to those
methods/types needs to be announced, discussed and agreed.
# Requirements

View File

@ -1,3 +1,8 @@
#
# ATTENTION: This file is part of the API, breaking changes here directly affect the consumers of the library.
# Please avoid breaking changes if possible.
#
#Project Setup
general:
productiveBranch: 'master'

View File

@ -0,0 +1,23 @@
package com.sap.piper
import java.lang.annotation.ElementType
import java.lang.annotation.Retention
import java.lang.annotation.RetentionPolicy
import java.lang.annotation.Target
/**
* Methods or classes annotated with this annotation are used outside
* this shared, e.g. in other shared libraries. In case there is the
* need for changing this methods this should be clearly announced
* in order to get a consensus about the change and in order to allow
* users of the corresponding class/method to adapt to the change accordingly.
*/
@Retention(RetentionPolicy.RUNTIME)
@Target([ElementType.METHOD, ElementType.TYPE])
@interface API {
/**
* API marked as deprecated should not be used and moved to non-deprecated API.
*/
boolean deprecated() default false
}

View File

@ -1,19 +0,0 @@
package com.sap.piper;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* Methods or classes annotated with this annotation are used outside
* this shared, e.g. in other shared libraries. In case there is the
* need for changing this methods this should be clearly announced
* in order to get a consensus about the change and in order to allow
* users of the correponding class/method to adapt to the change accordingly.
*/
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE})
public @interface API {
}

View File

@ -2,6 +2,7 @@ package com.sap.piper
import com.cloudbees.groovy.cps.NonCPS
@API
class ConfigurationHelper implements Serializable {
static ConfigurationHelper newInstance(Script step, Map config = [:]) {
@ -31,19 +32,16 @@ class ConfigurationHelper implements Serializable {
return this
}
@API
ConfigurationHelper mixinGeneralConfig(commonPipelineEnvironment, Set filter = null, Map compatibleParameters = [:]){
Map stepConfiguration = ConfigurationLoader.generalConfiguration([commonPipelineEnvironment: commonPipelineEnvironment])
return mixin(stepConfiguration, filter, compatibleParameters)
}
@API
ConfigurationHelper mixinStageConfig(commonPipelineEnvironment, stageName, Set filter = null, Map compatibleParameters = [:]){
Map stageConfiguration = ConfigurationLoader.stageConfiguration([commonPipelineEnvironment: commonPipelineEnvironment], stageName)
return mixin(stageConfiguration, filter, compatibleParameters)
}
@API
ConfigurationHelper mixinStepConfig(commonPipelineEnvironment, Set filter = null, Map compatibleParameters = [:]){
Map stepConfiguration = ConfigurationLoader.stepConfiguration([commonPipelineEnvironment: commonPipelineEnvironment], name)
return mixin(stepConfiguration, filter, compatibleParameters)
@ -103,7 +101,6 @@ class ConfigurationHelper implements Serializable {
return this
}
@API
@NonCPS // required because we have a closure in the
// method body that cannot be CPS transformed
Map use(){
@ -152,7 +149,6 @@ class ConfigurationHelper implements Serializable {
}
}
@API
ConfigurationHelper withMandatoryProperty(key, errorMessage = null, condition = null){
if(condition){
if(condition(this.config))

View File

@ -2,6 +2,7 @@ package com.sap.piper
import com.cloudbees.groovy.cps.NonCPS
@API(deprecated = true)
class ConfigurationLoader implements Serializable {
@NonCPS
static Map stepConfiguration(script, String stepName) {

View File

@ -2,6 +2,7 @@ package com.sap.piper
import com.cloudbees.groovy.cps.NonCPS
@API(deprecated = true)
class ConfigurationMerger {
@NonCPS
static Map merge(Map configs, Set configKeys, Map defaults) {

View File

@ -2,6 +2,7 @@ package com.sap.piper
import com.cloudbees.groovy.cps.NonCPS
@API
class DefaultValueCache implements Serializable {
private static DefaultValueCache instance

View File

@ -4,6 +4,7 @@ import com.cloudbees.groovy.cps.NonCPS
import jenkins.model.Jenkins
import org.jenkinsci.plugins.workflow.steps.MissingContextVariableException
@API
@NonCPS
static def isPluginActive(pluginId) {
return Jenkins.instance.pluginManager.plugins.find { p -> p.isActive() && p.getShortName() == pluginId }

View File

@ -1,5 +1,8 @@
package com.sap.piper.k8s
import com.sap.piper.API
@API
@Singleton
class ContainerMap {
private Map containerMap = null