Jenkins - wprowadzenie
Piotr Woszczyk @ 2019
Spis treści
- Ogólne informacje i podstawowe pojęcia
- Zastosowania
- Sposoby definicji projektów
- Sposoby uruchamiania projektów
- Użyteczne rozszerzenia
Ogólne informacje
- Darmowe (open-source) narzędzie do automatyzacji procesów
- Napisany w Java i udostępniony w 2011
- Rozszerzalny za pomocą pluginów
- Udostępnia GUI za pomocą przeglądarek internetowych
Podstawowe pojęcia
- Project / Job - opis czynności jakie mają być wykonywane przez Jenkins'a
- Build - pojedyńcze wykonanie Project
- Artifact - trwały efekt działania Build'a, np. skompilowana aplikacja
- Workspace - folder wydzielony przez instancje Jenkinsa na potrzeby Build'a
Zastosowania
- Testowanie apikacji
- Budowanie aplikacji
- Wykonywanie czynności serwisowych
- Audytowanie aplikacji
- Wysyłanie powiadomień
- Analizowanie logów
- inne
Rodzaje projektów

Rodzaje projektów: Ogólny

Rodzaje projektów: Pipeline
pipeline {
agent {
dockerfile {
filename 'environment/local/php-fpm/Dockerfile'
dir '.'
args '-v $HOME/.composer:/tmp/.composer'
}
}
environment {
MYSQL_HOST = 'localhost'
MYSQL_DATABASE = 'app'
MYSQL_USER = 'root'
MYSQL_PASSWORD = '***'
REDIS_HOST = 'localhost'
REDIS_PORT = '6379'
COMPOSER_HOME = '/tmp/.composer'
}
stages {
stage('Notify Stash') {
steps {
step([$class: 'StashNotifier'])
}
}
stage('Preparation') {
steps {
dir('code') {
sh 'composer install --no-scripts --no-progress --no-suggest'
}
}
}
stage('Tests') {
steps {
dir('code') {
sh 'bin/linter --lint src'
sh 'bin/console lint:yaml config --parse-tags'
sh 'bin/console lint:twig templates'
sh 'vendor/bin/php-cs-fixer fix --dry-run'
sh 'vendor/bin/phpmd src --exclude src/Entity,src/Migrations,src/DataFixtures --suffixes php text cleancode,codesize,controversial,design,unusedcode'
sh 'bin/console doctrine:schema:validate --skip-sync'
}
}
}
}
post {
always {
step([$class: 'StashNotifier'])
step([$class: 'Mailer', notifyEveryUnstableBuild: true, recipients: emailextrecipients([[$class: 'CulpritsRecipientProvider'], [$class: 'RequesterRecipientProvider']])])
deleteDir()
}
}
}Sposoby uruchamiania
- Po zakończeniu innego job'a
- Cyklicznie
- Na podstawie repozytorium
- Poprzez webhook
Rozszerzenia
- Bitbucket Server Notifier
- Email Extension Plugin
-
Publish Over FTP
-
Publish Over SSH
-
Workspace Cleanup Plugin
Jenkins - wprowadzenie
By Piotr Woszczyk
Jenkins - wprowadzenie
- 42