• Discuss and decide goals for this iteration.


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


              - unused_parameter
              - where: local
                python: |
                  runcmd(['ikiwiki', '--setup', 'ikiwiki.setup'])
              - where: local
                shell: rsync -a --delete .

              unused_parameter: nonsense-value

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

    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.