[[!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.