1+ ⬆️ For table of contents, click the above icon
2+
13![ ] ( misc/mascot/mascot.png )
24
35![ Build status] ( https://github.com/function61/turbobob/workflows/Build/badge.svg )
46[ ![ Download] ( https://img.shields.io/github/downloads/function61/turbobob/total.svg?style=for-the-badge )] ( https://github.com/function61/turbobob/releases )
57
68Modern, minimal container-based build/development tool to make any project´s dev easy and
7- frictionless. Note: while Bob uses containers for builds (and dev), your programs don't need
8- to use containers!
9+ frictionless.
10+
11+ Note: while Bob uses containers for builds (and dev), your programs themselves don't need to use containers!
912
1013![ ] ( docs/demo-screencast.gif )
1114
12- Contents:
13-
14- - [ What is this?] ( #what-is-this )
15- - Documentation (as separate documents)
16- * [ Using Bob in your project] ( docs/using-bob-in-your-project/README.md ) (also covers
17- making your own builder images - "buildkits")
18- * [ ENV vars passed to build containers] ( docs/env-vars-passed-to-build-containers/README.md )
19- * [ Displaying pro-tips on entering the dev environment] ( docs/dev-pro-tips/README.md ) (also covers mapping network ports)
20- * [ Development-time HTTP ingresses] ( docs/development-time-http-ingresses/README.md ) (routing HTTP requests)
21- * [ Customizing dev container startup] ( docs/customizing-dev-container-startup/README.md )
22- * [ Language server support] ( docs/language-server-support/README.md ) (code completion, analysis, refactoring support etc. for code editors)
23- * [ Quality helpers] ( docs/quality-helpers/README.md ) (multi-project quality scalability by automatically checking standards-compliance like having README, LICENSE, security policy etc.)
24- - [ Philosophy] ( #philosophy )
25- - [ Install] ( #install )
26- * [ Linux] ( #linux )
27- * [ Windows] ( #windows )
28- * [ Mac] ( #mac )
29- - [ Supported build/CI platforms] ( #supported-build-ci-platforms )
30- * [ Your own computer] ( #your-own-computer )
31- * [ GitHub actions] ( #github-actions )
32- * [ Travis CI] ( #travis-ci )
33- * [ GitLab] ( #gitlab )
34- * [ Other CI systems] ( #other-ci-systems )
35- - [ Examples / how does it work?] ( #examples--how-does-it-work )
36- * [ Examples] ( #examples )
37- * [ How does turbobob.json work?] ( #how-does-turbobobjson-work )
38- * [ Why multiple buildkits?] ( #why-multiple-buildkits )
39- - [ Alternative software] ( #alternative-software )
15+
16+ Additional documentation
17+ ------------------------
18+
19+ - [ Using Bob in your project] ( docs/using-bob-in-your-project/README.md ) (also covers
20+ making your own builder images - "buildkits")
21+ - [ ENV vars passed to build containers] ( docs/env-vars-passed-to-build-containers/README.md )
22+ - [ Displaying pro-tips on entering the dev environment] ( docs/dev-pro-tips/README.md ) (also covers mapping network ports)
23+ - [ Development-time HTTP ingresses] ( docs/development-time-http-ingresses/README.md ) (routing HTTP requests)
24+ - [ Customizing dev container startup] ( docs/customizing-dev-container-startup/README.md )
25+ - [ Language server support] ( docs/language-server-support/README.md ) (code completion, analysis, refactoring support etc. for code editors)
26+ - [ Quality helpers] ( docs/quality-helpers/README.md ) (multi-project quality scalability by automatically checking standards-compliance like having README, LICENSE, security policy etc.)
4027
4128
4229What is this?
@@ -89,8 +76,8 @@ Philosophy
8976 build & CI environment. What's built on dev (` $ bob build ` ) is exactly the same or as
9077 close as possible (` $ bob build --uncommitted ` ) as to what will end up running in production.
9178
92- - No vendor lock-in for a CI system. Bob can seamlessly build projects on your laptop, Jenkins ,
93- Travis , GitLab etc. CI needs to only provide the working directory and Docker - everything
79+ - No vendor lock-in for a CI system. Bob can seamlessly build projects on your laptop, GitHub actions ,
80+ Jenkins , GitLab etc. CI needs to only provide the working directory and Docker - everything
9481 else like uploading artefacts to S3, Bintray etc. should be a build container concern to
9582 provide full independence.
9683
@@ -104,7 +91,7 @@ Requires Docker for use, so currently only Linux is supported. Native Windows su
10491come later as Windows' Linux subsystem keeps maturing.
10592
10693``` console
107- $ sudo curl --location --fail --output /usr/local/ bin/bob https://function61.com/go/turbobob-latest-linux-amd64 && sudo chmod +x /usr/local /bin/bob
94+ $ sudo curl --location --fail --output /usr/bin/bob https://function61.com/go/turbobob-latest-stable- linux-amd64 && sudo chmod +x /usr/bin/bob
10895```
10996
11097### Windows
@@ -132,7 +119,7 @@ Basic approach anywhere:
132119
1331201 . Have Docker installed
1341212 . If you don't have Turbo Bob installed, download it
135- 3 . Run ` $ bob build `
122+ 3 . Run ` $ bob build ` (i.e. hand off build to it)
136123
137124
138125### Your own computer
@@ -142,9 +129,7 @@ If your system can run Docker locally, you can build projects on your own comput
142129
143130### GitHub actions
144131
145- See [ example actions workflow file] ( https://github.com/function61/buildkit-publisher/commit/62f1b71ed6a17489394ccd431763ee36c958fb92 ) .
146- That commit also demonstrates how portable Bob is by moving from Travis CI -> GitHub
147- actions - how it's just from small boilerplate to small boilerplate.
132+ See [ example actions workflow file] ( .github/workflows/build.yml ) .
148133
149134GitHub actions' design is pretty similar to Turbo Bob's design ("run stuff inside containers").
150135I started this project before actions was announced, so unfortunately there's currently no
@@ -159,13 +144,16 @@ I've built projects on GitLab's public runners with Bob. See
159144[ example configuration] ( https://github.com/function61/turbobob/blob/8156ab2bc400181cb74b8ea324fa98a3fb9e82d2/cmd/bob/init.go#L56 ) .
160145
161146
162- ### Other CI systems
147+ ### Other CI systems, vendor lock-in
148+
149+ Bob's approach is pretty generic (as documented under the above larger heading).
163150
164- Bob's approach is pretty generic. You can see from Travis or GitLab configuration files
165- that they just download Bob's binary first and hand off build to it.
151+ Here's a commit demonstrating how portable Bob is by
152+ [ moving from Travis CI -> GitHub actions] ( https://github.com/function61/buildkit-publisher/commit/62f1b71ed6a17489394ccd431763ee36c958fb92 ) -
153+ how it's just from small boilerplate to small boilerplate. This prevents vendor lock-in.
154+ (NOTE: GitHub actions boilerplate has since been [ updated] ( .github/workflows/build.yml ) ).
166155
167- Bob internally pretty much just calls ` $ docker ` commands, so you should be able to port
168- Bob anywhere where you've got Docker. If you've done so, please add details here to help others.
156+ If you've added support to other public CI systems, please add links to here for instructions!
169157
170158
171159Examples / how does it work?
@@ -198,23 +186,21 @@ container images ("buildkits") for builds:
198186The process is exactly the same whether you use a different CI system. You can even run
199187builds exactly the same way on your laptop by just running ` $ bob build ` .
200188
201- This very project is built with Bob on Travis. Its [ Travis configuration] ( .travis .yml ) is
189+ This very project is built with Bob on GitHub actions. The [ workflow configuration] ( .github/workflows/build .yml ) is
202190minimal. Here's what happens when a new commit lands in this repo:
203191
204- - GitHub notifies Travis of a new commit
205- - Travis clones repo, reads [ .travis.yml] ( .travis.yml ) which:
206- * Requires Docker
192+ - GitHub actions start processing the build workflow file which:
207193 * Downloads Turbo Bob
208- * Copies ` TRAVIS_COMMIT ` ENV variable to ` CI_REVISION_ID `
209194 * Hands off build process to Bob
210195- Bob reads [ turbobob.json] ( turbobob.json ) , which instructs to:
211196 * Run container off of image ` fn61/buildkit-golang `
212197 ([ repo] ( https://github.com/function61/buildkit-golang ) ) and run
213- [ bin/build.sh] ( bin/build.sh ) inside it.
198+ [ build-go-project.sh] ( https://github.com/function61/buildkit-golang/blob/a687e81c0c7e4ca76e759d2f521a696732d2d98e/build-go-project.sh )
199+ (defined by the buildkit) inside it. We could of course store the build script in our own repo,
200+ but it's advantageous to have it defined by the buildkit, so improvements can "automatically" ship to multiple projects.
214201 * For publishing step, run container off of image ` fn61/buildkit-publisher `
215202 ([ repo] ( https://github.com/function61/buildkit-publisher ) ) and run ` publish.sh rel/ `
216- inside it (that shell script is from the image itself, while the build container's
217- ` build.sh ` was from our repo)
203+ inside it (again defined by the buildkit)
218204
219205
220206### Why multiple buildkits?
0 commit comments