summaryrefslogtreecommitdiff
path: root/NEWS
blob: a4356cec1329ee8dfbef41f560794f4f0ba06415 (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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
NEWS for ick2, a CI server
=============================================================================

Copyright 2017-2018 Lars Wirzenius

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.


Version 0.23+git, not yet released
----------------------------------

* The workspace is now mounted as `/workspace` in a container. If
  `where` is `host` or `chroot`, it's still at
  `/var/lib/ick/workspace`.

* The `debootstrap` action now defaults to using the `deb.debian.org`
  mirror, if the action doesn't specify one.

* The `debootstrap` action now accepts a suite value of `auto`, which
  makes it get the suite name from the `debian_codename` pipeline
  parameter. The old behaviour of having the suite name as an argument
  to the `debootstrap` field in the action still works.

* When an action is run in a chroot, the `/proc` and `/sys`
  filesystems get bind mounted temporarily into the chroot.

* Shell and python actions (in chroot, container, or host) now get the
  environment variable `LC_ALL` set to `C`, and `DEBIAN_FRONTEND` set
  to `noninteractive`.

* The systemd unit for the worker manager now restarts the worker
  manager automatically if it crashes, after 10 seconds.

Version 0.23, released 2018-01-22
----------------------------------

* This is the ALPHA-1 version of ick. It is the first publicly
  advertised version.

* The `name` field in pipeline resources is now called `pipeline`.

* `icktool status` output now has a new column to indicate latest
  build status.

* Builds are now named `foo/123` (build 123 of project foo). Logs
  similarly.

* New command: `icktool show-latest-log foo` shows the latest log for
  the `foo` project.

* Worker manager does systree blob uploads and downloads via curl, so
  it doesn't need to keep a large blob in memory.

Version 0.22, released 2018-01-15
----------------------------------

* The worker manager can now run things in a chroot, using the
  workspace as the root directory. Add a `where: chroot` field to
  the `shell` or `python` pipeline actions.

* The worker manager can now archive the contents of the workspace and
  store it in the blob service. It can also retrieve a blob an unpack
  it into `/var/lib/ick/systree`, and run builds using that directory
  as the root of a container.

* The worker manager is now significantly more efficient when
  reporting build output to the controller. Previously, this would be
  done every time the stdout or stderr of the build command produced
  any output. In practice this meant an HTTP request every few bytes
  of output. Output is now buffered (up to a kibibyte per output
  stream), reducing the overhead rather a lot.

* `icktool` has a new subcommand, `make-it-so`, which reads a YAML
  file which lists all projects and pipelines, and creates or updates
  them via the controller API.

Version 0.21, released 2017-12-27
----------------------------------

* Project may now specify parameters, and pipelines in them may use
  the parameter values, both in shell and Python actions.

Version 0.20, released 2017-12-16
----------------------------------

* A blob service has been added. It is so simple you will weep.

* `icktool` has two new subcommands `put-blob` and `get-blob`.

* The worker manager now automatically registers itself to the
  controller. It is no longer necessary to do that manually.

Version 0.19, released 2017-11-29
----------------------------------

* Project may now specify a JSON object as project parameters. All
  work steps that the worker-manager gets, include the parameters.
  Worker-manager does not do anything with them yet.

* Pipelines are now shared between projects, and projects refer to
  them by name. Pipeline status is per project, however, so if two
  project refer to the same pipeline, they can trigger it separately.

* Pipeline steps may now be implemented in Python 3.

* Pipelines are now run in `/var/lib/ick/workspace`, and it gets
  emptied when a pipeline starts to build.

* Pipelines may now use a `debootstrap` step to have worker-manager
  create a system tree with `debootsrap`. This requires the `_ickwm`
  user (which worker-manager runs as) to have password-less sudo
  access. The packaging does not arrange that yet.

Version 0.18, released 2017-11-25
----------------------------------

* Add subommand `icktool status` which shows current status of every
  pipeline in every project.

* `POST /projects` (or `icktool create-project`) with a project
  description that names an already existing project fails. Likewise,
  `PUT /projrect/foo` (or `icktool update-project`) when no project
  foo exists is now an error.

Version 0.17, released 2017-11-19
----------------------------------

* Added temporarily an endpoint to trigger a pipeline without
  authorization.

Version 0.16, released 2017-11-19
----------------------------------

* icktool now generates the token itself, instead of running the
  `create-token` script.

* icktool now has a very rudimentary manual page. It's not really of
  much use, but it's there and it's easier to add things to a dummy
  file than to start a new file.

* icktool now reads YAML, instead of JSON. However, as YAML is a
  superset of JSON, old inputs will still wors.

* Some authorization fixes for the controller.

Version 0.15, released 2017-11-13
----------------------------------

* If the controller is told a build step has failed (ended with an
  integer, non-zero exit code), it terminates the build there.

* Build ids are now incremented.

Version 0.14, released 2017-11-12
----------------------------------

* The contoller can now schedule work for a worker, to run a build.

* `icktool` can now show and set the status of a pipeline, show
  builds, and show logs.

* `worker-manager` works with the new version of the controller. The
  .deb package installs a worker-manager with the controller.

Version 0.13, released 2017-10-16
----------------------------------

* Added the `/workers` endpoint, for managing information about
  workers.

* The `icktool` utility can now list, create, show, update, and delete
  projects and workers.

Version 0.12, released 2017-10-15
----------------------------------

* Some code refactoring, for clarity, plus some clarifications to yarn
  test suite added. No functional changes.

Version 0.11, released 2017-10-15
----------------------------------

* Add an `icktool` script. Currently it can generate a token or ask
  the controller for the controller's version.

Version 0.10, released 2017-10-14
---------------------------------

* The yarn test suite can be run so it starts the ick controller
  locally, or against a pre-existing one that runs remotely.

Version 0.9, released 2017-10-14
---------------------------------

* Debian package creates /etc/ick.

Version 0.8, released 2017-10-14
---------------------------------

* Debian binary package has its dependencies specified.

* The Debian binary package creates `/var/lib/ick/state`.

Version 0.7, released 2017-10-14
---------------------------------

* `ick2version` has been removed, the canonical location for the
  version is not `ick2.__version__`.

* Debian package now creates an `_ick` user and group and runs service
  under that account. Previously it was using the `www-data` account,
  which can be used by other services as well. This way provides more
  isolation.

* Logs are now in `/var/log/ick`, not `/tmp`.

Version 0.6, released 2017-10-13
---------------------------------

* Don't start gunicorn3 in daemon mod.

Version 0.5, released 2017-10-13
---------------------------------

* More bug fixes for deploment: Add `start_ick` and make
  `ick2.service` use it.

Version 0.4, released 2017-10-13
---------------------------------

* Bug fixes to allow Ansible to deploy ick2 on a host as a service:

    * The `ick2version` Python package gets installed.

    * Temporarily put logs in /tmp. I don't know why logging to syslog
      fails.

    * The `create-token` script is a little easier to use now.

    * The controller logs all exceptions to the `logging` module,
      instead of `slog`, so they're logged **somewhere** when the
      program is starting.

Version 0.3, released 2017-10-13
-----------------------------------

* Add rudimentary controller and worker manager. The controller
  supports multiple concurrent builds by different workers.

* Add Python3, and gunicorn support, including in the .deb packaging.
  Once the .deb is installed, the ick2 controller can be started
  manully (doesn't get enabled or started automatically, nor is there
  a default project list).

* License for all code is now AGPL3+.

* All code should now work in Python 3.

* /version added to API.

Version 0.2.1, released 2017-04-01
---------------------------------


Version 0.2, released 2017-04-01
---------------------------------


Version 0.1, released 2017-04-01
-----------------------------------------------------------------------------

This is the first version.