简体   繁体   中英

Passing Jenkins Pipeline parameter to a Dockerfile

I'm getting a "Bad substitution" error when trying to pass a pipeline parameter to the Dockerfile.

Jenkins parameter: version

Jenkinsfile:

pipeline {
    agent any
    stages {

            stage('Build in docker container') {
                agent { dockerfile true }
                    steps {
                        sh 'node -v'
                     }
            }
    }
}

Dockerfile:

FROM ubuntu:16.04

WORKDIR /root

# install dependencies
RUN apt-get update
RUN apt-get install curl wget vim nano zip git htop ncdu build-essential chrpath libssl-dev libxft-dev apt-transport-https -y

# install node 10
RUN curl -sL https://deb.nodesource.com/setup_10.x | bash
RUN apt-get install --yes nodejs
#RUN node -v
#RUN npm -v

RUN echo ${params.version}

#ARG VERSION
#RUN echo $VERSION

Jenkins error message: Jenkins error message

I'm sure the problem is that im new to pipelines/docker. :) I would be grateful for any help.

issue resolved by adding the ARG variable to the Dockerfile.

This is how the Dockerfile looks like:

FROM ubuntu:16.04

WORKDIR /root

# install dependencies
RUN apt-get update
RUN apt-get install curl wget vim nano zip git htop ncdu build-essential chrpath libssl-dev libxft-dev apt-transport-https -y

# install node 10
RUN curl -sL https://deb.nodesource.com/setup_10.x | bash
RUN apt-get install --yes nodejs
#RUN node -v
#RUN npm -v

ARG version=fisticuff
RUN echo $version

and this is how the Jenkinsfile looks like:

pipeline {
    agent any
    stages {
        stage('Build in docker container') {
            agent {
                dockerfile {
                    additionalBuildArgs  '--build-arg version="$version"'
                }
            }
            steps {
                sh 'node -v'
            }
        }
    }
}

Console output in Jenkins: Jenkins console output

Much obliged to all of you for giving me the hints. It helped me a lot!

Try running Dockerfile independently first. Since you are new to docker try one step at a time.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM