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
|