我正在尝试将用于在本地构建项目的Makefile移植到Jenkins中的自动构建系统中。此Makefile使用docker容器构建项目。但是,由于我不知道我在做什么,所以我对如何制作整个结构的建议持开放态度!

我想知道如何移植这种代码段:

PKGS       = $(shell go list ./... | grep -v /vendor/ | grep -v /bindata)
VERSION    = $(shell git describe)
VERSION64  = $(shell git describe | base64)
SHA        = $(shell git rev-parse HEAD)
PWD        = $(shell pwd)

进入声明性管道。当将变量包装在environment块上时,得到以下信息:
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
WorkflowScript: 10: unexpected token: list @ line 10, column 30.
             PKGS        = $(go list ./... | grep -v /vendor/ | grep -v /bindata)
                                ^

1 error

我启动管道的方式如下(在第一阶段之后,我声明了env vars):

pipeline {
    agent {
      docker {
        image 'golang:1.11'
        args '-v $(PWD):/go/src/project -w /go/src/project'
      }
    }

最佳答案

正如Zett42所评论的那样,您可以在Jenkins管道中如下设置环境变量。您可以找到有关https://jenkins.io/doc/book/pipeline/jenkinsfile/#using-environment-variables的更多信息

pipeline {
  agent {
    docker {
      image 'golang:1.11'
      args '-v $(PWD):/go/src/project -w /go/src/project'
    }
  }
  environment {
    // Using returnStdout
    VERSION = """${sh(
      returnStdout: true,
      script: 'git describe'
    )}"""
    //Here you can include other env like above..
  }
  stages {
    stage('Example') {
      environment {
        DEBUG_FLAGS = '-g'
      }
      steps {
        sh 'printenv'
      }
    }
  }
}

关于docker - 将Makefile移植到Jenkinsfile,但是环境变量有问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60577530/

10-15 23:21