詹金斯管道与Docker和Artifactory



一个人如何在管道中使用conan的作品,并在Docker容器中运行所有内容?

我现在有这个Jenkinsfile

def LINUX_DOCKER_IMAGE = "<docker_image>"
def ARTIFACTORY_NAME = "<server-name>"
def ARTIFACTORY_REPO = "<repo-name>"
String setup_conan = "config install <git url>"
node('linux') {
  stage("Get Sources"){
    checkout scm
  }
  docker.image(LINUX_DOCKER_IMAGE) {
   def server = Artifactory.server ARTIFACTORY_NAME
   def client = Artifactory.newConanClient userHome: "/tmp/conan_home"
   def serverName = client.remote.add server: server, repo: ARTIFACTORY_REPO
    stage("Setup Conan") {
        client.run(command: setup_conan)
    }
    stage("Build package") {
        client.run(comnand: "create --profile Linux-Release . foo/bar")
    }
    stage("Upload package") {
        String command = "upload -r ${serverName} --all --check --confirm "myproject/*""
        def b = client.run(command: command)
        server.publishBuildInfo b
    }
  }
}

但是Artifactory.newConanClient()功能失败:

[...]
[Pipeline] InitConanClient
[myproject] $ docker exec --env BUILD_DISPLAY_NAME=#19 ... <container sha> sh -c 'conan config set log.trace_file="/tmp/conan-home/conan_log.log" '
[Pipeline] ConanAddRemote
[myproject] $ docker exec --env BUILD_DISPLAY_NAME=#19 ... <container sha> sh -c "conan remote add <server ID> <repo url> "
WARN: Remotes registry file missing, creating default one in /tmp/conan-home/.conan/registry.txt
[Pipeline] ConanAddUser
Adding conan user '<username>', server '<server ID>'
[myproject] $ docker exec --env BUILD_DISPLAY_NAME=#19 ... <container sha> sh -c ********
sh: -c: line 0: unexpected EOF while looking for matching `''
sh: -c: line 1: syntax error: unexpected end of file
[Pipeline] }
[...]

我可以以不同的方式设置客户端吗?我可以在常规的sh {}中运行柯南命令,但是我该如何告诉文品?

这是一个逃脱的问题。Jenkins-Artifactory-Plugin运行/bin/sh的CONAN。

有一个JIRA问题。在那里您可以找到解决问题的快照。

该修复程序将包含在下一个Jenkins-Artifactory-Plugin版本中。同时,您可以下载快照版本

最新更新