diff --git a/docs/devops.md b/docs/devops.md new file mode 100644 index 0000000..4108f2c --- /dev/null +++ b/docs/devops.md @@ -0,0 +1,51 @@ +# DevOps Release Workflow + +This document describes the deployment and release process for KoalaSync. + +## Tag-Based Releases + +KoalaSync uses a fully automated release pipeline triggered by Git tags. + +> [!IMPORTANT] +> **DO NOT** manually bump the version numbers in any files (such as `package.json`, `manifest.base.json`, `shared/constants.js`, etc.) before creating a release. +> Bumping versions manually is redundant, leads to conflicts, and is completely handled by the CI/CD pipeline. + +### How it Works + +When you push a Git tag matching `v*` (e.g., `v2.5.1`), the GitHub Actions release workflow (`.github/workflows/release.yml`) is triggered. The workflow performs the following actions: + +1. **Extracts the version** from the tag (e.g., `2.5.1` from `v2.5.1`). +2. **Injects the version** automatically into the following files: + - `extension/manifest.base.json` + - `shared/constants.js` (updates `APP_VERSION`) + - `package.json` + - `website/version.json` + - `website/template.html` (updates `softwareVersion` schema) + - `README.md` (updates badge and announcement banner) + - `website/sitemap.xml` (updates `lastmod` dates) +3. **Commits and pushes** these version updates back to the `main` branch automatically with the commit message `chore(release): update versions to vX.X.X [skip ci]`. +4. **Builds the extension** for both Chrome and Firefox and publishes the zipped archives. +5. **Builds the website** and uploads website artifacts. +6. **Builds and publishes** the Docker image for the relay server to the GitHub Container Registry (`ghcr.io`). + +--- + +## Steps to Deploy a New Release + +To release a new version (e.g., `v2.5.1`), follow these steps: + +1. Make sure your local repository is synced on `main`: + ```bash + git checkout main + git pull origin main + ``` +2. Create a local Git tag: + ```bash + git tag v2.5.1 + ``` +3. Push the tag to GitHub: + ```bash + git push origin v2.5.1 + ``` + +The release pipeline will take care of the rest! You can monitor the progress under the **Actions** tab of the GitHub repository.