2

In my jenkinsfile I have this

    stage ('Build Docker') {
        steps {
            script {
                image1 = docker.build "docker1:${BRANCH_NAME}"
            }

            script {
                image2 = docker.build "docker2:${BRANCH_NAME}"
            }
        }
    }

    stage ('Run Docker Acceptance Tests') {
        steps {

                script {
                    container1 = image1.run "-v /tmp/${BRANCH_NAME}:/var/lib/data"
                    container1Id = container1.id

                    container1IP = sh script: "docker inspect ${container1Id} | grep IPAddress | grep -v null| cut -d \'\"\' -f 4 | head -1", returnStdout: true
                }

                //let containers start up
                sleep 20

                script {
                    container2= image2.run("-v /tmp/${BRANCH_NAME}:/var/lib/data --add-host=MY_HOST:${container1IP}")
                }

            }
        }

When it gets to run container2 I get this output.

[resources] Running shell script
00:01:33.775 + docker run -d -v /tmp/master:/var/lib/data --add-host=MY_HOST:172.17.0.3
00:01:33.775 "docker run" requires at least 1 argument(s).
00:01:33.775 See 'docker run --help'.

Clearly its not appending the container name when running the docker image.

I tried just hardcoding in the IP address to test if it worked like this

container2= image2.run("-v /tmp/${BRANCH_NAME}:/var/lib/data --add-host=MY_HOST:172.17.0.3")

And then it worked and ran the command correctly

00:00:29.386 [resources] Running shell script
00:00:29.641 + docker run -d -v /tmp/master:/var/lib/data --add-host=MY_HOST:172.17.0.3 docker-name:branch

I dont understand why its not picking up the container image name.

I have even tried doing this - getting the same error

container2= image2.run("-v /tmp/${BRANCH_NAME}:/var/lib/data --add-host=MY_HOST:${container1IP} docker2:${BRANCH_NAME}")

My final step I tried

sh "docker run -v /tmp/${BRANCH_NAME}:/var/lib/data --add-host=MY_HOST:${container1IP} docker2:${BRANCH_NAME}"

Again it seems like it is stripping off the final command after resolving ${container1IP}

1 Answer 1

2

managed to fix it, it was due to a hidden new line char

container1IP = sh (script: "docker inspect ${container1Id} | grep IPAddress | grep -v null| cut -d \'\"\' -f 4 | head -1", returnStdout: true).trim()

Trimming the var fixed it

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.