Jenkins CI: comment déclencher des builds sur SVN commit

Quels plugins et fonctionnalités de plugin dois-je définir pour que mon travail Jenkins déclenche une construction à tout moment le code est validé dans un projet SVN?

J'ai installé à la fois le plugin SVN standard et le plugin SVN tagging, mais je ne vois aucune nouvelle fonctionnalité permettant la configuration du déclencheur.

68
demandé sur Peter Mortensen 2012-04-04 19:25:27

4 réponses

Il y a deux façons de procéder:

Je recommande la première option initialement, en raison de sa facilité de mise en œuvre. Une fois que vous avez mûri dans vos processus de construction, passez à la seconde.

  1. Interrogez le référentiel pour voir si des modifications ont eu lieu. Cela peut "ignorer" un commit si deux commits arrivent dans le même intervalle d'interrogation. Description de la façon de le faire ici , notez la quatrième capture d'écran où vous configurez au travail un "déclencheur de construction" basé sur l'interrogation du référentiel (avec une configuration de type crontab).

  2. Configurez votre référentiel pour avoir un hook post-commit qui avertit Jenkins qu'une construction doit démarrer. Description de la façon de le faire ici, dans la section "post-commit crochets"

La fonctionnalité de balise SVN ne fait pas partie de l'interrogation, elle fait partie de la promotion de la "tête" actuelle du code source en une balise, pour capturer une construction. Cela vous permet de vous référer à Jenkins buid # 32 comme SVN tag / tags / build-32 (ou quelque chose de similaire).

76
répondu Edwin Buck 2014-05-22 12:26:11

J'ai fait un outil en utilisant Python avec un peu de bash pour déclencher une construction Jenkins. Fondamentalement, vous devez collecter ces deux valeurs de post-commit, lorsqu'un commit frappe le serveur SVN:

REPOS="$1"
REV="$2"

Ensuite, vous utilisez "svnlook dirs-changed $1-r $ 2" pour obtenir le chemin qui vient d'être validé. Ensuite, à partir de cela, vous pouvez vérifier quel référentiel vous voulez construire. Imaginez que vous avez des centaines de milliers de projets. Vous ne pouvez pas vérifier tout le dépôt, non?

Vous pouvez consulter mon script à partir de GitHub .

0
répondu Phan Dolphy 2018-07-18 20:55:56

Vous n'avez besoin que D'un seul plugin qui est le plugin Subversion.

, Alors tout simplement, aller dans Jenkins → job_name → Construire un Déclencheur section → (I) déclencher la construction à distance (c'est-à-dire à partir de scripts) Jeton d'authentification: Token_name

Allez dans le répertoire hooks du serveur SVN, puis après avoir déclenché les commandes ci-dessous:

  1. cp post-commit.tmpl post-commit
  2. chmod 777 post-commit
  3. chown -R www-data:www-data post-commit
  4. vi post-commit

    Remarque:, Toutes les lignes doivent être commentées ajouter le en dessous de la ligne enfin

Syntaxe (pour les utilisateurs de Linux):

/usr/bin/curl http://username:API_token@localhost:8081/job/job_name/build?token=Token_name

Syntaxe (pour L'utilisateur Windows):

C:/curl_for_win/curl http://username:API_token@localhost:8081/job/job_name/build?token=Token_name
0
répondu Hemin Patel 2018-07-18 20:58:50

Vous pouvez utiliser un crochet post-commit.

Placez le script hook post-commit dans le dossier hooks, Créez un wget_folder dans votre lecteur C:\ et placez le fichier wget.exe dans ce dossier. Ajoutez le code suivant dans le fichier appelé post-commit.bat

SET REPOS=%1   
SET REV=%2

FOR /f "tokens=*" %%a IN (  
'svnlook uuid %REPOS%'  
) DO (  
SET UUID=%%a  
)  

FOR /f "tokens=*" %%b IN (  
'svnlook changed --revision %REV% %REPOS%'  
) DO (  
SET POST=%%b   
)

echo %REPOS% ----- 1>&2

echo %REV% -- 1>&2

echo %UUID% --1>&2

echo %POST% --1>&2

C:\wget_folder\wget ^   
    --header="Content-Type:text/plain" ^   
    --post-data="%POST%" ^   
    --output-document="-" ^   
    --timeout=2 ^     
    http://localhost:9090/job/Test/build/%UUID%/notifyCommit?rev=%REV%    

Où Test = Nom du travail

echo est utilisé pour déterminer la valeur et vous pouvez également ajouter exit 2 à la fin pour connaître le problème et si le post-commit hook script est en cours d'exécution ou non.

-1
répondu Megha 2016-04-01 13:20:48