Architecture decision records - How not to get lost in the past
smalltalkCI: A Continuous Integration Framework for Smalltalk Projects
1. smalltalkCI
A Continuous Integration Framework for Smalltalk Projects
Fabio Niephaus
Hasso Plattner Institute
University of Potsdam, Germany
fabio.niephaus@student.hpi.de
Dale Henrichs
GemTalk Systems
dale.henrichs@gemtalksystems.com
Marcel Taeumel
Hasso Plattner Institute
University of Potsdam, Germany
marcel.taeumel@hpi.de
Tobias Pape
Hasso Plattner Institute
University of Potsdam, Germany
tobias.pape@hpi.de
Tim Felgentreff
Hasso Plattner Institute
University of Potsdam, Germany
tim.felgentreff@hpi.de
Robert Hirschfeld
Hasso Plattner Institute
University of Potsdam, Germany
robert.hirschfeld@hpi.de
IWST 2016, Prague, Czech Republic 08/23/2016
2. Software Architecture Group (www.hpi.uni-potsdam.de/swa) 2006-present
smalltalkCI – Paper Presentation – IWST ‘16
Our Motivation
SWE lectures
• Student teams work on a project in Squeak/Smalltalk
• Introduction to:
– Version Control Management Systems
– Continuous Integration
2
3. Software Architecture Group (www.hpi.uni-potsdam.de/swa) 2006-present
smalltalkCI – Paper Presentation – IWST ‘16
GitHub
• Hosting platform for Git repositories
• Features
– Issue tracking
– Wiki
– Markdown
– Pull Requests and Forking
– Integrations (e.g. Slack, Trello, ...)
– …
3
4. Software Architecture Group (www.hpi.uni-potsdam.de/swa) 2006-present
smalltalkCI – Paper Presentation – IWST ‘16
TravisCI
• Hosted, distributed continuous integration service for
project hosted at GitHub
• Features
– Builds project after each code push
– Free for public repositories
– Supports a broad range of programming languages
(including Smalltalk) and build environments
– Notifications via Email/Slack/IRC/Webhooks/…
– Automatic deployment after successful builds
– …
4
5. Software Architecture Group (www.hpi.uni-potsdam.de/swa) 2006-present
smalltalkCI – Paper Presentation – IWST ‘16
Toolchain For Students
5
Local
Repository
Remote
Repository
TravisCI
running
builderCI
Metacello Package Manager
Squeak Project
FileTree
6. Software Architecture Group (www.hpi.uni-potsdam.de/swa) 2006-present
smalltalkCI – Paper Presentation – IWST ‘16
Some Design Goals And Decisions
• Compatible to different Smalltalk dialects
• Fast feedback loop
• Lightweight
– Few dependencies
– Small bootstrapping code base and total file size
• Reliable
– Self-contained (minimum number of external resources)
– Perform self-tests (“Eat your own dog food”)
– Dedicated config file (similar to Gemfile or package.json)
• Extensible
– Easy to add features and support other dialects/environments
• Debuggable
– Various debug options
– Reproducible builds
6
7. Software Architecture Group (www.hpi.uni-potsdam.de/swa) 2006-present
smalltalkCI – Paper Presentation – IWST ‘16
Smalltalk Support on TravisCI
7
8. Software Architecture Group (www.hpi.uni-potsdam.de/swa) 2006-present
smalltalkCI – Paper Presentation – IWST ‘16
EXAMPLE PROJECT
8
9. Software Architecture Group (www.hpi.uni-potsdam.de/swa) 2006-present
smalltalkCI – Paper Presentation – IWST ‘16
9
10. Software Architecture Group (www.hpi.uni-potsdam.de/swa) 2006-present
smalltalkCI – Paper Presentation – IWST ‘16
Example .smalltalk.ston
10
For full documentation, check out smalltalkCI’s README.md.
11. Software Architecture Group (www.hpi.uni-potsdam.de/swa) 2006-present
smalltalkCI – Paper Presentation – IWST ‘16
Example .travis.yml
11
12. Software Architecture Group (www.hpi.uni-potsdam.de/swa) 2006-present
smalltalkCI – Paper Presentation – IWST ‘16
Seaside On TravisCI
12
13. Software Architecture Group (www.hpi.uni-potsdam.de/swa) 2006-present
smalltalkCI – Paper Presentation – IWST ‘16
Seaside On TravisCI
13
14. Software Architecture Group (www.hpi.uni-potsdam.de/swa) 2006-present
smalltalkCI – Paper Presentation – IWST ‘16
Build Failure Example
14
15. Software Architecture Group (www.hpi.uni-potsdam.de/swa) 2006-present
smalltalkCI – Paper Presentation – IWST ‘16
Projects Using smalltalkCI
15
16. Software Architecture Group (www.hpi.uni-potsdam.de/swa) 2006-present
smalltalkCI – Paper Presentation – IWST ‘16
FUTURE WORK
16
17. Software Architecture Group (www.hpi.uni-potsdam.de/swa) 2006-present
smalltalkCI – Paper Presentation – IWST ‘16
Try Out More CI Services
17
GitLab CI
…
18. Software Architecture Group (www.hpi.uni-potsdam.de/swa) 2006-present
smalltalkCI – Paper Presentation – IWST ‘16
Add More Smalltalk Images
18
Moose
…
Cuis Etoys
19. Software Architecture Group (www.hpi.uni-potsdam.de/swa) 2006-present
smalltalkCI – Paper Presentation – IWST ‘16
Support for Different VMs
19
SqueakJS RSqueak/VMOpenSmalltalkVM
(e.g. latest + stable)
…
20. Software Architecture Group (www.hpi.uni-potsdam.de/swa) 2006-present
smalltalkCI – Paper Presentation – IWST ‘16
Improve Tooling For Git
• Get rid of two-commit workflow
• Use metadata-less FileTree by default
20
21. Software Architecture Group (www.hpi.uni-potsdam.de/swa) 2006-present
smalltalkCI – Paper Presentation – IWST ‘16
Simplify First Steps
• Uniform way to load projects from GitHub
• One-click tryout in browser via SqueakJS
21
22. Software Architecture Group (www.hpi.uni-potsdam.de/swa) 2006-present
smalltalkCI – Paper Presentation – IWST ‘16
Conclusion
smalltalkCI…
• makes it easy to CI test Smalltalk projects
• enables easy access to free CI services
• runs locally and provides various debugging options
• is already used by more than 100 projects on GitHub
22
23. Software Architecture Group (www.hpi.uni-potsdam.de/swa) 2006-present
smalltalkCI – Paper Presentation – IWST ‘16
Contribute!
Questions? Ideas?
23