Continuous fun ----------------------------------------------------------------------------- https://ick.liw.fi --- 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, ... Note: * you push changes to git server * this triggers ick * ick gets code from git server, builds, tests, deploys 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." * implementation irritants * architecture annoyances. * "NIH is strong with this one." Note: * I like to write my own crappy code, not configure other people's silly stuff. * Turns out there's many options now, and I can afford to pay for cloudy stuff. Might not start Ick now. --- Highlights ----------------------------------------------------------------------------- * ALPHA quality software * slow, lacks features, buggy, ... * In my own active use * builds, tests my software * builds, publishes .deb packages of my software * builds my websites from source in git * A demo instance with restricted access Note: * still feeling my way forward to what a good solution should be like --- Some day, hopefully ----------------------------------------------------------------------------- * **Hostable**: secure, safe, reliable * **Distributed, federated**: a healthy eco system of providers of components * **Scalable**: large projects (Debian), many projects ("the world's CI") * **Fast**: minor overhead compared to local build+test * **Fun**: to use, not just to develop --- 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 --- Plans ----------------------------------------------------------------------------- * good web UI - react; contributors are starting * trigger service - tells controller when to start builds * yuck - replace qvisqve for authn * 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 ----------------------------------------------------------------------------- * https://ick.liw.fi/ * Ask me for access to demo instance