SlideShare uma empresa Scribd logo
1 de 38
Baixar para ler offline
-

build
like you

code
Izzet Mustafayev@EPAM Systems
@webdizz
http://webdizz.name
this is me
● SA at EPAM Systems
● primary skill is Java
● hands-on-coding with Ruby, Groovy and
some Scala
● passionate about agile, clean code
practices and devops movement
agenda
● introduction
● why does my build tool suck?
● how does it taste?
● integration
● summary
● q&a
why does my build tool suck?
xml
try to extend...
copy-paste
performance
dependencies
how does it taste?
Buildr
follows philosophy
of Maven
with simplicity
of Ant
ruby

awesome language for scripting,
expressive, lightweight

rake

tasks, files, dependencies

buildr

projects, lifecycle, artifacts, plugins
simple installation steps
1. wget -c http://jruby.org.s3.amazonaws.
com/downloads/1.7.5/jruby-bin-1.7.5.zip
2. unzip jruby-bin-1.7.5.zip
3. add JRuby bin folder to PATH
4. gem install buildr
help
➔ buildr help # for tasks
➔ buildr --help # for options
new project
➔ buildr
build java http://goo.gl/pf669x
repositories.remote << ’http://repo1.maven.org/maven2’

define ‘junit’ do
project.version = ’4.11’
project.group = ’junit’
compile.with 'org.hamcrest:hamcrest-core:jar:1.3'
test.compile.with
package :jar
end
build scala http://goo.gl/4UQaja
require 'scala_version'
require 'buildr/scala'
require 'dependencies'
repositories.remote << 'http://repo1.maven.org/maven2'
define 'spring-scala' do
project.version = '1.0.0'
project.group = 'org.springframework.scala'
compile.options.javac = ['-feature', '-language:implicitConversions', 'language:reflectiveCalls']
compile.with COMPILE_DEPS
test.using(:scalatest).with('org.hsqldb:hsqldb-j5:jar:2.2.4')
package :jar
end
build groovy http://goo.gl/iO1aVK
require 'buildr/groovy'
groovyVersion = '1.7.5’
Buildr::Groovy::Groovyc::REQUIRES.groovy = groovyVersion
repositories.remote << 'http://repo1.maven.org/maven2'
define 'codenarc' do
project.group = 'org.codenarc'
project.version = '0.19'
compile.from('src/main/java').with 'log4j:log4j:jar:1.2.13', 'org.gmetrics:
GMetrics:jar:0.5', “org.codehaus.groovy:groovy-all:jar:#{groovyVersion}”
compile.from('src/main/groovy').using(:groovyc).with 'junit:junit:jar:4.8.2'
package :jar
end
tests inclusion
➔ test.include "com.package.*" # in
buildfile

➔ buildr test:GoodTest,WorkingTest
➔ buildr test:failed
➔ buildr test=only specific_project:test
tests exclusion
➔ test.exclude ’*BadTest’, ’
*SomeOtherTest*’ # in buildfile

➔ buildr test:-BadTest
➔ buildr test=no
tests for build
define ’some project’ do
project.version = ‘1.11’
project.group = ’company.com’
compile.with # a lot of dependencies
test.compile.with # a lot of dependencies

check package(:jar).entry(’META-INF/MANIFEST’), ’Should have
license’ do
it.should contain(/Copyright (C) 2013/)

end

end
packaging
➔ package :jar # :war, :rar, :ear, :zip, :tar,
:bundle

➔ package(:jar).add project(’client’), :
type=>:jar
➔ package(:war).libs += artifacts(MYSQL)
➔ package(:war).libs -= artifacts(LOG4J)
➔ package(:jar).include _(’docs’), ’
README’
parameterisation
➔ YAML - Ain't Markup Language
➔ YAML is a human friendly data serialization
standard for all programming languages
parameterisation
➔ personal in ~/.buildr/settings.yaml
➔ build in build.yaml
➔ profiles in profiles.yaml
➔ buildr -e env
extension
require 'buildr'
module YourExtension
include Extension

