8
votes

Comment obtenir le numéro de version SVN à partir de la caisse à utiliser dans DSL

J'ai créé un emploi de pipeline et j'aimerais obtenir le numéro de version SVN pour permettre le traitement en aval ultérieur dans un appel à un script shell. J'utilise un script de pipeline similaire à ce qui suit: xxx

existe une documentation sur la fonction de paiement disponible? Est-il possible de saisir le numéro de révision SVN? Je peux voir que la révision est sortie sur le journal.


2 commentaires

Quelle version essayez-vous exactement d'obtenir? Version SVN Server? Version cliente? Version de code?


Le numéro de révision du code @ pom12


7 Réponses :



3
votes

J'ai fini par appeler une coquille pour obtenir le numéro de révision SVN comme suit

def svnVersionNumber = sh(
    script: "svn info --show-item last-changed-revision $url",
    returnStdout: true
)


0 commentaires

-2
votes

Variable d'environnement JENKINS SVN_REVISION Fournit que tout de suite


3 commentaires

À utiliser dans le script ANT, il s'agit de: $ {env.svn_revision}


Svn_revision est hausse jusqu'à maintenant pas encore pris en charge dans des scripts de pipeline


Cela peut fonctionner dans une fourgonnette mais ce n'était pas la question.



2
votes

Ce code fonctionne pour moi dans Jenkins Pipeline:

String url = 'svn+ssh:...'
SVN_REVISION_IN = sh returnStdout: true, script: 'svn info --show-item last-changed-revision ' + url
currentBuild.displayName = "Rev: ${SVN_REVISION_IN}"


0 commentaires

2
votes

Il y a un fichier appelé révision.txt dans la version de construction. subversionscm Fournit des méthodes pour lire ce fichier.

//Here remote returns url@revision but the revision part is across the entire repo 
//We will use the url part to get the revision for our branch

def remote = scm.locations.first().remote
def url = remote.split('@').first()

//The revision file has the revision for our branch. Parse returns a map.
def revmap = scm.parseRevisionFile(currentBuild.rawBuild)
revmap[url] 


2 commentaires

org.jenkinsci.plugins.scriptsecurity.sandbox.ReçuDaccessé Xception: scripts non autorisés à utiliser la méthode hudson.scm.subversionscm getlocations :(


Je viens de l'approuver sous Gérer Jenkins »Approbation de script en cours



4
votes

Dans le script de pipeline Groovy, il est possible d'obtenir des résultats de la commande Checkout SCM code> dans la variable TREEMAP, puis d'obtenir ce dont vous avez besoin:

def checkoutResults = checkout([
            poll: false, 
            scm: [
                $class: 'SubversionSCM', 
                ...
            ]
        ])
echo 'checkout results' + checkoutResults.toString()
echo 'checkout revision' + checkoutResults['SVN_REVISION']
echo 'checkout revision' + checkoutResults['SVN_REVISION_1']
echo 'checkout revision' + checkoutResults['SVN_REVISION_2']


0 commentaires

8
votes

J'ai eu le même problème, mais vous pouvez le résoudre en utilisant la carte qui est renvoyée à partir de l'appelant SCM Checkout . Il contient une valeur pour svn_revision.

// Get some code from a SVM repository
def scmVars = checkout(
  ...
)

def svnversionnumber = scmVars.SVN_REVISION


6 commentaires

Puis-je obtenir le numéro de révision SVN sans obtenir / télécharger le code?


Cette affectation fonctionne-t-elle également dans la syntaxe déclarative (sous un pipeline et non le nœud )? J'ai continué à obtenir des erreurs d'analyse sur def


Peu importe! J'ai besoin de mettre des choses dans un script {..} bloquer pour pouvoir "échapper" à la syntaxe de pipeline scriptée ( DOC ) ... De plus, notez que la réponse de @mikhail ci-dessous élaborée, si vous vérifiez à partir de plusieurs URL, l'accesseur de numéro de révision sera être suffixé numérique.


Est-ce que cela fonctionne toujours? Ma console affiche un numéro de révision et la SVN_Revision ne correspond pas. DEF CHECKOUTRESUTRES = CHECKETTRESUTRES = CHECKOUT ($ CLASSE: 'SUBVERSIONSCM', ...) ECHO "COMPLET CHECKOUTRESUTRES:" + CHECKOUTRESUTIONS DEF VersionNumber = checkoutresults.svn_revision echo Manager.build.getDisplayName () + "" + VersionNumber Checkout Journal Ex: Mise à jour < Un href = "https: // myrepo / chemin" rel = "Nofollow NOREFERRER"> MyRepo / Chemin à la révision '2019-04-30T11: 06: 10.962 -0400' Utilisation des informations d'identification ... dans le royaume ' << a href = "https: // myRepo: 443" rel = "nOfollow noreferrer"> myRepo: 443 > VisualSvn Server 'à la révision 25043


@Alexweitz j'ai finalement obtenu cela pour travailler pour moi en changeant la syntaxe sur cette ... def checkoutresults = Checkout ([$ classe: 'subversionscm' ... Snip ...) Manager.build.setdisplayName (gestionnaire.build. getdisplayName () + "" + checkoutrésults ['svn_revision'])


Veuillez noter que ces informations sont actuellement (20202020) non 100% fiables. Dans notre configuration, nous voyons des cas où le SVN_Revision signalé n'est pas la révision réelle qui a été vérifiée. Ceci est en combinaison avec SVN: externes et bibliothèques partagées. Il pourrait être lié à Problèmes.jenkins-ci.org/browse/jenkins-45489.