summaryrefslogtreecommitdiff
path: root/slides.md
blob: 6f7eba701caa4fe602209cb919925357f37f37ef (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
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 ecosystem 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
-----------------------------------------------------------------------------

<img src="arch.png" />

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 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
-----------------------------------------------------------------------------

* https://ick.liw.fi/
* Ask me for access to demo instance