Manav Rathi 1 рік тому
батько
коміт
fecfb4a8b7
1 змінених файлів з 47 додано та 27 видалено
  1. 47 27
      desktop/docs/release.md

+ 47 - 27
desktop/docs/release.md

@@ -1,33 +1,59 @@
 ## Releases
 ## Releases
 
 
-The Github Action that builds the desktop binaries is triggered by pushing a tag
-matching the pattern `photosd-v1.2.3`. This value should match the version in
-`package.json`.
+Conceptually, the release is straightforward: We push a tag, a GitHub workflow
+gets triggered that creates a draft release with artifacts built from that tag.
+We then publish that release. The download links on our website, and existing
+apps already know how to check for the latest GitHub release and update
+accordingly.
 
 
-To make a new release
+The complication comes by the fact that Electron Updater (the mechanism that we
+use for auto updates) doesn't work well with monorepos. So we need to keep a
+separate (non-mono) repository just for doing releases.
 
 
-1. Create a new branch (can be named anything). On this branch, change the
-   `version` in `package.json` to `1.x.x` and finalize `CHANGELOG.md`.
+-   Source code lives here, in [ente-io/ente](https://github.com/ente-io/ente).
 
 
-2. Commit, tag and push to remote. Note that the tag should have a `photosd-`
-   prefix:
+-   Releases are done from
+    [ente-io/photos-desktop](https://github.com/ente-io/photos-desktop).
+
+## Workflow
+
+The workflow is:
+
+1.  Finalize the changes in the source repo.
+
+    - Update the CHANGELOG.
+    - Update the version in `package.json`
+    - `git commit -m 'Release v1.x.x'`
+    - Open PR, merge into main.
+
+
+2.  Tag this commit with a tag matching the pattern `photosd-v1.2.3`, where
+    `1.2.3` is the version in `package.json`
 
 
     ```sh
     ```sh
-    git add CHANGELOG.md package.json
-    git commit -m 'Release v1.x.x'
     git tag photosd-v1.x.x
     git tag photosd-v1.x.x
     git push origin photosd-v1.x.x
     git push origin photosd-v1.x.x
     ```
     ```
 
 
-   This will trigger the GitHub action that will create a new draft release.
+3.  Head over to the releases repository, copy all relevant changes from the
+    source repository, commit and push the changes.
 
 
-3. To wrap up, increase the version number in `package.json` the next release
-   train. That is, suppose we just released `v4.0.1`. Then we'll change the
-   version number in main to `v4.0.2-beta.0`. Each pre-release will modify the
-   `beta.0` part. Finally, at the time of the next release, this'll become
-   `v4.0.2`.
+    ```sh
+    cp ../ente/desktop/CHANGELOG.md CHANGELOG.md
+    git add CHANGELOG.md
+    git commit -m 'Release v1.x.x'
+    git push origin main
+    ```
 
 
-4. Open a PR for the branch to get it merged into main.
+4.  Tag this commit, but this time _don't_ use the `photosd-` prefix. Push the
+    tag to trigger the GitHub action.
+
+    ```sh
+    git tag v1.x.x
+    git push origin v1.x.x
+    ```
+
+## Post build
 
 
 The GitHub Action runs on Windows, Linux and macOS. It produces the artifacts
 The GitHub Action runs on Windows, Linux and macOS. It produces the artifacts
 defined in the `build` value in `package.json`.
 defined in the `build` value in `package.json`.
@@ -36,17 +62,11 @@ defined in the `build` value in `package.json`.
 -   Linux - An AppImage, and 3 other packages (`.rpm`, `.deb`, `.pacman`)
 -   Linux - An AppImage, and 3 other packages (`.rpm`, `.deb`, `.pacman`)
 -   macOS - A universal DMG
 -   macOS - A universal DMG
 
 
-Additionally, the GitHub action notarizes the macOS DMG. For this it needs
-credentials provided via GitHub secrets.
-
-To rollout the build, we need to publish the draft release. This needs to be
-done in the old photos-desktop repository since that the Electron Updater
-mechanism doesn't work well with monorepos. So we need to create a new tag with
-changelog updates on
-[photos-desktop](https://github.com/ente-io/photos-desktop/), use that to create
-a new release, copying over all the artifacts.
+Additionally, the GitHub action notarizes and signs the macOS DMG (For this it
+uses credentials provided via GitHub secrets).
 
 
-Thereafter, everything is automated:
+To rollout the build, we need to publish the draft release. Thereafter,
+everything is automated:
 
 
 -   The website automatically redirects to the latest release on GitHub when
 -   The website automatically redirects to the latest release on GitHub when
     people try to download.
     people try to download.