This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Last revision Both sides next revision | ||
automatizace:jenkins [2023/01/18 18:19] tomas [Jenkins] |
automatizace:jenkins [2024/02/15 19:19] tomas [Dokumentace] |
||
---|---|---|---|
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\\ | ||
+ | / | ||
- | + | ==== API ==== | |
- | === API === | + | curl -u UZIVATEL: |
- | curl -u UZIVATEL: | + | |
curl -u $juser: | curl -u $juser: | ||
Line 30: | Line 32: | ||
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ř. / |