From 3f0664aa6c77260711e53c4375e7b889bd7def84 Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Tue, 12 Mar 2019 11:05:32 +0200 Subject: Change: update based on feedback --- slides.md | 150 +++++++++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 99 insertions(+), 51 deletions(-) (limited to 'slides.md') diff --git a/slides.md b/slides.md index 44ae169..575ba0f 100644 --- a/slides.md +++ b/slides.md @@ -1,7 +1,21 @@ -Continuous fun +Continuous fun with Ick ----------------------------------------------------------------------------- -https://ick.liw.fi +Lars Wirzenius + +--- + +Demo +----------------------------------------------------------------------------- + +Ask me for access to demo instance + +Note: +* apologize for the 90s aesthetic +* show web interface +* projects, a project +* builds +* build log --- @@ -10,8 +24,9 @@ Ick? * Continuous integration, delivery, and deployment * See "**Continuous Delivery**", by Humble, Farley -* Free software, of course (AGPL3+) -* Aims to be nice to install, run, admin, use, ... +* Aims to be nice to install, run, admin, use +* Aims to be powerful but simple +* Not there yet Note: * you push changes to git server @@ -20,12 +35,28 @@ Note: vvv -* My current hobby project. One of many. - * a couple of contributors, aiming to grow -* "I used a Jenkins, and I didn't like it." +WHY? +----------------------------------------------------------------------------- + +* Needed something for myself +* Fed up with Jenkins * implementation irritants * architecture annoyances. +* Wrote a simplistic replacement in two weeks + * command line tool, not service + * fragile, but worked well enough for me + +vvv + +* Decided to make a **good** CI engine and service + * this will be the best software I ever write * "NIH is strong with this one." + * did not like anything I looked at, but not an extensive survey + * language (don't like Java, Go) + * architecture (don't like Docker) +* My current hobby project. One of many. + * a couple of contributors, aiming to grow + * my new main project, after retiring Obnam Note: * I like to write my own crappy code, not configure other people's @@ -35,15 +66,22 @@ Note: --- -Highlights +Not ready for you ----------------------------------------------------------------------------- +* Seriously not ready +* Unless you like fixing things * ALPHA quality software * slow, lacks features, buggy, ... -* Builds can happen on the host natively, or in a systemd-nspawn - container + +--- + +Highlights +----------------------------------------------------------------------------- + +* Builds natively on the host, or in a systemd-nspawn container * In my own active use - * builds, tests my software + * builds, tests all my software * builds, publishes .deb packages of my software * builds my websites from source in git * A demo instance with restricted access @@ -54,14 +92,44 @@ Note: --- -Some day, hopefully +Tech stack +----------------------------------------------------------------------------- + +* Python 3, gunicorn, bottle.py, python-requests + * haproxy for TLS +* data storage + * files on disk, for now + * switching to Muck, a custom key-to-JSON store + +* Looking at switching to Rust instead of Python + +--- + +Project +----------------------------------------------------------------------------- + +* source: [git.liw.fi](http://git.liw.fi/ick2/) +* homepage: [ick.liw.fi](https://ick.liw.fi/) + * [bugs](https://ick.liw.fi/issues/), + [contact](https://ick.liw.fi/contact/), + [roadmap](https://ick.liw.fi/roadmap/) +* license: Affero GPL v3 or later +* governance based on voting +* Contributor Covenant Code of Conduct +* explicit development iterations +* weird bug tracker (email+git) + +--- + +Some day in the future ----------------------------------------------------------------------------- * **Hostable**: secure, safe, reliable +* **Hosted**: open registration, free for free stuff * **Distributed, federated**: a healthy ecosystem of providers of components * **Scalable**: large projects (Debian), many projects ("the world's CI") -* **Fast**: minor overhead compared to local build+test +* **Fast**: nearly no overhead over local build+test * **Fun**: to use, not just to develop vvv @@ -75,53 +143,33 @@ Architecture -Note: -* multiple components running on different hosts, communicating over - HTTP using RESTful APIs and JSON -* controller - keeps track what to do, which worker is doing what -* worker and worker-manager - actually do -* qvisqve - authenticates users, API clients (OAuth2, OIDC) -* artifact store - stores blobs, any large files -* apt - .deb packages (automatically uploaded) -* notification service - tells people builds have finished -* muck - stores JSON objects, with ownership and access control +vvv + +* multiple components, potentially running on different hosts, + communicating over HTTPS using RESTful APIs and JSON, authenticating + via OAuth2, OpenID Connect +* **controller** - what to build, what's building now +* worker and **worker-manager** - actually build +* **qvisqve** - authenticate users, API clients (OAuth2, OIDC) +* **artifact store** - stores workspace, any build artifacts +* **apt** - .deb package repository +* **notification service** - tell people builds have finished --- -Plans +Near future plans ----------------------------------------------------------------------------- -* good web UI - react; contributors are starting +* good web UI - react; work is starting * trigger service - tells controller when to start builds + * gets change events from git server, etc + * only for change to master? + * every night? + * when dependencies build successfully? * yuck - replace qvisqve for authentication * rock - new artifact store -Note: -* web UI: react -* TS: - * security, choosy on git changes, trigger multiple projects on - one change - * trigger builds when dependencies change - * trigger builds on schedule - * other new triggers -* rewrite in Rust -* make things friendly to users, sysadmins -* make things fast - ---- - -Demo ------------------------------------------------------------------------------ - -Note: -* use demo instance -* icktool -* ickweb - --- -SEE ALSO +Thank you ----------------------------------------------------------------------------- - -* https://ick.liw.fi/ -* Ask me for access to demo instance -- cgit v1.2.1