kolibri-design-system
kolibri-design-system copied to clipboard
Establish the new and automated release process
Kolibri-Studio-KDS workflow
- KDS releases will be installed to
- Kolibri's
developandrelease-v* - Studio's
unstable
- Kolibri's
- Working branches targeting
develop/release-v*/unstablecan reference an unreleased KDS commit (typically new KDS work in support of the Kolibri/Studio feature being developed), but it is not allowed to merge a working branch into them as long as it references an unreleased KDS commit. Example:- (1) A developer works on refactoring card components in Kolibri on a working branch from
develop - (2) They need to make some new updates to KDS card component, so they open a KDS pull request. It is reviewed and merged.
- (3) In their Kolibri working branch, they reference the latest KDS commit directly.
- (4) KDS release manager prepares a new KDS release that contains the change
- (5) This KDS release is installed into
develop - (6) The developer rebases their working branch on top of the latest
developbefore merging their PR and can therefore remove their direct KDS commit reference
- (1) A developer works on refactoring card components in Kolibri on a working branch from
Automation
To be able to support the workflow above efficiently, we will need to release KDS frequently (perhaps bi-weekly or even weekly, to be determined) and be always ready to release upon request so that it doesn't block merging PRs in the products. This will be supported by the automated releases utilizing npm and dependabot. The automated KDS release part of the workflow above will work in the following way:
-
(1) After a new KDS version is tagged, it will be automatically published to npm
- We can re-use https://github.com/learningequality/le-utils/blob/main/.github/workflows/npm-publish.yml
-
(2) dependabot will open PRs with the new KDS version installed
- PRs are opened to Kolibri's default branch (
developorrelease-v*), and Studio'sunstable - PRs are then treated as for any other dependency - we test and merge them, or push some updates if needed
- PRs are opened to Kolibri's default branch (
### Tasks
- [x] Automate publishing KDS to npm triggered by tagging a new KDS version
- [x] Present the new workflow to the team
- [x] Set up reminders for developers to inform KDS release manager when they have/need some new KDS work (on Slack, during regular meetings)
- [ ] Update the internal release documentation