From c3f3a447123d0cda1e51b087c016688ddde061e9 Mon Sep 17 00:00:00 2001 From: Roman Prykhodchenko Date: Thu, 26 Oct 2023 19:30:29 +0200 Subject: [PATCH] Add developer's guide (#4) * KAMUDEP-26 | Developer's guide * Some improvements --- DEVELOPERS.md | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++ TODO.md | 1 - 2 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 DEVELOPERS.md diff --git a/DEVELOPERS.md b/DEVELOPERS.md new file mode 100644 index 0000000..3b47b41 --- /dev/null +++ b/DEVELOPERS.md @@ -0,0 +1,53 @@ +# Developer's Guide + + +## Repository content and structure + +This repository contains all charts published by Kamu. In general +they could be classified into two categories: + +* **Product charts** manage different components of Kamu platform. They + can be installed independently and should be considered production ready. +* **Service charts** are used to either perform different service operations, + running tests or to manage dependencies of Kamu in local or demo environments. + These charts are opinionated and shall not be used in production. + +Each chart is stored in its corresponding directory in `charts`. The repository +contains only the sources of the charts. Packages are built and published +automatically within the CI/CD pipeline. + + +## Introducing changes to charts. + +The `master` branch is the source of truth for all released versions of each chart. +For that reason contributors must stick to the following rules: + +* Every change requires an approved pull request before being merged. +* Changes to charts should be done along with the version bump. +* **TODO**: Linting tests must pass before a change can be merged. + + +## Releasing charts + +Charts are released automatically after every merge to master by a +[GitHub workflow][1]. The workflow uses [Chart Releaser action][2] to manage +the GitHub Pages and to create GitHub releases in the repository. It +automatically updates the `index.yaml` file, creates tags, builds charts +and uploads binaries together with the changelog. + + +## Publishing charts and making the repository available + +The repository index is published along with the landing page as a GitHub +Pages website. GitHub's embedded workflow automatically generates the website +every time the release workflow pushes new changes to the `gh-pages` branch. +The `README.md` file is the source for the landing page. + +The index file references chart packages that are published as GitHub releases. +ArtifactHub [to publish][3] scans the index file periodically to publish +all charts' metadata and living documentation to users. + + +[1]: https://github.com/kamu-data/helm-charts/blob/master/.github/workflows/release.yml +[2]: https://helm.sh/docs/howto/chart_releaser_action/ +[3]: https://artifacthub.io/packages/search?repo=kamu&sort=relevance&page=1 diff --git a/TODO.md b/TODO.md index a757e2b..a9ef916 100644 --- a/TODO.md +++ b/TODO.md @@ -1,4 +1,3 @@ -- setup repository (ghpages?) - setup CI (linting, testing, release) - chart.lock - reuse macros across charts