SlideShare une entreprise Scribd logo
1  sur  45
Télécharger pour lire hors ligne
Criando pipelines de entrega
contínua multilinguagem com
Docker e Jenkins
Camilo Ribeiro
Klarna AB
Camilo Ribeiro
Software Test Engineer at Klarna
ex-Senior QA Consultant at Thoughtworks
Blogger on www.bugbang.com.br
@camiloribeiro
HQ em Estocolmo/Suécia
Maior empresa de pagamento online da
europa, atuando na Suécia, Alemanha,
Noruega, Dinamarca, Austria, Reino Unido,
Estados Unidos e vários outros países.
Foco em entregas rápidas, confiáveis e
automação para testes, deploys e
configuração
www.klarna.com
https://github.com/camiloribeiro/cdeasy
https://github.com/camiloribeiro/cdeasy
https://dribbble.com/shots/1753131-MVP
Continuous Delivery
“ Entrega Continua é uma disciplina de desenvolvimento
de software aonde você desenvolve software de uma
maneira que ele possa ser entregue em produção a
qualquer momento. “
Martin Fowler
Continuous Delivery
“ Entrega Continua é uma disciplina de desenvolvimento
de software aonde você desenvolve software de uma
maneira que ele possa ser entregue em produção a
qualquer momento. “
Martin Fowler
docker pull gradle
docker run gradle clean build runInParallel
docker pull ruby
docker run ruby bundle install && rake test
docker pull node
docker run node npm install && node app.js
“Poder de cloud” no seu local
nginx:
build: docker/nginx
ports:
- "8080:8080"
tty: true
links:
- server
server:
build: docker/server
links:
- database
volumes:
- ./src:/tmp
command: /tmp/setup-jenkins.sh
database:
build: docker/mongo
ports:
- "27017:27017"
- "27018:27018”
- "27019:27019”
- "28017:28017"
tty: true
docker-compose
Jenkins Job DSL
job("running_java_with_docker") {
scm {
git {
remote {
name('origin')
url ("https://github.com/camiloribeiro/cucumber-gradle-parallel.git")
}
}
}
triggers {
scm 'H/5 * * * *'
}
steps {
shell 'docker pull niaquinto/gradle:2.5'
shell 'docker run -v $WORKSPACE/:/gradle -w /gradle niaquinto/gradle:2.5 clean build runInParallel'
}
publishers {
publishHtml {
report('build/reports/cucumber') {
reportName('Cucumber Report')
reportFiles('feature-overview.html')
keepAll()
allowMissing()
alwaysLinkToLastBuild()
}
}
}
}
job("running_java_with_docker") {
scm {
git {
remote {
name('origin')
url ("https://github.com/camiloribeiro/cucumber-gradle-parallel.git")
}
}
}
triggers {
scm 'H/5 * * * *'
}
steps {
shell 'docker pull niaquinto/gradle:2.5'
shell 'docker run -v $WORKSPACE/:/gradle -w /gradle niaquinto/gradle:2.5 clean build runInParallel'
}
publishers {
publishHtml {
report('build/reports/cucumber') {
reportName('Cucumber Report')
reportFiles('feature-overview.html')
keepAll()
allowMissing()
alwaysLinkToLastBuild()
}
}
}
}
job("running_java_with_docker") {
scm {
git {
remote {
name('origin')
url ("https://github.com/camiloribeiro/cucumber-gradle-parallel.git")
}
}
}
triggers {
scm 'H/5 * * * *'
}
steps {
shell 'docker pull niaquinto/gradle:2.5'
shell 'docker run -v $WORKSPACE/:/gradle -w /gradle niaquinto/gradle:2.5 clean build runInParallel'
}
publishers {
publishHtml {
report('build/reports/cucumber') {
reportName('Cucumber Report')
reportFiles('feature-overview.html')
keepAll()
allowMissing()
alwaysLinkToLastBuild()
}
}
}
}
job("running_java_with_docker") {
scm {
git {
remote {
name('origin')
url ("https://github.com/camiloribeiro/cucumber-gradle-parallel.git")
}
}
}
triggers {
scm 'H/5 * * * *'
}
steps {
shell 'docker pull niaquinto/gradle:2.5'
shell 'docker run -v $WORKSPACE/:/gradle -w /gradle niaquinto/gradle:2.5 clean build runInParallel'
}
publishers {
publishHtml {
report('build/reports/cucumber') {
reportName('Cucumber Report')
reportFiles('feature-overview.html')
keepAll()
allowMissing()
alwaysLinkToLastBuild()
}
}
}
}
job("running_java_with_docker") {
scm {
git {
remote {
name('origin')
url ("https://github.com/camiloribeiro/cucumber-gradle-parallel.git")
}
}
}
triggers {
scm 'H/5 * * * *'
}
steps {
shell 'docker pull niaquinto/gradle:2.5'
shell 'docker run -v $WORKSPACE/:/gradle -w /gradle niaquinto/gradle:2.5 clean build runInParallel'
}
publishers {
publishHtml {
report('build/reports/cucumber') {
reportName('Cucumber Report')
reportFiles('feature-overview.html')
keepAll()
allowMissing()
alwaysLinkToLastBuild()
}
}
}
}
job("running_java_with_docker") {
scm {
git {
remote {
name('origin')
url ("https://github.com/camiloribeiro/cucumber-gradle-parallel.git")
}
}
}
triggers {
scm 'H/5 * * * *'
}
steps {
shell 'docker pull niaquinto/gradle:2.5'
shell 'docker run -v $WORKSPACE/:/gradle -w /gradle niaquinto/gradle:2.5 clean build runInParallel'
}
publishers {
publishHtml {
report('build/reports/cucumber') {
reportName('Cucumber Report')
reportFiles('feature-overview.html')
keepAll()
allowMissing()
alwaysLinkToLastBuild()
}
}
}
}
configure { project -> project / publishers << 'join.JoinTrigger' {
'joinProjects'{}
'joinPublishers' {
'hudson.plugins.parameterizedtrigger.BuildTrigger' {
'configs' {
'hudson.plugins.parameterizedtrigger.BuildTriggerConfig' {
'configs' {
'hudson.plugins.parameterizedtrigger.CurrentBuildParameters' {}
}
projects('promote_rpm_to_stage')
condition('SUCCESS')
triggerWithNoParameters('true')
}
}
}
}
evenIfDownstreamUnstable('false')}
}
https://github.com/jenkinsci/job-dsl-plugin/wiki/Job-reference
Demo
camilo@camiloribeiro.com
Criando pipelines de entrega contínua multilinguagem com Docker e Jenkins
Criando pipelines de entrega contínua multilinguagem com Docker e Jenkins

