Powiedz Jenkinsowi, aby uruchomił konkretny projekt w określonym węźle podrzędnym

87

Jak mam powiedzieć Jenkinsowi, aby uruchomił konkretny projekt na określonym niewolniku?

Skonfigurowałem węzeł główny Jenkins i węzeł podrzędny, którego chcę używać do przemieszczania aplikacji. Ale nie mogę wymyślić, jak skonfigurować projekt, aby działał na utworzonym przeze mnie węźle podrzędnym.

Lorin Hochstein
źródło

Odpowiedzi:

84

Ustaw pole wyboru „Ogranicz, gdzie to zadanie może być uruchomione” w konfiguracji zadania i określ nazwę swojego urządzenia podrzędnego.

Jeśli później dodasz więcej urządzeń podrzędnych, możesz ustawić etykiety dla każdego urządzenia podrzędnego i określić je w konfiguracjach zadań.

Zobacz dokumentację referencyjną:

gareth_bowles
źródło
Dzięki. Długo korzystałem, zanim znalazłem twoją odpowiedź. Powinien był zostać dodany do tej strony wiki.jenkins-ci.org/display/JENKINS/Distribution+builds
Surasin Tancharoen
16

Jeśli uruchamiasz zadanie Pipeline, najpierw chcesz dodać etykietę (np. „Slave”) do węzła slave (lub agenta, jak się wydaje, że jest teraz nazywany).

Następnie w skrypcie potoku określasz etykietę, na której działa zadanie:

Potok deklaratywny:

pipeline {
    agent {label 'slave'}
    stages {
        ...
    }
}

Skryptowany potok:

node (label: 'slave') {
    ...
}

To zadanie będzie teraz działać na dowolnym węźle z etykietą „slave”. Jeśli chcesz, aby zadanie działało tylko na tym konkretnym urządzeniu podrzędnym, nie używaj ponownie etykiety. I oczywiście etykieta nie musi być „niewolnikiem”; może być czymkolwiek chcesz.

Aktualizacja:

W potoku skryptowym, jeśli twój węzeł ma nazwę „Mój węzeł”, możesz również to zrobić:

node ('My Node') {
    ...
}

Jeśli chcesz, aby blok kodu działał tylko w tym konkretnym węźle, jest to przydatne. Jednak używanie etykiet jest bardziej elastyczne i może ułatwić dodawanie węzłów w celu współdzielenia obciążenia.

jpyams
źródło
Trudno było to znaleźć, dokumentacja skryptowej składni umiera na korzyść deklaratywnej, nie mogę jeszcze migrować, więc dziękuję!
Mitchell Currie,
7

Jeśli chcesz użyć Node / Label jako parametru, zainstaluj NodeLabel Parameter Plugin

Alex Okrushko
źródło
Zauważ, że jeśli wybierzesz parametr „Węzeł” dla zadania i chcesz wywołać go z Groovy, musisz utworzyć specjalny parametr: params += new org.jvnet.jenkins.plugins.nodelabelparameter.LabelParameterValue('testServer', testServerLabel);(zamiast zwykłego StringParameterValue).
Nux