2015-12-21 29 views
5

Czy ktoś mógłby mi podać przydatny link, w którym mogę znaleźć informacje na temat konwersji złożonych konfiguracji xml dla pracy Jenkins?Konfiguracja Jenkins xml do opartej na Groovy pracy Jenkinsa DSL

Oto Jenkins przykład praca:

<project> 
    <actions/> 
    <description>Description</description> 
    <logRotator class="hudson.tasks.LogRotator"> 
     <!-- ...--> 
    </logRotator> 
    <keepDependencies>false</keepDependencies> 
    <properties> 
     <hudson.model.ParametersDefinitionProperty/><!-- ...--> 
    </properties> 
    <scm class="org.jenkinsci.plugins.multiplescms.MultiSCM" plugin="[email protected]"> 
     <scms> 
      <hudson.plugins.git.GitSCM plugin="[email protected]"/><!-- ...--> 
      <hudson.plugins.git.GitSCM plugin="[email protected]"/><!-- ...--> 
     </scms> 
    </scm> 
    <canRoam>true</canRoam> 
    <disabled>false</disabled> 
    <blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding> 
    <blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding> 
    <jdk>Default</jdk> 
    <triggers> 
     <hudson.triggers.TimerTrigger/><!-- ...--> 
    </triggers> 
    <concurrentBuild>false</concurrentBuild> 
    <customWorkspace>$HUDSON_WD/$REVISION/checkout</customWorkspace> 
    <builders/> 
    <publishers> 
     <hudson.plugins.globalenvvar.GlobalEnvironmentVariablePublisher plugin="[email protected]"/><!-- ...-->    
     <hudson.plugins.parameterizedtrigger.BuildTrigger plugin="[email protected]"/><!-- ...--> 
     <hudson.plugins.templateproject.ProxyPublisher plugin="[email protected]"/><!-- ...--> 
    </publishers> 
    <buildWrappers> 
     <hudson.plugins.timestamper.TimestamperBuildWrapper plugin="[email protected]"/> 
    </buildWrappers> 
</project> 
+2

myślę co pytasz jest, jak można przekształcić bieżącą pracę w Jenkins Jenkins do Job DSL? –

+0

@Steve Campbell, tak. – Arthur

Odpowiedz

9

Z mojego doświadczenia wynika, że ​​jest to całkowicie ręczny proces ponownego pisania. Materiałem referencyjnym jest https://jenkinsci.github.io/job-dsl-plugin/#.

Wiele elementów w pliku xml jest ustawionych domyślnie, więc wiele plików xml można pominąć. Konieczna jest tylko konwersja elementu xml element po elemencie, jeśli DSL nie obsługuje bezpośrednio wtyczki lub funkcji wtyczki, którą skonfigurowałeś.

proces konwersji jest następujący:

  1. przejść przez każdy skonfigurowany właściwości (Jenkins poprzez GUI), np "Odrzuć stare kompilacje".
  2. Ustal, czy DSL ma natywne wsparcie dla tego elementu. Jeśli tak, przepisz ją w DSL. Na przykład logRotator zapewnia funkcję "Odrzuć stare kompilacje".
  3. Jeśli nie jest obsługiwany bezpośrednio przez DSL, musisz ręcznie użyć configure, aby wyprowadzić xml. Jest to dość trudne i należy go unikać, jeśli to w ogóle możliwe.

Jeśli nie masz pewności, która wtyczka udostępnia element zadania, często możesz zobaczyć nazwę wtyczki w tekście pomocy dla tego elementu (kliknij ikonę małego znacznika zapytania). W przeciwnym razie element xml często zawiera nazwę wtyczki.

Warto również wiedzieć, że elementy zadania są rozkładane w taki sam sposób w DSL, jak na ekranie Konfiguracji w Jenkins. Więc jeśli jest to wyzwalacz, możesz go znaleźć w DSL pod triggers.

Prosty przykład (wiem, twoja jest znacznie bardziej skomplikowane):

freeStyleJob("Arthur's Example") { 
    description('Description') 
    logRotator(30) 
}