Contenu connexe

Tendances

Tendances (20)

Docker Best Practices Workshop
Docker Best Practices WorkshopDocker Best Practices Workshop
Docker Best Practices Workshop
 
Testing as a container
Testing as a containerTesting as a container
Testing as a container
 
Google ko: fast Kubernetes microservice development in Go - Sangam Biradar, E...
Google ko: fast Kubernetes microservice development in Go - Sangam Biradar, E...Google ko: fast Kubernetes microservice development in Go - Sangam Biradar, E...
Google ko: fast Kubernetes microservice development in Go - Sangam Biradar, E...
 
CI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
CI/CD with Jenkins and Docker - DevOps Meetup Day ThailandCI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
CI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
 
Selenium Testing your Kubernetes Apps with Machine Learning and Testim
Selenium Testing your Kubernetes Apps with Machine Learning and TestimSelenium Testing your Kubernetes Apps with Machine Learning and Testim
Selenium Testing your Kubernetes Apps with Machine Learning and Testim
 
Javaone 2014 - Git & Docker with Jenkins
Javaone 2014 - Git & Docker with JenkinsJavaone 2014 - Git & Docker with Jenkins
Javaone 2014 - Git & Docker with Jenkins
 
2015 05-06-elias weingaertner-docker-intro
2015 05-06-elias weingaertner-docker-intro2015 05-06-elias weingaertner-docker-intro
2015 05-06-elias weingaertner-docker-intro
 
Docker + Tenserflow + GOlang - Golang singapore Meetup
Docker + Tenserflow + GOlang - Golang singapore MeetupDocker + Tenserflow + GOlang - Golang singapore Meetup
Docker + Tenserflow + GOlang - Golang singapore Meetup
 
Docking with Docker
Docking with DockerDocking with Docker
Docking with Docker
 
Using Docker to Develop, Test and Run Maven Projects - Wouter Danes
Using Docker to Develop, Test and Run Maven Projects - Wouter DanesUsing Docker to Develop, Test and Run Maven Projects - Wouter Danes
Using Docker to Develop, Test and Run Maven Projects - Wouter Danes
 
Docker for Integration Testing
Docker for Integration TestingDocker for Integration Testing
Docker for Integration Testing
 
