2014-05-09 5 views
5

Sto cercando di creare un lavoro, in Jenkins, che mi consenta di creare un progetto che è memorizzato in Subversion, ma mi chiederà quale etichetta, ramo o tronco voglio costruire.Creazione di tronchi, rami e tag SVN in Jenkins?

Ho provato a fare una costruzione parametrizzata, aggiungendo un parametro "List Subversion tags", ma crea un dropdown con solo/branches,/tags e/trunk. Non elenca i singoli rami o tag.

Avrei pensato che l'utilizzo del Subversion Release Manager avrebbe gestito questo, ma non fornisce alcuna documentazione significativa su come usarlo, e tutti i miei tentativi di usarlo finora hanno portato a non chiedermi un ramo, ma procedendo per controllare l'intero albero - tronco e ogni ramo e tag.

Jenkins Issue 10678 avrebbe dovuto fornire questo, ma che era nel 2011, e se deve ancora funzionare, non sono stato in grado di farlo funzionare per me.

Qualcuno sa come farlo accadere?

risposta

5

È possibile utilizzare le variabili per le posizioni dei repository in modo che l'URL del repository in jenkins assomigli a qualcosa come http://myhost.com/MY_REPO/${some_branch}, dove some_branch è il parametro. Questo parametro può essere impostato come parametro di stringa che è possibile immettere manualmente oppure è possibile ottenere un parametro di scelta dinamica con fantasia e farlo compilare automaticamente un menu a discesa con le informazioni dal repository (https://wiki.jenkins-ci.org/display/JENKINS/Jenkins+Dynamic+Parameter+Plug-in). Esempio:

dinamica Scelta dei parametri: 'some_branch'

// Choices Script (groovy) 
def dirs = ['trunk/'] // defaults to trunk 

def command = ['svn', 'ls', 'http://myhost.com/MY_REPO/tags'] 
def proc = command.execute() 
proc.in.eachLine { dirs.add('tags/' + it) } 

command = ['svn', 'ls', 'http://myhost.com/MY_REPO/branches'] 
proc = command.execute() 
proc.in.eachLine { dirs.add('branches/' + it) } 

dirs 
+0

diffidare di questo problema con il plugin Subversion quando si utilizzano le variabili in URL del repository [JENKINS-18426] (https://issues.jenkins-ci.org/browse/JENKINS-18426?page=com.atlassian. jira.plugin.system.issuetabpanels: all-tabpanel) – coz

+0

È anche possibile puntare semplicemente al repository-root. Ad esempio, ad es. potrebbe essere usato un parametro $ VERSION che consisterebbe ad es. di "trunk", "branches/branch1.2.3" o "tags/tag-3.4.5". – Alex

0

Sto usando il plugin eversione e funziona davvero bene. Non sono sicuro se ci sono alcune modifiche da quando hai postato la domanda.

Solo a note per i principianti per impostare il plug-in.

Fornisce una soluzione passo passo con schermate.

0

Stai utilizzando Pipeline? Dichiarazione o sceneggiatura? Se vuoi farlo con la pipeline programmata, prova quanto segue ... Ho passato molte ore a sbattere la testa contro il tempo cercando di capirlo. La pipeline dichiarativa è bella e tutto, ma non appena hai bisogno di fare qualcosa di diverso diventa un incubo (nella mia esperienza). Per non parlare quando si cercano esempi/documenti si finisce per trovare un sacco di pipeline dichiarativa e poco di script.

parameters([ 
    [$class: 'ListSubversionTagsParameterDefinition', 
      name: 'SVN_TAG_TO_BUILD', 
      tagsDir: 'https://server/svn/repo/tags', 
      credentialsId: 'jenkins', 
      maxTags: '50', 
      reverseByDate: true, 
      reverseByName: false], 
    string(
     defaultValue: 'Running release build', 
     description: 'Comments to leave when creating the release build tag', 
     name: 'SVN_COMMENTS' 
    ) 
]) 
Problemi correlati