first_time do
# Define task not specific to any project.
end
before_define do |project|
# Define task for this particular project.
end
after_define do |project|
# Do a job
end
end
end
class Buildr::Project
include YourExtension
end
integration with CI/CD
➔ buildr clean install
summary
pros
● fast
● easy to extend
● expressive
● polyglot
● wysiwyg
cons
● ruby knowledge
● pure IDE support
when to use?
● need to easily tweak build/automation
● need flexibility in configuration
● need speed
● or you need something new
when not to use?
● in tough time-line
● your current build is over-customized
● team does not want to learn ruby
getting started
● http://buildr.apache.org/
● http://www.amazon.
com/Buildr/dp/1442160942/
● https://github.com/phoet/buildr-examples
● https://cwiki.apache.
org/confluence/display/BUILDR
q&a
thank you!
- build
like you

code

Izzet Mustafayev@EPAM Systems
@webdizz
http://webdizz.name

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

Daniel Steigerwald: EsteJS - javascriptové aplikace robusně, modulárně a komf...
Daniel Steigerwald: EsteJS - javascriptové aplikace robusně, modulárně a komf...Daniel Steigerwald: EsteJS - javascriptové aplikace robusně, modulárně a komf...
Daniel Steigerwald: EsteJS - javascriptové aplikace robusně, modulárně a komf...
 
Testing Web Apps With Scripting Language - Mark Rees, Century Software
Testing Web Apps With Scripting Language - Mark Rees, Century SoftwareTesting Web Apps With Scripting Language - Mark Rees, Century Software
Testing Web Apps With Scripting Language - Mark Rees, Century Software
 
Daniel Steigerwald - Este.js - konec velkého Schizma
Daniel Steigerwald - Este.js - konec velkého SchizmaDaniel Steigerwald - Este.js - konec velkého Schizma
Daniel Steigerwald - Este.js - konec velkého Schizma
 
"How to Use Bazel to Manage Monorepos: The Grammarly Front-End Team’s Experie...
"How to Use Bazel to Manage Monorepos: The Grammarly Front-End Team’s Experie..."How to Use Bazel to Manage Monorepos: The Grammarly Front-End Team’s Experie...
"How to Use Bazel to Manage Monorepos: The Grammarly Front-End Team’s Experie...
 
Grunt and Bower
Grunt and BowerGrunt and Bower
Grunt and Bower
 
AN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLE
AN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLEAN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLE
AN EXERCISE IN CLEANER CODE - FROM LEGACY TO MAINTAINABLE
 
Front-end development automation with Grunt
Front-end development automation with GruntFront-end development automation with Grunt
Front-end development automation with Grunt
 
Introduction to Express and Grunt
Introduction to Express and GruntIntroduction to Express and Grunt
Introduction to Express and Grunt
 
Grunt - The JavaScript Task Runner
Grunt - The JavaScript Task RunnerGrunt - The JavaScript Task Runner
Grunt - The JavaScript Task Runner
 
What grunt?
What grunt?What grunt?
What grunt?
 
North Virginia Coldfusion User Group Meetup - Testbox - July 19th 2017
North Virginia Coldfusion User Group Meetup - Testbox - July 19th 2017North Virginia Coldfusion User Group Meetup - Testbox - July 19th 2017
North Virginia Coldfusion User Group Meetup - Testbox - July 19th 2017
 
3 WAYS TO TEST YOUR COLDFUSION API
3 WAYS TO TEST YOUR COLDFUSION API3 WAYS TO TEST YOUR COLDFUSION API
3 WAYS TO TEST YOUR COLDFUSION API
 
Headless approach and Acquia - Case study - Chris Ozog
Headless approach and Acquia - Case study - Chris OzogHeadless approach and Acquia - Case study - Chris Ozog
Headless approach and Acquia - Case study - Chris Ozog
 
cf.Objective() 2017 - Design patterns - Brad Wood
cf.Objective() 2017 - Design patterns - Brad Woodcf.Objective() 2017 - Design patterns - Brad Wood
cf.Objective() 2017 - Design patterns - Brad Wood
 
javerosmx-2015-marzo-groovy-java8-comparison
javerosmx-2015-marzo-groovy-java8-comparisonjaverosmx-2015-marzo-groovy-java8-comparison
javerosmx-2015-marzo-groovy-java8-comparison
 
