We accept that automating configuration requires a higher initial investment, but saves time and improves reliability from then on. But when it comes to our own work, we often get tangled up in opening tickets, linking them, peer review, running tests, announcing changes… so many tedious tasks that reduce our agility and distract us from the task at hand at exactly the wrong moment. So why not automate them too?
Process contributes to quality, and that’s unavoidable, so we usually accept the tradeoff. I’ve taken automation one step further and automated *everything* I had to do manually so I can focus on the content of my commits. I’ll share the ideas and tools I use when working on Rudder (but the concepts really apply to any development workflow, including infrastructure as code).
2. Normation – Tous droits réservés
CONFIDENTIEL
normation.com
When you have to, create your tool
3. Normation – Tous droits réservés
CONFIDENTIEL
normation.com
Automate quality
A bad workman blames his tools
4. Normation – Tous droits réservés
CONFIDENTIEL
normation.com
Automate quality
A good workman polishes his tools
5. Normation – Tous droits réservés
CONFIDENTIEL
normation.com
Automate quality
A good workman polishes his tools
→ The right tool for the right job
→ Specific tool for specific job
→ Each company process is specific
6. Normation – Tous droits réservés
CONFIDENTIEL
normation.com
Automate quality
Tool benefits is not measured in dollars
→free mind
→free time
→complex things become simple
→process is always followed
→process can evolve more easily
→newcomers can embark quickly
8. Normation – Tous droits réservés
CONFIDENTIEL
normation.com
Automate quality
Real writing costs
Implementation
cost (days)
Time won per
task
Persons using
it
Days per year Time won
(days)
1 1 min 4 200 1
10 10 min 4 200 10
1 20s 12 200 1
9. Normation – Tous droits réservés
CONFIDENTIEL
normation.com
Automate quality
Writing cost
A word about context switch
11. Normation – Tous droits réservés
CONFIDENTIEL
normation.com
Automate quality
Writing cost
A word about context switch
12. Normation – Tous droits réservés
CONFIDENTIEL
normation.com
Automate quality
You can do it now
1. Have APIs
2. Call those API for the task you do the most
3. Find source of information to automatically fill
parameters to this APIs
4. Update your process
5. Rinse and repeat
13. Normation – Tous droits réservés
CONFIDENTIEL
normation.com
Automate quality
I got a tool used by everyone
→We added tasks to the process without
bothering anyone
14. Normation – Tous droits réservés
CONFIDENTIEL
normation.com
Automate quality
Before:
- open an issue (in your browser)
- check that no one else is working on it
- look for the target version, branch and status
- checkout your repo
- create a new branch with a name based on the issue fields
- Code !
- add files
- commit with a comment containing the issue title and ID
- push to your repo
- create a pull request with a meaningful title based on you code and the right branch
- add the PR url to the issue
- assign the issue to a reviewer and change the status
Hope that we are done with the review
15. Normation – Tous droits réservés
CONFIDENTIEL
normation.com
Automate quality
After:
- rudder-dev <issue-id>
- Code !
- add files
- rudder-dev <reviewer>
Be happy to follow the review process
16. Normation – Tous droits réservés
CONFIDENTIEL
normation.com
Automate quality
Other commands: rudder-dev blame
$ rudder-dev blame agent-run
Blaming file agent-run
$ git blame -s -w --abbrev=6 agent-run
8088292 F #5791 1) #!/bin/sh
8088292 F #5791 2) # @description force run agent promises
29c7bc5 F #6659 3) # @man This command will force the agent to enforce current
policies.
29c7bc5 F #6659 4) # @man You can run *rudder agent update* before to update the
promises.
4945a30 F #6731 5) # @man +
4945a30 F #6731 6) # @man *Options*:
4945a30 F #6731 7) # @man +
90002b4 F #7824 8) # @man *-u*: update policy before running the agent (default is
to run existing policy)
17. Normation – Tous droits réservés
CONFIDENTIEL
normation.com
Automate quality
Other commands: rudder-dev quickfix
● Edit a file in a committed repo
● rudder-dev quickfix “there was an issue”
→ A bug is opened with the title
→ A PR is created with the content of the diff
→ done
18. Normation – Tous droits réservés
CONFIDENTIEL
normation.com
Automate quality
Other commands: rudder-dev subtask
An error in your last PR, call rudder-dev subtask !
→ a properly categorized bug is created and linked to the original
issue
→ a branch is then based on this ticket
→ just work on it
19. Normation – Tous droits réservés
CONFIDENTIEL
normation.com
Automate quality
Other commands: rudder-dev revert
A problem has been discovered with a specific PR ?
Call rudder-dev revert
→ it find the commit associated with PR
→ it reverts it
→ it updates the ticket
23. Normation – 87 rue de Turbigo, 75003 PARIS, France –Normation – 87 rue de Turbigo, 75003 PARIS, France – contact@normation.comcontact@normation.com – 01.83.62.26.96 –– 01.83.62.26.96 – http://www.normation.com/http://www.normation.com/
Automate quality
just like you automate servers
Benoît PECCATTE
bpe@normation.com