Портируем Makefile в Jenkinsfile, но возникают проблемы с переменными среды - PullRequest
1 голос
/ 07 марта 2020

Я пытаюсь портировать 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'
      }
    }

1 Ответ

1 голос
/ 08 марта 2020

Как прокомментировал Zett42, вы можете установить переменные среды, как показано ниже в конвейере Jenkins. Вы можете найти более подробную информацию о https://jenkins.io/doc/book/pipeline/jenkinsfile/#using -eнгумент-переменных

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'
      }
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...