GDG Kraków - Intro to front-end automation using bower.js & grunt.js
GDG Kraków - Intro to front-end automation using bower.js & grunt.jsGDG Kraków - Intro to front-end automation using bower.js & grunt.js
GDG Kraków - Intro to front-end automation using bower.js & grunt.js
 
Continuous Integration for front-end JavaScript
Continuous Integration for front-end JavaScriptContinuous Integration for front-end JavaScript
Continuous Integration for front-end JavaScript
 
Understanding Non Blocking I/O with Python
Understanding Non Blocking I/O with PythonUnderstanding Non Blocking I/O with Python
Understanding Non Blocking I/O with Python
 
Node.js Web Apps @ ebay scale
Node.js Web Apps @ ebay scaleNode.js Web Apps @ ebay scale
Node.js Web Apps @ ebay scale
 
淺談 Geb 網站自動化測試(JCConf 2014)
淺談 Geb 網站自動化測試(JCConf 2014)淺談 Geb 網站自動化測試(JCConf 2014)
淺談 Geb 網站自動化測試(JCConf 2014)
 

Semelhante a Buildr - build like you code

Gradle - time for a new build
Gradle - time for a new buildGradle - time for a new build
Gradle - time for a new build
Igor Khotin
 

Semelhante a Buildr - build like you code (20)

Django dev-env-my-way
Django dev-env-my-wayDjango dev-env-my-way
Django dev-env-my-way
 
Buildr In Action @devoxx france 2012
Buildr In Action @devoxx france 2012Buildr In Action @devoxx france 2012
Buildr In Action @devoxx france 2012
 
Faster Java EE Builds with Gradle
Faster Java EE Builds with GradleFaster Java EE Builds with Gradle
Faster Java EE Builds with Gradle
 
Faster Java EE Builds with Gradle
Faster Java EE Builds with GradleFaster Java EE Builds with Gradle
Faster Java EE Builds with Gradle
 
Grunt training deck
Grunt training deckGrunt training deck
Grunt training deck
 
Vagrant or docker for java dev environment
Vagrant or docker for java dev environmentVagrant or docker for java dev environment
Vagrant or docker for java dev environment
 
Toolbox of a Ruby Team
Toolbox of a Ruby TeamToolbox of a Ruby Team
Toolbox of a Ruby Team
 
Introduction to node.js By Ahmed Assaf
Introduction to node.js  By Ahmed AssafIntroduction to node.js  By Ahmed Assaf
Introduction to node.js By Ahmed Assaf
 
Gradle - time for a new build
Gradle - time for a new buildGradle - time for a new build
Gradle - time for a new build
 
Kubernetes: training micro-dragons for a serious battle
Kubernetes: training micro-dragons for a serious battleKubernetes: training micro-dragons for a serious battle
Kubernetes: training micro-dragons for a serious battle
 
Workshop 3: JavaScript build tools
Workshop 3: JavaScript build toolsWorkshop 3: JavaScript build tools
Workshop 3: JavaScript build tools
 
ENIB 2015 2016 - CAI Web S02E03- Forge JS 1/4 - La forge JavaScript
ENIB 2015 2016 - CAI Web S02E03- Forge JS 1/4 - La forge JavaScriptENIB 2015 2016 - CAI Web S02E03- Forge JS 1/4 - La forge JavaScript
ENIB 2015 2016 - CAI Web S02E03- Forge JS 1/4 - La forge JavaScript
 
DCSF 19 Building Your Development Pipeline
DCSF 19 Building Your Development Pipeline  DCSF 19 Building Your Development Pipeline
DCSF 19 Building Your Development Pipeline
 
Gradle
GradleGradle
Gradle
 
ICONUK 2015 - Gradle Up!
ICONUK 2015 - Gradle Up!ICONUK 2015 - Gradle Up!
ICONUK 2015 - Gradle Up!
 
Deploying software at Scale
Deploying software at ScaleDeploying software at Scale
Deploying software at Scale
 
Developing with-devstack
Developing with-devstackDeveloping with-devstack
Developing with-devstack
 
Bangpypers april-meetup-2012
Bangpypers april-meetup-2012Bangpypers april-meetup-2012
Bangpypers april-meetup-2012
 
