Нет build-args, так что нужно обойти - PullRequest
0 голосов
/ 17 января 2019

Я использую эластичный стебель для развертывания Dockerfile

мой Dockerfile должен был иметь

ARG imageTag
FROM xxxxx.dkr.ecr.us-east-2.amazonaws.com/xxxxxx/xxxx:$imageTag
EXPOSE 44444 44440

Затем я обнаружил, что не могу сделать 'eb init -p docker --build-arg

Поэтому я решил использовать sed

Таким образом, я извлекаю из репо Dockerfile с поправкой на

FROM xxxxx.dkr.ecr.us-east-2.amazonaws.com/xxxxxx/xxxx:imageTag
EXPOSE 44444 44440

и сделать

sh('sed -i s/imageTag/$imageTag/g Dockerfile;cat Dockerfile')

Я вижу в cat, что он заменил imageTag на параметр, но когда он добирается до eb init -p docker, он терпит неудачу, как говорится

ответ от демона: манифест для xxxxx.dkr.ecr.us-east-2.amazonaws.com/xxxxxx/xxxx:imageTag не найден, т.е. он пытается извлечь из ecr тег imageTag?

Может кто-нибудь сказать мне, почему? Читает ли Dockerfile в памяти или что-то на git checkout?

Спасибо

так что трубопровод сейчас

pipeline {
    agent any   
    stages {
        stage ('Checkout') {
            steps {
               git(
                   url: 'https://github.com/xxxxx/xxxx.git ',
                    credentialsId: 'xxxxx',
                   branch: "master"
                )
            }
        }
        stage ('Image Choose') {
            steps {
                sh('sed -i s/imageTag/$imageTag/g Dockerfile;cat Dockerfile')
            }
        }
        stage('EB terminate') {
                steps {
                    script {
                        withAWS(credentials:'xxxxx') {
                            try {
                                sh('eb terminate --force $environmentName ')
                            }
                            catch (Exception e) {

                            }

                        }   
                    }
                }
        }

        stage('EB docker init') {
            steps {
                script {
                    withAWS(credentials:'xxx') {
                        sh('eb init -p docker -k $keyName xxxx')

                    }   
                }
            }
    }
    stage('EB docker deploy') {
            steps {
                script {
                    withAWS(credentials:'xxxx') {
                        sh('eb create $environmentName ')

                    }   
                }
            }
    }
    stage('EB docker open') {
            steps {
                script {
                    withAWS(credentials:'xxxx ') {
                        sh('eb open ')

                    }   
                }
            }
    }
...