1
0
mirror of https://github.com/SAP/jenkins-library.git synced 2025-03-05 15:15:44 +02:00
This commit is contained in:
Ramachandra Kamath Arbettu 2018-05-14 16:53:13 +02:00
parent 0d2af05a9a
commit 0f1ca24b27

View File

@ -5,36 +5,38 @@ def call(Map parameters = [:], body) {
def STEP_NAME = 'dockerExecute'
def PLUGIN_ID_DOCKER_WORKFLOW = 'docker-workflow'
handlePipelineStepErrors(stepName: STEP_NAME, stepParameters: parameters){
handlePipelineStepErrors(stepName: STEP_NAME, stepParameters: parameters) {
def dockerImage = parameters.dockerImage ?: ''
Map dockerEnvVars = parameters.dockerEnvVars ?: [:]
def dockerOptions = parameters.dockerOptions ?: ''
Map dockerVolumeBind = parameters.dockerVolumeBind ?: [:]
def k8s = parameters.k8s ?: true
if (k8s) {
executeDocker parameters
} else if (dockerImage) {
if(dockerImage) {
if (! isPluginActive(PLUGIN_ID_DOCKER_WORKFLOW) ) {
if (!isPluginActive(PLUGIN_ID_DOCKER_WORKFLOW)) {
echo "[WARNING][${STEP_NAME}] Docker not supported. Plugin '${PLUGIN_ID_DOCKER_WORKFLOW}' is not installed or not active. Configured docker image '${dockerImage}' will not be used."
dockerImage = null
}
def returnCode = sh script: 'which docker > /dev/null', returnStatus: true
if(returnCode != 0) {
if (returnCode != 0) {
echo "[WARNING][${STEP_NAME}] No docker environment found (command 'which docker' did not return with '0'). Configured docker image '${dockerImage}' will not be used."
dockerImage = null
}
returnCode = sh script: 'docker ps -q > /dev/null', returnStatus: true
if(returnCode != 0) {
if (returnCode != 0) {
echo "[WARNING][$STEP_NAME] Cannot connect to docker daemon (command 'docker ps' did not return with '0'). Configured docker image '${dockerImage}' will not be used."
dockerImage = null
}
}
if(!dockerImage){
if (!dockerImage) {
echo "[INFO][${STEP_NAME}] Running on local environment."
body()
}else{
} else {
def image = docker.image(dockerImage)
image.pull()
image.inside(getDockerOptions(dockerEnvVars, dockerVolumeBind, dockerOptions)) {
@ -45,7 +47,7 @@ def call(Map parameters = [:], body) {
}
@NonCPS
private isPluginActive(String pluginId){
private isPluginActive(String pluginId) {
return Jenkins.instance.pluginManager.plugins.find { p -> p.isActive() && p.getShortName() == pluginId }
}
@ -57,14 +59,12 @@ private isPluginActive(String pluginId){
*/
@NonCPS
private getDockerOptions(Map dockerEnvVars, Map dockerVolumeBind, def dockerOptions) {
def specialEnvironments = [
'http_proxy',
'https_proxy',
'no_proxy',
'HTTP_PROXY',
'HTTPS_PROXY',
'NO_PROXY'
]
def specialEnvironments = ['http_proxy',
'https_proxy',
'no_proxy',
'HTTP_PROXY',
'HTTPS_PROXY',
'NO_PROXY']
def options = []
if (dockerEnvVars) {
for (String k : dockerEnvVars.keySet()) {