Faster java ee builds with gradle [con4921]
Faster java ee builds with gradle [con4921]Faster java ee builds with gradle [con4921]
Faster java ee builds with gradle [con4921]
 
Improving build solutions dependency management with webpack
Improving build solutions  dependency management with webpackImproving build solutions  dependency management with webpack
Improving build solutions dependency management with webpack
 

Mais de Izzet Mustafaiev

Mais de Izzet Mustafaiev (20)

Overcome a Frontier
Overcome a FrontierOvercome a Frontier
Overcome a Frontier
 
Web Security... Level Up
Web Security... Level UpWeb Security... Level Up
Web Security... Level Up
 
Kotlin strives for Deep Learning
Kotlin strives for Deep LearningKotlin strives for Deep Learning
Kotlin strives for Deep Learning
 
Can I do AI?
Can I do AI?Can I do AI?
Can I do AI?
 
Consumer-Driven Contracts to enable API evolution
Consumer-Driven Contracts to enable API evolutionConsumer-Driven Contracts to enable API evolution
Consumer-Driven Contracts to enable API evolution
 
Functional web with elixir and elm in phoenix
Functional web with elixir and elm in phoenixFunctional web with elixir and elm in phoenix
Functional web with elixir and elm in phoenix
 
Fabric8 CI/CD
Fabric8 CI/CDFabric8 CI/CD
Fabric8 CI/CD
 
Don’t let your code to be illiterate along with your colleagues
Don’t let your code to be illiterate along with your colleaguesDon’t let your code to be illiterate along with your colleagues
Don’t let your code to be illiterate along with your colleagues
 
Performance testing for web-scale
Performance testing for web-scalePerformance testing for web-scale
Performance testing for web-scale
 
[Szjug] Docker. Does it matter for java developer?
[Szjug] Docker. Does it matter for java developer?[Szjug] Docker. Does it matter for java developer?
[Szjug] Docker. Does it matter for java developer?
 
Fault tolerance - look, it's simple!
Fault tolerance - look, it's simple!Fault tolerance - look, it's simple!
Fault tolerance - look, it's simple!
 
µServices Architecture @ EPAM WOW 2015
µServices Architecture @ EPAM WOW 2015µServices Architecture @ EPAM WOW 2015
µServices Architecture @ EPAM WOW 2015
 
Continuous Development Pipeline
Continuous Development PipelineContinuous Development Pipeline
Continuous Development Pipeline
 
Gradle - the Enterprise Automation Tool
Gradle  - the Enterprise Automation ToolGradle  - the Enterprise Automation Tool
Gradle - the Enterprise Automation Tool
 
Docker. Does it matter for Java developer ?
Docker. Does it matter for Java developer ?Docker. Does it matter for Java developer ?
Docker. Does it matter for Java developer ?
 
Microservices Architecture
Microservices ArchitectureMicroservices Architecture
Microservices Architecture
 
“Bootify your app - from zero to hero
“Bootify  your app - from zero to hero“Bootify  your app - from zero to hero
“Bootify your app - from zero to hero
 
Metrics by coda hale : to know your app’ health
Metrics by coda hale : to know your app’ healthMetrics by coda hale : to know your app’ health
Metrics by coda hale : to know your app’ health
 
Groovy MOPping
Groovy MOPpingGroovy MOPping
Groovy MOPping
 
Development environment agile way
Development environment agile wayDevelopment environment agile way
Development environment agile way
 

Último

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 

Último (20)

08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
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
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 

