Home Blog Projects About

Jenkins tipy a triky

Tuesday. July 18, 2017 - 3 mins
jenkins best practices
cool-jenkins

Používanie Jenkins-u je veľmi intuitívne a jednoduché. Navyše, pri dodržiavaní základných pravidiel, dosiahnete vyššiu efektivitu práce.

Jenkins

  • Udržiavajte Jenkins vždy aktuálny - aktualizujte pravidelne sudo apt update jenkins alebo sudo yum update jenkins.
  • Názvy job-ov by nemali obsahovať medzeru - každý job si vytvára svoj adresár a niektoré nástroje nepodporujú medzeru v názve adresára.
  • Nepoužívajte anonymný prístup užívateľov k job-om, nastaveniam a pod., ak je to možné použite LDAP alebo inú authentifikáciu.
  • Ak je to možné, nastavte potrebné úrovne užívateľských rolí a skupín len tým užívateľom ktorý ich potrebujú.
  • Nastavte všetkým užívateľom zobrazovanie stavu neúspešných/chybových job-ov (tak aby ich mali vždy na očiach).
  • V prípade zablokovania prístupu všetkým užívateľom k Jenkins-u, môžte ho manuálne upravit v globálnej konfigurácii /var/lib/jenkins/config.xml.
  • Pre reštartovanie Jenkins-u použite /safeRestart alebo /restart ak to nefunguje, použite ssh príkaz sudo service jenkins restart.
  • Backup-ujte Jenkins home adresár /var/lib/jenkins.
  • Nevypínajte Maven plugin. Jenkins bez neho nevie znova naštartovať. Ak ho nechtiac deaktivujete, môžete ho znova povoliť pomocou príkazu. sudo rm /var/lib/jenkins/plugins/maven-plugin.jpi.disabled.
  • Neinštalujte zbytočné pluginy, pokiaľ to nie je nevyhnutné, pluginy tretích strán môžu vzájomne spôsobovať problémy.

Pipeline

  • Extrahujte pipeline funkčnosti skriptu do samostatných funkcií.
  • Neduplikujte skripty ani kód, využívajte zdieľané knižnice.
  • Pri “deklaratívnom” pipeline skripte využívajte vstavaný linter.
  • Job-y sa snažte uržiavať čo najjednoduchšie.
  • Používajte template builder pre zjednodušnie opakujúcich sa úloh.
  • Nevkladajte kvantum bash skriptov do každého job-u. Ak je to nevyhnutné presuňte skript do Git repozitára a ten si následne checkout-nite.
  • Používajte checkout scm pre automaticky checkout revizie branch-u repozitára
  • Používajte $env.BRANCH_NAME pre určovanie logiky na základe branch-u v pipeline skripte
  • Pre urýchlenie debugovania job-u používajte v detaile buildu možnosť “Reply”, kde môžete priamo “on demand” upravovať pipeline skripty a zároveň ho aj spúšťat.
  • Neukladajte pipeline skripty v rámci Jenkins filtesystému (radšej ich udržiavajte vo verziovacom systéme).
  • Nevkladajte blok states do ploku parallel môže to viest k neočakávaným výsledkom, logickým problémom v Stage View a pod.
  • Všetko podstatné, vykonávajte v stage bloku. Toto vám umožní prehľadnejšiu vizualizáciu, debugovanie a podobne.
    stage('build') {
      // build
    }
    stage('test') {
      // test
    )
    
  • Spúštané príkazy, shell sprikty, build-y a podobne, obalujte do node bloku.
    stage{'build'} {
      node {
          checkout scm
          sh 'echo "hello world"'
      }
    }
    
  • Využívajte silu paralelizmu. Ak je to možné spúštajte úlohy paralelne.
    parallel (
      'resultUnit': {
          junit 'tests/_output/*.xml'
      },
      'resultHtml': {
          publishHTML([])
      }
    )
    
  • Nevytárajte (“nesetujte”) premenné prostredia priamo pomocou globálnej env premennej, používajte radšej withEnv syntax.
    withEnv(["PATH+MAVEN=${tool 'm3'}/bin"]) {
      sh "mvn clean verify"
    }
    
  • Preferujte stash namiesto archive, stash a unstash sú vytorené pre zdieľanie súborov ako aj pre zdieľanie zdrojových kódov medzi stages a nodes. Na druhej strane archive je stavaný pre dlhotrvajúce súbory ako napríklad vygenerovaný binárny súbor.
    stash excludes: 'target/', name: 'source'
    unstash 'source'
    
  • Pri každom pipeline skripte používajte na prvom riadku príkaz #!groovy alebo #!/usr/bin/env groovy.
  • Obalujte vstupy od používateľa v bloku timeout.
    timeout(time:5, unit:'DAYS') {
      input message:'Approve deployment?', submitter: 'it-ops'
    }
    
  • V prípade, že potrebujete pracovať s asociativným poľom [key,value] použíte Map funkciu:
    @NonCPS 
    def entries(m) {
      m.collect {k, v -> [k, v]}
    }
    

Subscribe




And I hate spam just as much as you do, so don’t worry,
I’ll never spam you or sell your email address.

Comments

Want to leave a comment? Visit this post's issue page on GitHub (you'll need a GitHub account).

« Užitočné funkčnosti pre pipeline Výroky Slovenského Manažéra »

Related Posts

  • Jenkins CI Pipeline scripting
  • Zdieľané knižnice v Jenkins pipeline
  • Premenné prostredia Gitlab-u a Jenkins pipeline
  • Užitočné funkčnosti pre pipeline
  • Poznáte Jenkinsfile?

Recommended sites: juffalow.com

Lukáš Mešťan © 2019

Powered by ❤Jekyll