Trigger con parametri Jenkins + Copia artefatto


9

Sto lavorando alla configurazione di Jenkins per gestire i nostri build di rilascio. Una build di rilascio è costituita da un programma di installazione di Windows che include alcuni file binari che devono essere compilati su Linux.

Ecco cosa ho finora:

  • La parte Windows e la parte Linux sono impostate come progetti Jenkins separati.
  • Il progetto Windows è parametrizzato, prendendo il tag Subversion per compilare e rilasciare.
  • Come parte della sua build, il progetto Windows attiva una build dello stesso tag Subversion per il progetto Linux (usando il plug-in Trigger parametrizzato ) quindi copia gli artefatti dal progetto Linux (usando il plug-in Copia artefatto ) nell'area di lavoro del progetto Windows in modo che possono essere inclusi nel programma di installazione di Windows.

Dove sono bloccato: in questo momento, Copia artefatto è impostato per copiare l'ultima build di successo. Sembra più robusto configurare Copia artefatto in modo che copi dall'esatta build che ha innescato Parameterized Trigger, ma ho difficoltà a capire come farlo funzionare. C'è un'opzione per un parametro "selettore di build" che penso possa essere d'aiuto in questo, ma non riesco a capire come dovrebbe essere impostato (e sperimentare ciecamente con diverse possibilità è alquanto doloroso quando la build impiega un'ora o due per trovare successo o fallimento).

Come devo impostarlo? Come funziona il selettore di build?

Risposte:


11

Dopo aver completato una build innescata, avrai una nuova variabile env impostata sul numero di build di quella build innescata chiamata TRIGGERED_BUILD_NUMBER_ <nome lavoro>. Puoi usarlo per copiare in modo specifico i manufatti:

  1. Build di Windows (chiamato " WindowsBuild "), chiama il build di Linux (chiamato " LinuxBuild ") usando il plugin Parameterized Trigger.

    Hai questa parte, assicurati di controllare Blocca fino a quando i progetti attivati ​​non completano la loro compilazione e falliscono la compilazione ovviamente se la compilazione di Linux fallisce.

  2. Avanti nella tua copia artefatti da un altro passaggio del progetto :

    Nome del progetto: LinuxBuild

    Quale build: build specifica

    Numero build: $ TRIGGERED_BUILD_NUMBER_LinuxBuild (tutti i nomi dei progetti hanno caratteri non a-zA-Z o 0-9 sostituiti da _; più caratteri vengono condensati in un singolo _).


la variabile di ambiente "$ TRIGGERED_BUILD_NUMBER_ <downstreamjob>" deve essere impostata manualmente? Non riesco a trovarlo in nessuna delle variabili di ambiente upstream o downstream.
harish

1
Trovato dal wiki del plugin che $ TRIGGERED_BUILD_NUMBER_ <downstreamjob> viene impostato automaticamente se "Blocca fino a quando i progetti attivati ​​non completano le loro build" è selezionato.
Harish
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.