Dockerized apps on Kubernetes
Dockerized apps on KubernetesDockerized apps on Kubernetes
Dockerized apps on Kubernetes
 
Delivery Pipeline as Code: using Jenkins 2.0 Pipeline
Delivery Pipeline as Code: using Jenkins 2.0 PipelineDelivery Pipeline as Code: using Jenkins 2.0 Pipeline
Delivery Pipeline as Code: using Jenkins 2.0 Pipeline
 
Exploring Docker in CI/CD
Exploring Docker in CI/CDExploring Docker in CI/CD
Exploring Docker in CI/CD
 
Automated android testing using jenkins ci
Automated android testing using jenkins ciAutomated android testing using jenkins ci
Automated android testing using jenkins ci
 
7 Habits of Highly Effective Jenkins Users
7 Habits of Highly Effective Jenkins Users7 Habits of Highly Effective Jenkins Users
7 Habits of Highly Effective Jenkins Users
 
Docker dev, test & production (afas)
Docker  dev, test & production (afas)Docker  dev, test & production (afas)
Docker dev, test & production (afas)
 
Jenkins vs. AWS CodePipeline (AWS User Group Berlin)
Jenkins vs. AWS CodePipeline (AWS User Group Berlin)Jenkins vs. AWS CodePipeline (AWS User Group Berlin)
Jenkins vs. AWS CodePipeline (AWS User Group Berlin)
 
Using Docker for Testing
Using Docker for TestingUsing Docker for Testing
Using Docker for Testing
 
Cloud Native Okteto Cloud
Cloud Native Okteto Cloud Cloud Native Okteto Cloud
Cloud Native Okteto Cloud
 

En vedette

En vedette (9)

Como NÃO testar o seu projeto de Software. DevDay 2014
Como NÃO testar o seu projeto de Software. DevDay 2014Como NÃO testar o seu projeto de Software. DevDay 2014
Como NÃO testar o seu projeto de Software. DevDay 2014
 
Técnicas de Teste
Técnicas de TesteTécnicas de Teste
Técnicas de Teste
 
Desenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por Testes
 
Do push para a produção: Os desafios de automação em Continuous Delivery
Do push para a produção: Os desafios de automação em Continuous DeliveryDo push para a produção: Os desafios de automação em Continuous Delivery
Do push para a produção: Os desafios de automação em Continuous Delivery
 
Quando tdd não é o suficiente
Quando tdd não é o suficienteQuando tdd não é o suficiente
Quando tdd não é o suficiente
 
Introdução a Automação de Teste de Software
Introdução a Automação de Teste de SoftwareIntrodução a Automação de Teste de Software
Introdução a Automação de Teste de Software
 
Boas práticas de Automação de Testes
Boas práticas de Automação de TestesBoas práticas de Automação de Testes
Boas práticas de Automação de Testes
 
Papéis em Teste e Qualidade de Software
Papéis em Teste e Qualidade de SoftwarePapéis em Teste e Qualidade de Software
Papéis em Teste e Qualidade de Software
 
Teste de Software Introdução à Qualidade
Teste de Software Introdução à Qualidade Teste de Software Introdução à Qualidade
Teste de Software Introdução à Qualidade
 

Similaire à Criando pipelines de entrega contínua multilinguagem com Docker e Jenkins

Continuous Integration using Cruise Control
Continuous Integration using Cruise ControlContinuous Integration using Cruise Control
Continuous Integration using Cruise Control
elliando dias
 

Similaire à Criando pipelines de entrega contínua multilinguagem com Docker e Jenkins (20)

Gitlab ci e kubernetes, build test and deploy your projects like a pro
Gitlab ci e kubernetes, build test and deploy your projects like a proGitlab ci e kubernetes, build test and deploy your projects like a pro
Gitlab ci e kubernetes, build test and deploy your projects like a pro
 
Turnkey Continuous Delivery
Turnkey Continuous DeliveryTurnkey Continuous Delivery
Turnkey Continuous Delivery
 
(Declarative) Jenkins Pipelines
(Declarative) Jenkins Pipelines(Declarative) Jenkins Pipelines
(Declarative) Jenkins Pipelines
 
Server(less) Swift at SwiftCloudWorkshop 3
Server(less) Swift at SwiftCloudWorkshop 3Server(less) Swift at SwiftCloudWorkshop 3
Server(less) Swift at SwiftCloudWorkshop 3
 
DevOps Workflow: A Tutorial on Linux Containers
DevOps Workflow: A Tutorial on Linux ContainersDevOps Workflow: A Tutorial on Linux Containers
DevOps Workflow: A Tutorial on Linux Containers
 
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
 
