Не можете указать флаги при использовании переменных для аргументов агента Docker? - PullRequest
0 голосов
/ 01 мая 2018

Я пытаюсь смонтировать том для моего агента Docker с конвейером Jenkins. Вот мой JenkinsFile:

pipeline {
    agent none
    environment {
        DOCKER_ARGS = '-v /tmp/my-cache:/home/my-cache'
    }
    stages {
        stage('Build') {
            agent {
                docker {
                    image 'my-image:latest'
                    args '$DOCKER_ARGS'
                }
            }
            steps {
                sh 'ls -la /home'
            }
        }
    }
}

К сожалению, он не запускается, и из файла pipe.log видно следующее.

java.io.IOException: Failed to run image 'my-image:latest'. Error: docker: Error response from daemon: create  /tmp/my-cache: " /tmp/my-cache" includes invalid characters for a local volume name, only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed. If you intended to pass a host directory, use absolute path.
See 'docker run --help'.

Однако следующий JenkinsFile работает :

pipeline {
    agent none
    environment {
        DOCKER_ARGS = '/tmp/my-cache:/home/my-cache'
    }
    stages {
        stage('Build') {
            agent {
                docker {
                    image 'my-image:latest'
                    args '-v $DOCKER_ARGS'
                }
            }
            steps {
                sh 'ls -la /home'
            }
        }
    }
}

Единственное отличие состоит в том, что флаг -v жестко задан вне переменной среды.

Я новичок в Дженкинс, поэтому я изо всех сил пытался найти какую-либо документацию по этому поведению. Может кто-нибудь объяснить, почему я не могу полностью определить моего агента Docker args в переменной среды?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...