|
| 1 | +# Making and deploying releases |
| 2 | + |
| 3 | +!!! warning "Version compatibility" |
| 4 | + |
| 5 | + DiracX should be upgraded before upgrading legacy DIRAC installations. |
| 6 | + |
| 7 | +The versioning of `DIRAC`, `DIRACCommon`, `diracx`, `diracx-charts` and all the extensions are very linked to one another. |
| 8 | + |
| 9 | +```mermaid |
| 10 | +flowchart LR |
| 11 | + subgraph diracx-block["diracx"] |
| 12 | + diracx-charts("diracx-charts") |
| 13 | + diracx("diracx") |
| 14 | + diracx-web("diracx-web") |
| 15 | + end |
| 16 | +
|
| 17 | +
|
| 18 | + diracx -->|commit| diracx-charts |
| 19 | + diracx-web -->|commit| diracx-charts |
| 20 | +
|
| 21 | + linkStyle 0 stroke: blue |
| 22 | + linkStyle 1 stroke: blue |
| 23 | +
|
| 24 | +``` |
| 25 | + |
| 26 | +## Dependencies between diracx, DIRAC and DIRACCommon |
| 27 | + |
| 28 | +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`. |
| 29 | + |
| 30 | +The releases of `DIRAC` and `DIRACCommon` are managed as they have always been, and are described in the `DIRAC` documentation |
| 31 | + |
| 32 | +## Dependencies between diracx and diracx-charts |
| 33 | + |
| 34 | +`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: |
| 35 | + |
| 36 | +- the diracx-charts version |
| 37 | +- the AppVersion |
| 38 | +- the container versions |
| 39 | + |
| 40 | +The `update-charts` CI job in `diracx` pushes a new commit in `diracx-charts`, which results in a new `diracx-charts` release. |
| 41 | + |
| 42 | +## Dependencies between diracx, diracx-web and diracx-charts |
| 43 | + |
| 44 | +The `diracx-web` version is only very loosely coupled with the `diracx` version. |
| 45 | +A new `diracx-web` release will trigger a new `diracx-charts` updating: |
| 46 | + |
| 47 | +- the chart version |
| 48 | +- the container versions |
| 49 | +- NOT the AppVersion |
| 50 | + |
| 51 | +## diracx release |
| 52 | + |
| 53 | +Releases are managed by `ReleasePlease`. The token used to perform it belongs to `diracbot` github user |
| 54 | + |
| 55 | +A new release creates: |
| 56 | + |
| 57 | +- a [github release](https://github.com/DIRACGrid/diracx/releases) |
| 58 | +- a [pypi release](https://pypi.org/project/diracx/) |
| 59 | +- new [docker images](https://github.com/DIRACGrid/diracx/) |
| 60 | + |
| 61 | +### Force version number |
| 62 | + |
| 63 | +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) |
| 64 | + |
| 65 | +```bash |
| 66 | +git commit --allow-empty -m "chore: release 0.0.3" -m "Release-As: v0.0.3" |
| 67 | +git push upstream HEAD:main |
| 68 | +``` |
| 69 | + |
| 70 | +## diracx-charts releases |
| 71 | + |
| 72 | +Every commit in master triggers a new release. The releases are published on a [helm repo](https://charts.diracgrid.org/index.yaml) |
0 commit comments