2016 - Continuously Delivering Microservices in Kubernetes using Jenkins
2016 - Continuously Delivering Microservices in Kubernetes using Jenkins2016 - Continuously Delivering Microservices in Kubernetes using Jenkins
2016 - Continuously Delivering Microservices in Kubernetes using Jenkins
 
Antons Kranga Building Agile Infrastructures
Antons Kranga   Building Agile InfrastructuresAntons Kranga   Building Agile Infrastructures
Antons Kranga Building Agile Infrastructures
 
Baking docker using chef
Baking docker using chefBaking docker using chef
Baking docker using chef
 
Baking Docker Using Chef - ChefConf 2015
Baking Docker Using Chef - ChefConf 2015Baking Docker Using Chef - ChefConf 2015
Baking Docker Using Chef - ChefConf 2015
 
Mihai Criveti - PyCon Ireland - Automate Everything
Mihai Criveti - PyCon Ireland - Automate EverythingMihai Criveti - PyCon Ireland - Automate Everything
Mihai Criveti - PyCon Ireland - Automate Everything
 
Production sec ops with kubernetes in docker
Production sec ops with kubernetes in dockerProduction sec ops with kubernetes in docker
Production sec ops with kubernetes in docker
 
Build, Publish, Deploy and Test Docker images and containers with Jenkins Wor...
Build, Publish, Deploy and Test Docker images and containers with Jenkins Wor...Build, Publish, Deploy and Test Docker images and containers with Jenkins Wor...
Build, Publish, Deploy and Test Docker images and containers with Jenkins Wor...
 
Continuous Integration using Cruise Control
Continuous Integration using Cruise ControlContinuous Integration using Cruise Control
Continuous Integration using Cruise Control
 
Lightweight continuous delivery for small schools
Lightweight continuous delivery for small schoolsLightweight continuous delivery for small schools
Lightweight continuous delivery for small schools
 
Scala, docker and testing, oh my! mario camou
Scala, docker and testing, oh my! mario camouScala, docker and testing, oh my! mario camou
Scala, docker and testing, oh my! mario camou
 
DCSF 19 Building Your Development Pipeline
DCSF 19 Building Your Development Pipeline  DCSF 19 Building Your Development Pipeline
DCSF 19 Building Your Development Pipeline
 
Automatisation in development and testing - within budget
Automatisation in development and testing - within budgetAutomatisation in development and testing - within budget
Automatisation in development and testing - within budget
 
Pipeline: Continuous Delivery as Code in Jenkins 2.0
Pipeline: Continuous Delivery as Code in Jenkins 2.0Pipeline: Continuous Delivery as Code in Jenkins 2.0
Pipeline: Continuous Delivery as Code in Jenkins 2.0
 
7 Habits of Highly Effective Jenkins Users
7 Habits of Highly Effective Jenkins Users7 Habits of Highly Effective Jenkins Users
7 Habits of Highly Effective Jenkins Users
 

Dernier

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Dernier (20)

Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
 

