|
| 1 | +# Making and deploying releases |
| 2 | + |
| 3 | +The versioning of `DIRAC`, `DIRACCommon`, `diracx`, `diracx-charts` and all the extensions are very linked to one another. |
| 4 | + |
| 5 | +```mermaid |
| 6 | +flowchart LR |
| 7 | + subgraph diracx-block["diracx"] |
| 8 | + diracx-charts("diracx-charts") |
| 9 | + diracx("diracx") |
| 10 | + diracx-web("diracx-web") |
| 11 | + end |
| 12 | +
|
| 13 | + subgraph extension-block["extension"] |
| 14 | + extension("extension") |
| 15 | + extension-web("extension-web") |
| 16 | + extension-charts("extension-charts") |
| 17 | + end |
| 18 | +
|
| 19 | +
|
| 20 | + diracx -->|commit| diracx-charts |
| 21 | + diracx-web -->|commit| diracx-charts |
| 22 | +
|
| 23 | + diracx -->|renovate| extension |
| 24 | + diracx-web -->|renovate| extension-web |
| 25 | + extension -->|commit and bump diracx-charts| extension-charts |
| 26 | + extension-web -->|commit| extension-charts |
| 27 | +
|
| 28 | + linkStyle 0 stroke: blue |
| 29 | + linkStyle 1 stroke: blue |
| 30 | + linkStyle 2 stroke: red |
| 31 | + linkStyle 3 stroke: red |
| 32 | + linkStyle 4 stroke: blue |
| 33 | + linkStyle 5 stroke: blue |
| 34 | +``` |
| 35 | + |
| 36 | +## Dependencies between diracx, DIRAC and DIRACCommon |
| 37 | + |
| 38 | +Both `DIRAC` and `diracx` depend on `DIRACCommon`. However, `DIRACCommon` is in the same repository as `DIRAC`, and versioned together. This means that if we need to move code from `DIRAC` to `DIRACCommon` such that it is usable by `diracx`, we need first a new release of `DIRAC` and `DIRACCommon` just moving the code, before being able to use it in `diracx`. |
| 39 | + |
| 40 | +The releases of `DIRAC` and `DIRACCommon` are managed as they have always been, and are described in the `DIRAC` documentation |
| 41 | + |
| 42 | +## Dependencies between diracx and diracx-charts |
| 43 | + |
| 44 | +`diracx-charts` has a version number, as well as an `appversion`, which corresponds to the `diracx` version. This means that a new release of `diracx` requires a new `diracx-charts` release, which will update: |
| 45 | + |
| 46 | +- the diracx-charts version |
| 47 | +- the AppVersion |
| 48 | +- the container versions |
| 49 | + |
| 50 | +The `update-charts` CI job in `diracx` pushes a new commit in `diracx-charts`, which results in a new `diracx-charts` release. |
| 51 | + |
| 52 | +## Dependencies between diracx and the extensions |
| 53 | + |
| 54 | +Because the client extension regenerates the vanilla diracx client as well, the extension MUST have a strict dependency on the `diracx` version. This dependency is at the level of the python packaging (`pyproject.toml`) as well as in the containers (`Dockerfile`). |
| 55 | + |
| 56 | +Your extension should setup [Renovate](https://github.com/renovatebot/renovate), this way it will pick up the new `diracx` version. |
| 57 | + |
| 58 | +In turn, a new extension release should trigger a release of your extension chart. |
| 59 | +In this case, a new extension-chart release means updating: |
| 60 | + |
| 61 | +- the chart version |
| 62 | +- the AppVersion |
| 63 | +- the containers versions |
| 64 | +- the diracx-charts version to the latest compatible with the diracx version required by lhcbdiracx |
| 65 | + |
| 66 | +## Dependencies between diracx, diracx-web and diracx-charts |
| 67 | + |
| 68 | +The `diracx-web` version is only very loosely coupled with the `diracx` version. |
| 69 | +A new `diracx-web` release will trigger a new `diracx-charts` updating: |
| 70 | + |
| 71 | +- the chart version |
| 72 | +- the container versions |
| 73 | +- NOT the AppVersion |
| 74 | + |
| 75 | +## diracx release |
| 76 | + |
| 77 | +Token for release please in dirac is a token belonging which diracbot github user |
| 78 | + |
| 79 | +[PROCESS TO BE COMPLETED BY ALEXANDRE] |
| 80 | + |
| 81 | +A new release creates: |
| 82 | + |
| 83 | +- a [github release](https://github.com/DIRACGrid/diracx/releases) |
| 84 | +- a [pypi release](https://pypi.org/project/diracx/) |
| 85 | +- new [docker images](https://github.com/DIRACGrid/diracx/) |
| 86 | + |
| 87 | +### Force version number |
| 88 | + |
| 89 | +You can force a specific version number following the [doc](https://github.com/googleapis/release-please?tab=readme-ov-file#how-do-i-change-the-version-number) |
| 90 | + |
| 91 | +```bash |
| 92 | +git commit --allow-empty -m "chore: release 0.0.3" -m "Release-As: v0.0.3" |
| 93 | +git push upstream HEAD:main |
| 94 | +``` |
| 95 | + |
| 96 | +## diracx-charts releases |
| 97 | + |
| 98 | +Every commit in master triggers a new release. |
| 99 | +A release |
0 commit comments