SlideShare a Scribd company logo
From Zero to Merged
Or how we made it happen with some help
ManageIQ Design Summit June 2016
Agenda
Your excited first day
Our development Environment
On pull requests
Tests
Migrations
Asking for help
First day on the job
TO DO LIST:
Learn
Ruby
Rails
Gems
Haml
RSPEC
Git
Github
Rubocop
I :heart: ruby
It’s a long way ... get support.
RUBY ON RAILS TUTORIAL (3RD ED.) Learn Web Development with Rails -
Michael Hartl
The Rails 4 Way - Fernandez Obie (Autor), Faustino Kevin (Autor)
Our
development
environment
No-frills solution
Setting up your development environment
Read the Developer Setup in ManageIQ
Guides
System packages
Ruby & bundler
Git & Github
Rails environment up and running
Minimum workers
Console
Update dependencies and migrating
Virtual environment
RHEV (Ovirt) - So you can manage it with MIQ (*)
MIQ - What else? - A reference
Satellite - Configuration management - Content distribution
IdM - Identity Management
OpenShift - Friendly PaaS
Ansible - Configuration management
(*) Your source of data
Github
We tried several solutions
We could not make them work for us
WIP / Assignments
You have a tag
[WIP] And a header
MIQ-bot can help
You don’t need access to the repo to change things
Gerrit
We tried that too…
Overkill
Strange case of bleeding eyes
Github code review was enough
CI / CD
TESTING BEFORE PULL
REQUESTS
You can configure travis to run when you
push in your fork (https://travis-ci.org/).
Allows for easier review of your code before
the PR
Same automatic review that will happen for
the PR.
Taiga
https://taiga.io/
On pull
requests
Just do it!
Creating the pull
request
# git checkount -b “my
awesome feature”
<CODE AS A GENTLEMAN>
# git commit -a -m “Let’s
make a useful description
here”
# git rebase
<PULL-REQUEST>
Size matters
Choose the one that applies:
1. Complete functionality (i.e. that big awesome pull request that creates a new chargeback, fixed the
world and praises God at the same time)
2. Independent functionality (i.e. that big pull request that needs others)
3. Something that works (i.e. complete feature but only part of a use case)
4. A small pull request (i.e. nothing works here but it is fine)
Does it have tests? Many?
Is it commented?
Is it documented?
Are the commits showing a logical sequence?
Tests
Tests on your laptop
Guidelines for Rspec http://betterspecs.org/
Rubocop http://batsov.com/rubocop/
Dedicate some time to learn them….
Because...
Why make a nice test?
Day 1
There is a new merge in code.
Commits broken code the day before
release that makes your code fail.
Day 2
You don’t know where the problem is
You only see...
Day 2
You don’t know where the problem is
You only see...
How to solve minimize that?
Learn Rspec
Test your code in every aspect with Rspec
Happy path
Not so happy path
Edge cases
That case that happens when somebody else changes
his/yours/other’s code
Make sure your code won’t fail in the future
Untested code
is broken code
Martin Aspeli
Philipp von Weitershausen
Migrations
Backwards compatibility
You need to migrate the model
And test it
But you need to migrate the data too (i.e. those ~2k VM)
And test that, too!
And it is possible that you want to go back
And you should test that
Have we talked about
backporting? (we don’t)
Even if you don’t
Asking for help
(CC BY 2.0) https://www.flickr.com/photos/30793552@N04/6237765131/in/photostream/
Never give up
You’re not alone
talk.manageiq.org
Expose your problem
Ask the community
IRC
I haven’t seen too much activity there… (so see next slide)
#manageiq in freenode
Github
There is a lot of interaction within pull-requests
You can refer to @people
And to #issues
It is an iterative process
Gitter
Active community with many channels:
UI
Chargeback
Tenancy
Providers
Core
Automate
Containers
Performance
...
ManageIQ Spain Team
e-mail: alvaro.delaluz@neartechnologies.com
github: @delaluzparra
e-mail: aljesusg@gmail.com
github: @aljesusg
ManageIQ Spain Team
e-mail: Tamledric@gmail.com
github: @tledesma
e-mail: amaury.muro@gmail.com
github: @amaurygonzalez
Thank you!

More Related Content

ODP
Elixir koans
PDF
TDD as if You Meant It (2013)
PDF
npm packages from npm init to npm publish
PDF
Software Craftsmanship Journeyman Tour (2013)
PDF
Perl wants you
PDF
Git hooks For PHP Developers
PPTX
Boosting python web apps with protocol buffers &amp; grpc
PDF
Code Quality Assurance v4 (2013)
Elixir koans
TDD as if You Meant It (2013)
npm packages from npm init to npm publish
Software Craftsmanship Journeyman Tour (2013)
Perl wants you
Git hooks For PHP Developers
Boosting python web apps with protocol buffers &amp; grpc
Code Quality Assurance v4 (2013)

What's hot (14)

PDF
The Brutal Refactoring Game (2013)
PDF
Idiomatic R for Rosetta Code (2013)
PDF
Serving ML easily with FastAPI - meme version
PDF
Creating an api from design to security.
PDF
How to ship web software like pirates!
PDF
Jumping in Jakarta Open Source Project Everything nobody tells you
PDF
Salvatore Sanfilippo - Running Redis for 8 years: what I learned about people...
PDF
iRail at hack democracy
PDF
Hacktoberfest - An Open Source Story
PDF
Designing Test Cases for the Gilded Rose Kata (2013)
PDF
Serving ML easily with FastAPI
KEY
PHP, Lithium and MongoDB
PDF
Puppet Camp NYC 2014: Safely storing secrets and credentials in Git for use b...
PPTX
Advantages of Python Learning | Why Python
The Brutal Refactoring Game (2013)
Idiomatic R for Rosetta Code (2013)
Serving ML easily with FastAPI - meme version
Creating an api from design to security.
How to ship web software like pirates!
Jumping in Jakarta Open Source Project Everything nobody tells you
Salvatore Sanfilippo - Running Redis for 8 years: what I learned about people...
iRail at hack democracy
Hacktoberfest - An Open Source Story
Designing Test Cases for the Gilded Rose Kata (2013)
Serving ML easily with FastAPI
PHP, Lithium and MongoDB
Puppet Camp NYC 2014: Safely storing secrets and credentials in Git for use b...
Advantages of Python Learning | Why Python
Ad

Similar to First Pull Request - Sergio Ocon - ManageIQ Design Summit 2016 (20)

PDF
Basic Rails Training
PDF
A Git MVP Workflow
PPTX
Sprint 16 report
PDF
Download full ebook of Zero To Production In Rust Luca Palmieri instant downl...
PDF
Git Makes Me Angry Inside
PPTX
SELF - Becoming a Rails Developer - The Rest of the Story
PDF
Git best practices 2016
PDF
Real World Git Workflows - EclipseCon Europe 2013
PDF
Dev with github enterprise
PDF
Selected Sessions from RailsConf 2007
PPTX
DCRUG: Achieving Development-Production Parity
KEY
40 square's git workflow
PDF
Git & Code review
PPTX
ManageIQ - Sprint 256 Review - Slide Deck
PDF
Scaling Up Lookout
KEY
Production is a bitch
PDF
Agile & ALM tools
PDF
Empowered productivity
PDF
Git best practices workshop
PDF
Mwalls velocity levelup
Basic Rails Training
A Git MVP Workflow
Sprint 16 report
Download full ebook of Zero To Production In Rust Luca Palmieri instant downl...
Git Makes Me Angry Inside
SELF - Becoming a Rails Developer - The Rest of the Story
Git best practices 2016
Real World Git Workflows - EclipseCon Europe 2013
Dev with github enterprise
Selected Sessions from RailsConf 2007
DCRUG: Achieving Development-Production Parity
40 square's git workflow
Git & Code review
ManageIQ - Sprint 256 Review - Slide Deck
Scaling Up Lookout
Production is a bitch
Agile & ALM tools
Empowered productivity
Git best practices workshop
Mwalls velocity levelup
Ad

More from ManageIQ (20)

PPTX
ManageIQ - Sprint 268 Review - Slide Deck
PPTX
ManageIQ - Sprint 267 Review - Slide Deck
PPTX
ManageIQ - Sprint 266 Review - Slide Deck
PPTX
ManageIQ - Sprint 265 Review - Slide Deck
PPTX
ManageIQ - Sprint 264 Review - Slide Deck
PPTX
ManageIQ - Sprint 263 Review - Slide Deck
PPTX
ManageIQ - Sprint 262 Review - Slide Deck
PPTX
ManageIQ - Sprint 260 & 261 Review - Slide Deck
PPTX
ManageIQ - Sprint 259 Review - Slide Deck
PPTX
ManageIQ - Sprint 258 Review - Slide Deck
PPTX
ManageIQ - Sprint 257 Review - Slide Deck
PPTX
ManageIQ - Sprint 255 Review - Slide Deck
PPTX
ManageIQ - Sprint 254 Review - Slide Deck
PPTX
ManageIQ - Sprint 247 Review - Slide Deck
PPTX
ManageIQ - Sprint 253 Review - Slide Deck
PPTX
ManageIQ - Sprint 252 Review - Slide Deck
PPTX
ManageIQ - Sprint 251 Review - Slide Deck
PPTX
ManageIQ - Sprint 250 Review - Slide Deck
PPTX
ManageIQ - Sprint 249 Review - Slide Deck
PPTX
ManageIQ - Sprint 248 Review - Slide Deck
ManageIQ - Sprint 268 Review - Slide Deck
ManageIQ - Sprint 267 Review - Slide Deck
ManageIQ - Sprint 266 Review - Slide Deck
ManageIQ - Sprint 265 Review - Slide Deck
ManageIQ - Sprint 264 Review - Slide Deck
ManageIQ - Sprint 263 Review - Slide Deck
ManageIQ - Sprint 262 Review - Slide Deck
ManageIQ - Sprint 260 & 261 Review - Slide Deck
ManageIQ - Sprint 259 Review - Slide Deck
ManageIQ - Sprint 258 Review - Slide Deck
ManageIQ - Sprint 257 Review - Slide Deck
ManageIQ - Sprint 255 Review - Slide Deck
ManageIQ - Sprint 254 Review - Slide Deck
ManageIQ - Sprint 247 Review - Slide Deck
ManageIQ - Sprint 253 Review - Slide Deck
ManageIQ - Sprint 252 Review - Slide Deck
ManageIQ - Sprint 251 Review - Slide Deck
ManageIQ - Sprint 250 Review - Slide Deck
ManageIQ - Sprint 249 Review - Slide Deck
ManageIQ - Sprint 248 Review - Slide Deck

Recently uploaded (20)

PDF
NewMind AI Monthly Chronicles - July 2025
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Empathic Computing: Creating Shared Understanding
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Encapsulation theory and applications.pdf
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Machine learning based COVID-19 study performance prediction
PDF
Approach and Philosophy of On baking technology
NewMind AI Monthly Chronicles - July 2025
Dropbox Q2 2025 Financial Results & Investor Presentation
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
Reach Out and Touch Someone: Haptics and Empathic Computing
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Per capita expenditure prediction using model stacking based on satellite ima...
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Empathic Computing: Creating Shared Understanding
Understanding_Digital_Forensics_Presentation.pptx
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
CIFDAQ's Market Insight: SEC Turns Pro Crypto
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
“AI and Expert System Decision Support & Business Intelligence Systems”
Encapsulation theory and applications.pdf
Unlocking AI with Model Context Protocol (MCP)
The Rise and Fall of 3GPP – Time for a Sabbatical?
MYSQL Presentation for SQL database connectivity
Network Security Unit 5.pdf for BCA BBA.
Machine learning based COVID-19 study performance prediction
Approach and Philosophy of On baking technology

First Pull Request - Sergio Ocon - ManageIQ Design Summit 2016

  • 1. From Zero to Merged Or how we made it happen with some help ManageIQ Design Summit June 2016
  • 2. Agenda Your excited first day Our development Environment On pull requests Tests Migrations Asking for help
  • 3. First day on the job TO DO LIST: Learn Ruby Rails Gems Haml RSPEC Git Github Rubocop
  • 4. I :heart: ruby It’s a long way ... get support. RUBY ON RAILS TUTORIAL (3RD ED.) Learn Web Development with Rails - Michael Hartl The Rails 4 Way - Fernandez Obie (Autor), Faustino Kevin (Autor)
  • 6. Setting up your development environment Read the Developer Setup in ManageIQ Guides System packages Ruby & bundler Git & Github Rails environment up and running Minimum workers Console Update dependencies and migrating
  • 7. Virtual environment RHEV (Ovirt) - So you can manage it with MIQ (*) MIQ - What else? - A reference Satellite - Configuration management - Content distribution IdM - Identity Management OpenShift - Friendly PaaS Ansible - Configuration management (*) Your source of data
  • 8. Github We tried several solutions We could not make them work for us WIP / Assignments You have a tag [WIP] And a header MIQ-bot can help You don’t need access to the repo to change things
  • 9. Gerrit We tried that too… Overkill Strange case of bleeding eyes Github code review was enough
  • 10. CI / CD TESTING BEFORE PULL REQUESTS You can configure travis to run when you push in your fork (https://travis-ci.org/). Allows for easier review of your code before the PR Same automatic review that will happen for the PR.
  • 13. Creating the pull request # git checkount -b “my awesome feature” <CODE AS A GENTLEMAN> # git commit -a -m “Let’s make a useful description here” # git rebase <PULL-REQUEST>
  • 14. Size matters Choose the one that applies: 1. Complete functionality (i.e. that big awesome pull request that creates a new chargeback, fixed the world and praises God at the same time) 2. Independent functionality (i.e. that big pull request that needs others) 3. Something that works (i.e. complete feature but only part of a use case) 4. A small pull request (i.e. nothing works here but it is fine) Does it have tests? Many? Is it commented? Is it documented? Are the commits showing a logical sequence?
  • 15. Tests
  • 16. Tests on your laptop Guidelines for Rspec http://betterspecs.org/ Rubocop http://batsov.com/rubocop/ Dedicate some time to learn them…. Because...
  • 17. Why make a nice test?
  • 18. Day 1 There is a new merge in code. Commits broken code the day before release that makes your code fail.
  • 19. Day 2 You don’t know where the problem is You only see...
  • 20. Day 2 You don’t know where the problem is You only see...
  • 21. How to solve minimize that? Learn Rspec Test your code in every aspect with Rspec Happy path Not so happy path Edge cases That case that happens when somebody else changes his/yours/other’s code Make sure your code won’t fail in the future
  • 22. Untested code is broken code Martin Aspeli Philipp von Weitershausen
  • 24. Backwards compatibility You need to migrate the model And test it But you need to migrate the data too (i.e. those ~2k VM) And test that, too! And it is possible that you want to go back And you should test that Have we talked about backporting? (we don’t) Even if you don’t
  • 25. Asking for help (CC BY 2.0) https://www.flickr.com/photos/30793552@N04/6237765131/in/photostream/
  • 29. IRC I haven’t seen too much activity there… (so see next slide) #manageiq in freenode
  • 30. Github There is a lot of interaction within pull-requests You can refer to @people And to #issues It is an iterative process
  • 31. Gitter Active community with many channels: UI Chargeback Tenancy Providers Core Automate Containers Performance ...
  • 32. ManageIQ Spain Team e-mail: alvaro.delaluz@neartechnologies.com github: @delaluzparra e-mail: aljesusg@gmail.com github: @aljesusg
  • 33. ManageIQ Spain Team e-mail: Tamledric@gmail.com github: @tledesma e-mail: amaury.muro@gmail.com github: @amaurygonzalez