This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
automatizace:jenkins [2023/01/18 17:40] tomas [Jenkins] |
automatizace:jenkins [2026/01/02 12:34] (current) tomas [API] |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====Jenkins==== | + | =====Jenkins===== |
| Integracni nastroj postaveny na Jave (frontend bezi na Tomcatu). Podporuje SCM (Source Contrl Management): | Integracni nastroj postaveny na Jave (frontend bezi na Tomcatu). Podporuje SCM (Source Contrl Management): | ||
| Line 9: | Line 9: | ||
| [[http:// | [[http:// | ||
| - | === Skripty Groovy | + | ==== Dokumentace ==== |
| - | [[https://groovy-lang.org/documentation.html|Groovy]] jazyk | + | JENKINS_URL/env-vars.html ... popis preddefinovanych promennych\\ |
| + | /queue/ | ||
| + | /api\\ | ||
| + | / | ||
| + | / | ||
| + | ====Jenkins CLI==== | ||
| + | java -jar jenkins-cli.jar -s http:// | ||
| + | ==== API ==== | ||
| + | curl -u UZIVATEL: | ||
| + | curl -u $juser: | ||
| - | === API === | + | |
| - | curl -u UZIVATEL: | + | https:// |
| - | https:// | + | https:// |
| - | https:// | + | xml? |
| - | xml? | + | xml? |
| - | xml? | + | |
| json? | json? | ||
| - | json? | + | json? |
| json? | json? | ||
| - | json? | + | json? |
| python? | python? | ||
| https:// | https:// | ||
| https:// | https:// | ||
| + | https:// | ||
| + | ==== Skripty Groovy ==== | ||
| + | [[https:// | ||
| + | [[https:// | ||
| + | |||
| + | === Kostra kódu === | ||
| + | kdekoliv může být definice proměnné, ne jen v environment sekci: | ||
| + | def skipPublishDefault = (BRANCH_NAME == ' | ||
| + | |||
| + | < | ||
| + | @Library([path]) | ||
| + | pipeline { | ||
| + | agent none // | ||
| + | options {} | ||
| + | triggers {} | ||
| + | parameters {} | ||
| + | environment {} | ||
| + | stages { | ||
| + | stage {} | ||
| + | stage {} | ||
| + | post {} | ||
| + | } | ||
| + | post {} | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | nebo když se nedefinuje akce souborem ale v UI: | ||
| + | |||
| + | < | ||
| + | node { | ||
| + | stage {} | ||
| + | stage {} | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | === sekce agent === | ||
| + | label " | ||
| + | |||
| + | any ... jakykoliv | ||
| + | |||
| + | none ... žádný agent se nealokuje | ||
| + | |||
| + | node {} ... jak label, ale umožňuje další možnosti, vice na [[https:// | ||
| + | |||
| + | < | ||
| + | image ' | ||
| + | label ' | ||
| + | args '-v /tmp' | ||
| + | registryUrl ' | ||
| + | registryCredentialsId ' | ||
| + | }</ | ||
| + | |||
| + | dockerfile {} ... vice na [[https:// | ||
| + | |||
| + | < | ||
| + | label " | ||
| + | defaultContainer " | ||
| + | yaml libraryResource(" | ||
| + | }</ | ||
| + | |||
| + | |||
| + | === tools === | ||
| + | sekce v pipeline, nainstaluje pro běh na agentovi nástroj dané verze: maven, jdk, gradle | ||
| + | |||
| + | === sekce triggers === | ||
| + | cron cron(' | ||
| + | |||
| + | pollSCM(' | ||
| + | |||
| + | upstream(upstreamProjects: | ||
| + | |||
| + | |||
| + | === sekce options === | ||
| + | Parametry celkového běhu, komplet popis viz [[https:// | ||
| + | |||
| + | disableConcurrentBuilds()\\ | ||
| + | buildDiscarder(logRotator(numToKeepStr: | ||
| + | timeout(time: | ||
| + | timestamps ()\\ | ||
| + | |||
| + | === sekce parameters === | ||
| + | vstupní parametry pro běh pipeliny | ||
| + | |||
| + | '' | ||
| + | '' | ||
| + | '' | ||
| + | OPTIONAL | ||
| + | Reload this pipeline from pipeline definition, parameters etc.""" | ||
| + | text(name: ' | ||
| + | password(name: | ||
| + | |||
| + | === sekce environment === | ||
| + | Proměnné, přistupuje se k nim přes ${TARGET} | ||
| + | |||
| + | KLIC = ' | ||
| + | SETTINGS_XML = credentials(' | ||
| + | |||
| + | === sekce stage === | ||
| + | agent {} ... viz sekce agent\\ | ||
| + | when {} ... podmínka, kdy step jede a jestli\\ | ||
| + | environment {} ... viz sekce environment\\ | ||
| + | options {} ... parametry pro stage, jako trřeba timeout, více na [[https:// | ||
| + | input {} ... uživatlský vstup\\ | ||
| + | stages {} || parallel {} || matrix {} || steps {} ... obsahuje max. 1 z uvedených\\ | ||
| + | try {} catch () {}\\ | ||
| + | for (int i = 0; i < browsers.size(); | ||
| + | |||
| + | === sekce when === | ||
| + | beforeAgent true\\ | ||
| + | expression { !params.SPUSTIT && BRANCH ==~ / | ||
| + | |||
| + | === sekce steps === | ||
| + | script {} ... umožnuje vnořit akce, včetně smyček atd.\\ | ||
| + | if (sharedTools.shouldRun(" | ||
| + | dir(' | ||
| + | script {} ... posloupnost akcí v {}\\ | ||
| + | echo '' | ||
| + | sh 'echo ahoj' ... shell skript\\ | ||
| + | |||
| + | withCredentials() {} ... obsah {} se provede s kredencema načtenýma ze secretu, přiřazenýmá do proměnné\\ | ||
| + | withCredentials([file(credentialsId: | ||
| + | withCredentials([ string(credentialsId: | ||
| + | %%withCredentials([ usernamePassword(credentialsId: | ||
| + | withNPM(npmrcConfig: | ||
| + | %%checkout([$class: | ||
| + | withDockerRegistry([credentialsId: | ||
| + | |||
| + | < | ||
| + | script { | ||
| + | echo "Ctu soubor ' | ||
| + | servers = readJSON(file: | ||
| + | |||
| + | |||
| + | === sekce post === | ||
| + | Je buď ve sekci pipelines, nebo steps, více viz [[https:// | ||
| + | always {} ...vždy\\ | ||
| + | changed {} ... jen když se změnil status od minulého běhu (success > fail např.)\\ | ||
| + | fixed {} ... \\ | ||
| + | regression {} ...\\ | ||
| + | aborted {} ... jen, když se běh přeruší\\ | ||
| + | success {} ... jen když vše bylo v pořádku\\ | ||
| + | unstable {} ...\\ | ||
| + | unsuccessful {} ...\\ | ||
| + | cleanup {} ... poslední step, provede se po všech ostatních post krocích, ať dopadly jakkoli\\ | ||
| + | === Definice funkcí === | ||
| + | def call(body) {def pipelineParams = [:] } ... definice funkce v knihovně. 1 soubor = jedna funkce, název funkce = název souboru, např. / | ||