# Releases

## Changesets

Wir verwenden

- [changesets](https://github.com/changesets/changesets) A tool to manage
  versioning and changelogs with a focus on multi-package repositories

um das releasen einzelner packages, so komfortabel wie möglich zu gestalten.

- Mit `npx changeset` startet ihr die interaktive CLI
- Abhängig von den zuletzt geänderten packages (im vergleich zu develop) bietet
  euch die changesets CLI diese packages zur Auswahl an
- Als nächstes bestimmt ihr ob es sich um eine Major, Minor oder Patch Änderung
  handelt
- Schlussendlich solltet ihr noch einen Kommentar hinzufügen der die Änderungen
  zusammenfasst

Nach dem letzten Schritt wird im `.changeset` Folder (im project root), ein
neues changeset angelegt.

## Create Release Notes

### Steps

1. create new release branch from develop e.g. 'release/pi-13-sprint-06-1'

2. bump change files (.md) into release notes and update version in package.json
   via

```bash
npx changeset version
```

3. commit the resulting changes (updated package.json, updated CHANGELOG.md)

As this results in updating the aforementionend files, maybe even in multiple
packages, it's best to find a "neutral" commit message.

### example commit message

`docs(asservate/vorgang-mvp): release PI 13 Sprint 6-1`

- type docs because this commit includes documentation changes (e.g
  CHANGELOG.md)
- scope should specify which packages are affected with this release
- message: release PI `{CurrentPI}` Sprint
  `{CurrentSprint}`-`{AscendingReleaseNumber}`. The part after the "-" is only
  relevant, if you have mutliple releases in one sprint

## Publish to A-Cloud Nexus

For now, it has to be done locally

- Change your registry setting to the A-Cloud Nexus
  `npm config set registry https://nexus-internal.shared.p20.de/nexus-oci/repository/dhoes-npm-internal`
- Export the A-Cloud Shared Web Cert to your node env
  `export NODE_EXTRA_CA_CERTS=/YOUR_PATH/P20\ Shared\ WEB\ CA\ 01.crt`
- `npm run build -- --filter=@p20/web-components`
- `npx changeset publish`

## Create Tag

```bash
npx changeset tag
git push --tags
```
