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