summaryrefslogtreecommitdiff
path: root/blog/2017/11/25/planning_meeting_iteration_6.mdwn
blob: ea9bfaf0721666b4bb69f632749c8e72206313d7 (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
[[!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.