Как изменить переменную среды Jenkins из «Выполнить системный скрипт Groovy» - PullRequest
0 голосов
/ 27 февраля 2019

У меня есть этот «Выполнить системный скрипт на Groovy» в моем задании Jenkins (не в конвейере) ...

import hudson.EnvVars
import hudson.model.Environment

def process_type = build.properties.environment.PROCESSTYPE.toString();
def SDATE = build.properties.environment.START_DATE.toString();
def EDATE = build.properties.environment.END_DATE.toString();

         println "Old Dates :"    
         println "$SDATE"
         println "$EDATE"


if(process_type == "Nightly") {

    def today = new Date()
    def sevenDaysAgo = today - 7

    def START_DATE2 =   sevenDaysAgo.format("yyyy-MM-dd")
    def END_DATE2 = today.format("yyyy-MM-dd")

    String START_DATE =  START_DATE2.toString()
    String END_DATE = END_DATE2.toString()

         println "New Dates :"    
         println "$START_DATE"
         println "$END_DATE"

        String vars = [START_DATE: "$START_DATE", END_DATE: "$END_DATE"]

  }

Возможно, в нем больше, чем мне нужно, поскольку я использую Groovy внутри задания Jenkinsэто ново для меня, и я пытался все виды вещей, чтобы заставить это работать.В любом случае, это задание Jenkins может быть запущено «Nightly» и затем будет использовать семидневный диапазон дат, или оно может быть снабжено диапазоном дат.Если установлено значение «Ночная», я хочу установить диапазон дат 7 дней (перезаписать две даты по умолчанию), а затем использовать новые даты на следующем шаге сборки, который представляет собой «Выполнить пакетную команду Windows», и использовать аргументы.. '% START_DATE%' '% END_DATE%'.

Приведенный выше код выполняется, но шаг windows все еще использует старые даты по умолчанию. Итак, как мне изменить переменную среды на шаге groovy,и передать его обратно Дженкинсу, чтобы шаг пакета Windows получил новые значения?

1 Ответ

0 голосов
/ 06 марта 2019

Все еще не уверен, что я не использую больше API, чем мне нужно, но у меня работает следующий код.Похоже, что вы не можете изменить значения уже существующего параметра задания, поэтому мне пришлось создать новый, чтобы использовать его на следующем шаге задания.Вот код ...

import hudson.EnvVars
import hudson.model.Environment

def process_type = build.properties.environment.PROCESSTYPE.toString();
def SDATE = build.properties.environment.START_DATE.toString();
def EDATE = build.properties.environment.END_DATE.toString();

println "Old Dates :"    
println "$SDATE"
println "$EDATE"


EnvVars envVars = build.getEnvironment(listener);

if(process_type == "Nightly") {

    def today = new Date()
    def sevenDaysAgo = today - 7

    def START_DATE2 =   sevenDaysAgo.format("yyyy-MM-dd")
    def END_DATE2 = today.format("yyyy-MM-dd")

    String START_DATE =  START_DATE2.toString()
    String END_DATE = END_DATE2.toString()

         println "New Dates :"    
         println "$START_DATE"
         println "$END_DATE"

        File file = new File(envVars.get('WORKSPACE') + "\\Dates.txt")
        file.write "NEW_START_DATE=" + "$START_DATE" + "\r\n"
        file <<  "NEW_END_DATE=" + "$END_DATE" + "\r\n"
        println file.text
} else
{ 
       // The next step 'Inject Environment variables', requires this file to exist
       // if not a nightly run use date range provided in parameters

         println "New Old Dates :"    
         println "$SDATE"
         println "$EDATE"

       File file = new File(envVars.get('WORKSPACE') + "\\Dates.txt")
        file.write "NEW_START_DATE=" + "$SDATE" + "\r\n"
        file <<  "NEW_END_DATE=" + "$EDATE" + "\r\n"
        println file.text
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...