O slideshow foi denunciado.
Seu SlideShare está sendo baixado. ×

Pipeline as code - new feature in Jenkins 2

Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Próximos SlideShares
JavaOne 2016 - Pipeline as code
JavaOne 2016 - Pipeline as code
Carregando em…3
×

Confira estes a seguir

1 de 27 Anúncio

Pipeline as code - new feature in Jenkins 2

Baixar para ler offline

What is pipeline as code in continuous delivery/continuous deployment environment.
How to set up Multibranch pipeline to fully benefit from pipeline features.
Jenkins master-node concept in Kubernetes cluster.

What is pipeline as code in continuous delivery/continuous deployment environment.
How to set up Multibranch pipeline to fully benefit from pipeline features.
Jenkins master-node concept in Kubernetes cluster.

Anúncio
Anúncio

Mais Conteúdo rRelacionado

Diapositivos para si (20)

Semelhante a Pipeline as code - new feature in Jenkins 2 (20)

Anúncio

Mais recentes (20)

Pipeline as code - new feature in Jenkins 2

  1. 1. Pipeline as code with Multibranch Workflows in Jenkins 2
  2. 2. Jenkins Open source CI/CD project On premise tool Supports plugins Integrates with 3rd party tools and services
  3. 3. Organisation folder Workflow Multibranch Pipeline New in Jenkins 2
  4. 4. Workflow Multibranch Automatic Workflow (job) creation in Jenkins per new branch in the repository (assuming webhooks are registered from SCM to Jenkins) Build specific to that child-branch and its unique scm change and build history Automatic job pruning/deletion for branches deleted from the repository, according to the settings Flexibility to individually configure branch properties, by overriding the parent properties, if required * Source: Jenkins.io
  5. 5. Organisation folder Works on project space level within organisation SCM. Provides ability to create and manage workflow jobs for all repositories Automatically removes jobs for merged back branches Simplified configuration that requires only project name and credentials Provides pull request testing functionality. Jenkins will create a new CD pipeline when a pull-request is submitted and build/test the pull-request.
  6. 6. Setting up Organisation folder
  7. 7. Pipeline execution
  8. 8. Pipeline definition Pipelines are “Jenkins job definitions” enabled by the Pipeline plugin Based on Groovy programming language Pipelines leverage the power of multiple steps to execute both simple and complex tasks according to parameters that you establish Pipelines can build code and orchestrate the work required to drive applications from commit to delivery * Source: Jenkins.io
  9. 9. Pipeline attributes Durable: Pipelines can survive both planned and unplanned restarts of your Jenkins master. Pausable: Pipelines can optionally stop and wait for human input or approval before completing the jobs for which they were built. Versatile: Pipelines support complex real-world requirements, including the ability to fork or join, loop, and work in parallel with each other. Extensible: The Pipeline plugin supports custom extensions to its DSL (domain scripting language) and multiple options for integration with other plugins. * Source: Jenkins.io
  10. 10. Pipeline pros Supports complex, real-world, CD Pipeline requirements: pipelines can fork/join, loop, parallel, to name a few Resilient - pipeline executions can survive master restarts Pausable - pipelines can pause and wait for human input/approval Efficient - pipelines can restart from saved checkpoints Visualized - Pipeline StageView provides status at-a-glance dashboards including trending Artifact traceability with fingerprinting - support tracking versions of artifacts using file fingerprinting
  11. 11. Pipeline vocabulary Step is a single task that is part of build sequence Node typically enlists help from available executors on agents to: Schedules the steps contained within it to run by adding them to the Jenkins build queue Creates a workspace where resource-intensive processing can occur without negatively impacting your pipeline performance Stage is a logically distinct part of the execution of any task, with parameters for locking, ordering, and labeling its part of a process relative to other parts of the same process * Source: Jenkins.io
  12. 12. step([$class: 'ArtifactArchiver', artifacts: '**/target/*.war’, fingerprint: true])
  13. 13. The Jenkinsfile Jenkinsfile is a container for pipeline (or other) script, which details what specific steps are needed to perform a job for which you want to use Jenkins. Jenkinsfile can be created with text/Groovy editor, or through the configuration page on of Jenkins instance. Provides DSL steps with most common build tasks (https://jenkins.io/doc/pipeline/steps/) Can be extended by external shell scripts and import user Groovy scripts
  14. 14. DSL examples sh, bat - script execution for Unix and Windows system scm, checkout - checkout source code from VCS readFile, writeFile, fileExists - file handling stash, unstash - share workspace results between stages withEnv, evn.Foo, $BUILD_NUMBER - getting and setting variables parallel - set up concurrent tasks
  15. 15. node('nodeJs') { currentBuild.result = "SUCCESS" try { stage('Checkout') checkout scm stage('Test') env.NODE_ENV = "test" print "Environment will be : ${env.NODE_ENV}" sh 'node -v && npm prune && npm install && npm test' stage('Build Docker') sh './dockerBuild.sh' stage('Deploy') echo 'Push to Repo ssh to web server and tell it to pull new image' sh './dockerPushToRepo.sh' stage('Cleanup') echo 'prune and cleanup' sh 'npm prune && rm node_modules -rf' mail body: 'project build successful', from: 'xxxx@yyyyy.com', replyTo: 'xxxx@yyyy.com', subject: 'project build successful', to: 'yyy@yy.com' } catch (err) { currentBuild.result = "FAILURE" def specificCause = currentBuild.rawBuild.getCause(hudson.model.Cause$UserIdCause) mail body: "project build error is here: ${env.BUILD_URL}" , from: 'xxxx@yyyy.com', replyTo: 'yyyy@yyyy.com', subject: 'project build failed', to: 'zz@yy.com' throw err }}
  16. 16. Master-agent architecture Master node has a list of all configured agents Master node starts required Agents and passes build steps from Jenkinsfile All “hard work” is done by Agents Http: 8080 Slave: 50000 Master Agent nodejs Agent java Agent golang Slave: 50000 Slave: 50000 Slave: 50000
  17. 17. Jenkins in Kubernetes
  18. 18. Jenkins usage across teams Nana Beta Pi ... Jenkins agent images Source code + Pipeline libraries
  19. 19. What makes "Pipeline as a code" valuable for build/deployments in Newsweaver Organization folders - enable Jenkins to automatically detect and include any new repositories within them as resources. Jenkinsfile as part of source code - A Jenkinsfile is a container for your pipeline (or other) script, which details what specific steps are needed to perform a job for which you want to use Jenkins. Groovy is good - Jenkinsfiles are written as Groovy scripts which makes them easy to write and add complex logic Ability to record test results and artifacts Call agent for help - build tasks can be distributed and assigned to remote nodes. DRY - Pipeline can reuse build steps stored in SCM which can allow us to avoid code duplication in all branches Inputs - pipelines can be programed with pauses/human interaction Concurrent build actions - with a help of Parallel Test Executor we can split steps in parallel parts
  20. 20. New & noteworthy features Blue Ocean - new UI tailored pipelines as a central theme to the Jenkins user experience Visual Pipeline Editor - helps to make things clearer for a range of users, to help with Workflow adoption
  21. 21. Blue Ocean (https://jenkins.io/projects/blueocean/)
  22. 22. Visual Pipeline Editor (https://www.cloudbees.com/blog/introducing-experimental-visual-pipeline-editor)
  23. 23. Questions

×