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
|
[[!meta title="Planning meeting (iteration 6)"]]
[[!tag meeting]]
[[!meta date="2017-11-25 21:08"]]
[[!meta author="liw"]]
People
=============================================================================
* [[people/liw]]
Agenda
=============================================================================
* Discuss and decide goals for this iteration.
Notes
=============================================================================
* The goal of this iteration is to start moving ick2 towards the
vision expressed in [vision][] iteration won't reach there,
but takes the first steps in that direction. There will be
backwards-incompatible changes, but that's unavoidable in pre-ALPHA
software.
* I tried to keep tasks for this iteration to be as small as possible,
but it's still a bunch of work.
* After this iteration, project specification syntax will have changed
to follow the example, which is still far from my vision, but closer
than status quo.
pipelines:
update_ick.liw.fi:
parameters:
- unused_parameter
actions:
- where: local
python: |
runcmd(['ikiwiki', '--setup', 'ikiwiki.setup'])
- where: local
shell: rsync -a --delete . ick@remote.site:
projects:
ick.liw.fi:
parameters:
unused_parameter: nonsense-value
pipelines:
- update_ick.liw.fi
[vision]: blog/2017/11/25/ick2_build_environments_and_concurrency_and_complicated_mess
Current projects
-----------------------------------------------------------------------------
* None.
Tasks for this iteration
-----------------------------------------------------------------------------
Tasks may be part of a project or be random small ones (max an hour)
that just need doing.
|what | project | Who | estimate(h)
|--------------------------------------------|----------------|------------------|------------
|Add project, pipeline parameters | | Lars | 1h
|Make pipelines be named resources | | Lars | 2h
|Use temp dir for workspace | | Lars | 1h
|Allow pipeline steps to be in Python | | Lars | 2h
|Add a built-in debootstrap pipeline step | | Lars | 1h
|Make release | | Lars | 1h
|Upgrade Lars's two ick2 instances | | Lars | 2h
|--------------------------------------------|----------------|------------------|------------
|Total | | Lars | 19h
Task descriptions
------------------------------------------------------------------------------
* **Add project, pipeline parameters:** Allow user to specify a
`parameters` section for projects (as key/value pairs), and also for
pipelines (as a list of key names). Give those of projects's
parameters that a pipeline wants to the worker-manager in each work
resource, and only those parameters. The values should be any value
encodeable as JSON. The parameters need not be used for anything
yet.
_Acceptance criteria:_ The yarns for the controller have been
updated to verify that the projects can give parameters and that the
work resources for a pipeline get the right ones. Also that if there
are two pipelines in a project, which want different parameters,
they get the right ones from the project. All yarns pass.
* **Make pipelines be named resources:** Add a pipeline resource type
to the API. Change project specs to refer to them by name.
_Acceptance criteria:_ Yarns for the controller have been updated to
test that pipeline resources can be used via the API, and the yarns'
project tests have been updated to use named pipelines, instead of
embedded the step lists. All yarns pass.
* **Use temp dir for workspace:** Make controller tell worker-manager
to create a directory to act as the workspace and remember its
location, and to run every pipeline step in the workspace directory.
The workspace directory may be temporary or fixed, depending on what
makes sense during implementation.
_Acceptance criteria:_ A test instance runs builds successfully.
* **Allow pipeline steps to be in Python:** Add a way to add a snippet
of Python code to implement a step, in addition to a shell snippet.
Change worker-manager to run them with Python3. Document how the
snippet gets run, and what imports and globals it can rely on.
_Acceptance criteria:_ A test instance runs builds successfully with
pipeline steps implemented in Python.
* **Add a built-in debootstrap pipeline step:** Add to worker-manager
a way to run `debootstrap` directly, instead of invoking it via
shell or Python. A step description would look like this:
debootstrap: stretch
mirror: https://deb.debian.org/debian
The step gets run in the workspace directory.
_Acceptance criteria:_ A test instance of ick2 can run `debootstrap`
and manual inspection shows that afterwards the workspace contains a
directory tree than can be used to create a container: `sudo
systemd-nspan -D wrkspc pwd` reports the root directory.
* **Make release:** Update Debian packaging, NEWS, and other files.
Tag and build a release. Update Ansible playbook.
_Acceptance criteria:_ Set up a test instance and check that it can
run builds.
* **Upgrade Lars's two ick2 instances:** I have two instances running
ick2, updating static ikiwiki sites. Delete them, set up a one that
has two projects, one per site to update. Update gitano hooks as
necessary.
_Acceptance criteria:_ The instance still updates both ikiwiki sites
when their backing git repositories change.
|