summaryrefslogtreecommitdiff
path: root/slides.md
blob: c7146a92b6b6d49725a69fd3c06f12020cc6b8ff (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
121
122
123
124
125
126
127
128
129
130
131
132
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, ...
* Builds can happen on the host natively, or in a systemd-nspawn
  container
* 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
* on purpose not using Docker: it's too complicated

---

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

vvv

Roadmap
-----------------------------------------------------------------------------

<img src="roadmap.png" />

<https://ick.liw.fi/roadmap/>

---

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