Дженкинс выдвинул git-теги из другой сборки - PullRequest
0 голосов
/ 13 сентября 2018

Моя задача такова: У меня есть конвейер, который начинается с задания «A1».

Труба заканчивается испытаниями на задании «А5».

Задание "A6" не является частью конвейера. Он развертывает артефакты А1 для производства. А6 имеет параметр номера сборки А1. Я хочу, чтобы он взял переменную env GIT_COMMIT из A1, используя номер сборки A1, а затем добавил в коммит тег git с номером сборки A6, чтобы я мог отслеживать все изменения развернутых артефактов с помощью git.

Теперь мне удалось разрешить GIT_COMMIT A1, используя этот отличный сценарий:

import hudson.model.AbstractBuild
import hudson.model.FreeStyleProject
import hudson.model.ParametersAction
import hudson.model.StringParameterValue
import hudson.util.StreamTaskListener
import jenkins.model.Jenkins

buildNumber = build.buildVariableResolver.resolve("buildNumber") //Take the parameter for A1 build number
FreeStyleProject job = Jenkins.instance.getItem("A1")
a1build = job.getBuild(buildNumber) //Take the A1 build object
a1Variables = a1build.getEnvironment(new StreamTaskListener())
gitCommit = a1Variables.get("GIT_COMMIT")
println "A1 Git commit: $gitCommit"

Но тогда я застрял. Я думал о 2 решениях:

  1. Используйте groovy для создания тегов - это выглядит слишком сложно. Не нашел, как использовать учетные данные git задания из скрипта groovy или как выполнить команды git внутри скрипта.

  2. Экспорт GIT_COMMIT из A1 в новую переменную окружения на A6 для использования другим плагином git или сценарием оболочки.

Я пытался сделать это двумя способами, но результат нулевой:

Первое:

AbstractBuild myBuild = Thread.currentThread().executable
myBuild.environments.add(0, Environment.create(new EnvVars("A1_GIT_COMMIT", gitCommit)))

Второе:

AbstractBuild myBuild = Thread.currentThread().executable
def pa = new ParametersAction([
        new StringParameterValue("A1_GIT_COMMIT", gitCommit)
])
myBuild.addAction(pa)

Буду признателен за любое решение, которое решит проблему, отличный способ или другой путь.

...