首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将秘密文件挂载到声明性Jenkins管道中的docker镜像中?

问如何将秘密文件挂载到声明性Jenkins管道中的docker镜像中?
EN

Stack Overflow用户
提问于 2018-11-06 08:09:50
回答 1查看 948关注 0票数 4

目前,我有一个类似如下的管道:

代码语言:javascript
复制
pipeline {
  agent {
    docker {
      label 'linux'
      image 'java:8'
      args '-v /home/tester/.gradle:/.gradle'
    }
  }

  environment {
    HOME = '/'
    GRADLE_USER_HOME = '/.gradle'
    GRADLE_PROPERTIES = credentials('gradle.properties')
  }

  stages {
    stage('Build') {
      steps {
        sh 'cp ${GRADLE_PROPERTIES} ${GRADLE_USER_HOME}/'
        sh './gradlew clean check'
      }
    }
  }
}

问题是,在构建期间,gradle.properties最终会被放在主机系统上一个更知名的位置。

我知道Docker允许我从主机‘挂载’文件。所以我想这么做:

代码语言:javascript
复制
  agent {
    docker {
      label 'linux'
      image 'java:8'
      args '-v /home/tester/.gradle:/.gradle ' +
           '-v ' + credentials('gradle.properties') +
           ':/.gradle/gradle.properties'
    }
  }

不幸的是,这最终会运行以下代码:

代码语言:javascript
复制
$ docker run -t -d -u 1001:1001 -v /home/tester/.gradle:/.gradle -v @credentials(<anonymous>=gradle.properties):/.gradle/gradle.properties -w

有没有办法让它扩展一下?

EN

回答 1

Stack Overflow用户

发布于 2019-10-29 19:23:31

我找不到一种方法来让docker args的环境正常工作。我的变通方法最终切换回脚本管道:

代码语言:javascript
复制
agent {
  label 'linux'
}
environment {
  GRADLE_PROPERTIES = credentials('gradle.properties')
}
steps{
  script {
    docker.image('java:8').inside('-v /home/tester/.gradle:/.gradle ' +
       "-v $GRADLE_PROPERTIES:/.gradle/gradle.properties"){
    }
  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53164090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档