Open thufschmitt opened 1 year ago
Are you sure about calling it ci.github_actions
instead of just ci.github
? Later looks better, even if it's not as precise.
It's not clear to me the separation between "low" and "high" level interfaces. I think "low level" would be writing workflows and "high level" would be turning knobs and picking workflows for the library.
I'd also suggest:
ci.github.enable = true
, so that we can template the whole project at onceAre you sure about calling it ci.github_actions instead of just ci.github? Later looks better, even if it's not as precise
Fair enough. I'll update the issue description to match that
It's not clear to me the separation between "low" and "high" level interfaces. I think "low level" would be writing workflows and "high level" would be turning knobs and picking workflows for the library.
My idea was that “low level” is directly writing workflows using GitHub's schema (except in Nickel), while “high-level” is providing an opinionated library of relevant workflows for projects using Organist. Does that match your understanding?
add a flag to enable GitHub workflow generation, like ci.github.enable = true, so that we can template the whole project at once
Yes, that sounds quite reasonable indeed
have a proper support for configuring multiple workflows from the start, so that "default" workflows would include all of per-commit checks, periodic dependency updates and release workflows.
Yes, we'll need to keep that in mind indeed. Although reality will probably remind us of it if we ever forget 😉
Provide an easy-to-use but flexible framework for generating GH actions with Organist.
The simplest use-case would be something along the lines of:
which should do what you expect™
This should be extensible through some specific configuration options. For instance:
ci.github_actions.common.cachix.{token,cache}
should enable cachix on the workflow;A lower-level interface should also be available for writing workflows by hand
If reasonably possible, both interfaces should be usable at the same time (to add some custom overrides to the default interface for instance, or import bits of it to a custom workflow)
All of that should
Tasks