Buildr - build like you code

  • 1. - build like you code Izzet Mustafayev@EPAM Systems @webdizz http://webdizz.name
  • 2. this is me ● SA at EPAM Systems ● primary skill is Java ● hands-on-coding with Ruby, Groovy and some Scala ● passionate about agile, clean code practices and devops movement
  • 3. agenda ● introduction ● why does my build tool suck? ● how does it taste? ● integration ● summary ● q&a
  • 4. why does my build tool suck?
  • 5.
  • 6. xml
  • 11. how does it taste?
  • 13. ruby awesome language for scripting, expressive, lightweight rake tasks, files, dependencies buildr projects, lifecycle, artifacts, plugins
  • 14. simple installation steps 1. wget -c http://jruby.org.s3.amazonaws. com/downloads/1.7.5/jruby-bin-1.7.5.zip 2. unzip jruby-bin-1.7.5.zip 3. add JRuby bin folder to PATH 4. gem install buildr
  • 15. help ➔ buildr help # for tasks ➔ buildr --help # for options
  • 17. build java http://goo.gl/pf669x repositories.remote << ’http://repo1.maven.org/maven2’ define ‘junit’ do project.version = ’4.11’ project.group = ’junit’ compile.with 'org.hamcrest:hamcrest-core:jar:1.3' test.compile.with package :jar end
  • 18. build scala http://goo.gl/4UQaja require 'scala_version' require 'buildr/scala' require 'dependencies' repositories.remote << 'http://repo1.maven.org/maven2' define 'spring-scala' do project.version = '1.0.0' project.group = 'org.springframework.scala' compile.options.javac = ['-feature', '-language:implicitConversions', 'language:reflectiveCalls'] compile.with COMPILE_DEPS test.using(:scalatest).with('org.hsqldb:hsqldb-j5:jar:2.2.4') package :jar end
  • 19. build groovy http://goo.gl/iO1aVK require 'buildr/groovy' groovyVersion = '1.7.5’ Buildr::Groovy::Groovyc::REQUIRES.groovy = groovyVersion repositories.remote << 'http://repo1.maven.org/maven2' define 'codenarc' do project.group = 'org.codenarc' project.version = '0.19' compile.from('src/main/java').with 'log4j:log4j:jar:1.2.13', 'org.gmetrics: GMetrics:jar:0.5', “org.codehaus.groovy:groovy-all:jar:#{groovyVersion}” compile.from('src/main/groovy').using(:groovyc).with 'junit:junit:jar:4.8.2' package :jar end
  • 20. tests inclusion ➔ test.include "com.package.*" # in buildfile ➔ buildr test:GoodTest,WorkingTest ➔ buildr test:failed ➔ buildr test=only specific_project:test
  • 21. tests exclusion ➔ test.exclude ’*BadTest’, ’ *SomeOtherTest*’ # in buildfile ➔ buildr test:-BadTest ➔ buildr test=no
  • 22. tests for build define ’some project’ do project.version = ‘1.11’ project.group = ’company.com’ compile.with # a lot of dependencies test.compile.with # a lot of dependencies check package(:jar).entry(’META-INF/MANIFEST’), ’Should have license’ do it.should contain(/Copyright (C) 2013/) end end
  • 23. packaging ➔ package :jar # :war, :rar, :ear, :zip, :tar, :bundle ➔ package(:jar).add project(’client’), : type=>:jar ➔ package(:war).libs += artifacts(MYSQL) ➔ package(:war).libs -= artifacts(LOG4J) ➔ package(:jar).include _(’docs’), ’ README’
  • 24. parameterisation ➔ YAML - Ain't Markup Language ➔ YAML is a human friendly data serialization standard for all programming languages
  • 25.
  • 26. parameterisation ➔ personal in ~/.buildr/settings.yaml ➔ build in build.yaml ➔ profiles in profiles.yaml ➔ buildr -e env
  • 28. require 'buildr' module YourExtension include Extension first_time do # Define task not specific to any project. end before_define do |project| # Define task for this particular project. end after_define do |project| # Do a job end end end class Buildr::Project include YourExtension end
  • 29. integration with CI/CD ➔ buildr clean install
  • 30.
  • 32. pros ● fast ● easy to extend ● expressive ● polyglot ● wysiwyg
  • 33. cons ● ruby knowledge ● pure IDE support
  • 34. when to use? ● need to easily tweak build/automation ● need flexibility in configuration ● need speed ● or you need something new
  • 35. when not to use? ● in tough time-line ● your current build is over-customized ● team does not want to learn ruby
  • 36. getting started ● http://buildr.apache.org/ ● http://www.amazon. com/Buildr/dp/1442160942/ ● https://github.com/phoet/buildr-examples ● https://cwiki.apache. org/confluence/display/BUILDR
  • 37. q&a
  • 38. thank you! - build like you code Izzet Mustafayev@EPAM Systems @webdizz http://webdizz.name