Criando pipelines de entrega contínua multilinguagem com Docker e Jenkins

  • 1. Criando pipelines de entrega contínua multilinguagem com Docker e Jenkins Camilo Ribeiro Klarna AB
  • 2. Camilo Ribeiro Software Test Engineer at Klarna ex-Senior QA Consultant at Thoughtworks Blogger on www.bugbang.com.br @camiloribeiro
  • 3. HQ em Estocolmo/Suécia Maior empresa de pagamento online da europa, atuando na Suécia, Alemanha, Noruega, Dinamarca, Austria, Reino Unido, Estados Unidos e vários outros países. Foco em entregas rápidas, confiáveis e automação para testes, deploys e configuração www.klarna.com
  • 4.
  • 8. Continuous Delivery “ Entrega Continua é uma disciplina de desenvolvimento de software aonde você desenvolve software de uma maneira que ele possa ser entregue em produção a qualquer momento. “ Martin Fowler
  • 9. Continuous Delivery “ Entrega Continua é uma disciplina de desenvolvimento de software aonde você desenvolve software de uma maneira que ele possa ser entregue em produção a qualquer momento. “ Martin Fowler
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20. docker pull gradle docker run gradle clean build runInParallel
  • 21. docker pull ruby docker run ruby bundle install && rake test
  • 22. docker pull node docker run node npm install && node app.js
  • 23. “Poder de cloud” no seu local
  • 24. nginx: build: docker/nginx ports: - "8080:8080" tty: true links: - server server: build: docker/server links: - database volumes: - ./src:/tmp command: /tmp/setup-jenkins.sh database: build: docker/mongo ports: - "27017:27017" - "27018:27018” - "27019:27019” - "28017:28017" tty: true docker-compose
  • 25.
  • 27. job("running_java_with_docker") { scm { git { remote { name('origin') url ("https://github.com/camiloribeiro/cucumber-gradle-parallel.git") } } } triggers { scm 'H/5 * * * *' } steps { shell 'docker pull niaquinto/gradle:2.5' shell 'docker run -v $WORKSPACE/:/gradle -w /gradle niaquinto/gradle:2.5 clean build runInParallel' } publishers { publishHtml { report('build/reports/cucumber') { reportName('Cucumber Report') reportFiles('feature-overview.html') keepAll() allowMissing() alwaysLinkToLastBuild() } } } }
  • 28. job("running_java_with_docker") { scm { git { remote { name('origin') url ("https://github.com/camiloribeiro/cucumber-gradle-parallel.git") } } } triggers { scm 'H/5 * * * *' } steps { shell 'docker pull niaquinto/gradle:2.5' shell 'docker run -v $WORKSPACE/:/gradle -w /gradle niaquinto/gradle:2.5 clean build runInParallel' } publishers { publishHtml { report('build/reports/cucumber') { reportName('Cucumber Report') reportFiles('feature-overview.html') keepAll() allowMissing() alwaysLinkToLastBuild() } } } }
  • 29. job("running_java_with_docker") { scm { git { remote { name('origin') url ("https://github.com/camiloribeiro/cucumber-gradle-parallel.git") } } } triggers { scm 'H/5 * * * *' } steps { shell 'docker pull niaquinto/gradle:2.5' shell 'docker run -v $WORKSPACE/:/gradle -w /gradle niaquinto/gradle:2.5 clean build runInParallel' } publishers { publishHtml { report('build/reports/cucumber') { reportName('Cucumber Report') reportFiles('feature-overview.html') keepAll() allowMissing() alwaysLinkToLastBuild() } } } }
  • 30. job("running_java_with_docker") { scm { git { remote { name('origin') url ("https://github.com/camiloribeiro/cucumber-gradle-parallel.git") } } } triggers { scm 'H/5 * * * *' } steps { shell 'docker pull niaquinto/gradle:2.5' shell 'docker run -v $WORKSPACE/:/gradle -w /gradle niaquinto/gradle:2.5 clean build runInParallel' } publishers { publishHtml { report('build/reports/cucumber') { reportName('Cucumber Report') reportFiles('feature-overview.html') keepAll() allowMissing() alwaysLinkToLastBuild() } } } }
  • 31. job("running_java_with_docker") { scm { git { remote { name('origin') url ("https://github.com/camiloribeiro/cucumber-gradle-parallel.git") } } } triggers { scm 'H/5 * * * *' } steps { shell 'docker pull niaquinto/gradle:2.5' shell 'docker run -v $WORKSPACE/:/gradle -w /gradle niaquinto/gradle:2.5 clean build runInParallel' } publishers { publishHtml { report('build/reports/cucumber') { reportName('Cucumber Report') reportFiles('feature-overview.html') keepAll() allowMissing() alwaysLinkToLastBuild() } } } }
  • 32. job("running_java_with_docker") { scm { git { remote { name('origin') url ("https://github.com/camiloribeiro/cucumber-gradle-parallel.git") } } } triggers { scm 'H/5 * * * *' } steps { shell 'docker pull niaquinto/gradle:2.5' shell 'docker run -v $WORKSPACE/:/gradle -w /gradle niaquinto/gradle:2.5 clean build runInParallel' } publishers { publishHtml { report('build/reports/cucumber') { reportName('Cucumber Report') reportFiles('feature-overview.html') keepAll() allowMissing() alwaysLinkToLastBuild() } } } }
  • 33. configure { project -> project / publishers << 'join.JoinTrigger' { 'joinProjects'{} 'joinPublishers' { 'hudson.plugins.parameterizedtrigger.BuildTrigger' { 'configs' { 'hudson.plugins.parameterizedtrigger.BuildTriggerConfig' { 'configs' { 'hudson.plugins.parameterizedtrigger.CurrentBuildParameters' {} } projects('promote_rpm_to_stage') condition('SUCCESS') triggerWithNoParameters('true') } } } } evenIfDownstreamUnstable('false')} }
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42. Demo