Skip to content

Commit

Permalink
chore: automate releases with release-please (#2664)
Browse files Browse the repository at this point in the history
  • Loading branch information
SgtPooki authored Oct 13, 2023
1 parent 56a8217 commit 11c30fc
Show file tree
Hide file tree
Showing 7 changed files with 7,380 additions and 2,623 deletions.
26 changes: 26 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -201,6 +201,17 @@ jobs:
shell: bash
continue-on-error: true # empty steps.tag.outputs.tag will inform the next step

# This step will only handle the creation of the release draft, the "Build binaries with electron-builder" step
# will attach binaries to that release draft
- name: Run release-please github-release
if: contains(github.ref, 'refs/tags/') && (github.event_name == 'push' || github.event_name == 'workflow_dispatch')
uses: google-github-actions/release-please-action@v3.7.3
with:
command: github-release
release-type: node
changelog-notes-type: github
draft: true

- name: Build binaries with electron-builder
uses: paneron/action-electron-builder@14b133702d1b2e9749912051c43ed62b4afe56c8 # v1.8.1
with:
Expand Down Expand Up @@ -242,3 +253,18 @@ jobs:

- name: Show Cache
run: du -sh ${{ github.workspace }}/.cache/ && ls -l ${{ github.workspace }}/.cache/

# This Job will handle the creation of the "release-please" PR
create-release-please-pr:
runs-on: ubuntu-latest
needs: [test, build]
if: github.ref == 'refs/heads/main' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch')
steps:
- uses: google-github-actions/release-please-action@v3.7.3
with:
command: release-pr
changelog-notes-type: github
release-type: node
plugins: |
@ipfs-shipyard/release-please-ipfs-plugin@v1.0.0
draft-pull-request: true
3 changes: 3 additions & 0 deletions .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
".": "0.31.0"
}
40 changes: 40 additions & 0 deletions DEVELOPER-NOTES.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,45 @@ Manually test a few things that don't transfer well to automated testing:
5. **Mac & Windows (both must to be checked):** Confirm that OS-wide protocol handler was registered by opening <a href="ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi">`ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi`</a> in a stock web browser (Edge, Safari, Google Chrome) _without_ IPFS Companion

### Main release process

Release PRs are created automatically by release-please whenever new changes are merged into the `main` branch. A release is created automatically by CI when that release PR is merged. See the changes made in https://github.com/ipfs/ipfs-desktop/pull/2664 for more information on that process.

So the first step is to merge the release PR. Once that is merged, the release will be created automatically by CI. Once the release is created, the following steps need to be done manually:

#### Mark the latest release as `latest` and publish it.

1. Check out the [releases page](https://github.com/ipfs/ipfs-desktop/releases) and find the latest release.
1. Click the `Edit` button for the version we want to release
1. Ensure the release notes are correct and the binaries and other artifacts are attached. (there should be 17 attached assets total)
* The `latest.yml, latest-mac.yml, latest-linux.yml` files on the release are used by the app to determine when an app update is available.
1. Check the `Set as the latest release` box.
1. Then click `Publish release`.

#### When the above PR is merged and github release is created, bump the brew cask version

All it takes for this is [a simple command which will open a PR for you](https://github.com/Homebrew/homebrew-cask/blob/master/CONTRIBUTING.md#updating-a-cask):

```bash
brew bump --open-pr homebrew/cask/ipfs
```

### Manual release process

Be sure you have an environment variable `GH_TOKEN` set to a valid GitHub token with `repo` scope.

```bash
### Create release PR
npm run release-pr

### create github release
npm run release-gh

### When the above PR is merged and github release is created, bump the brew cask version:
brew bump --open-pr homebrew/cask/ipfs
# see https://github.com/Homebrew/homebrew-cask/blob/master/CONTRIBUTING.md#updating-a-cask if you run into issues.
```

<!-- OLD RELEASE PROCESS (keep for now, until we're sure the new one works)
1. Update the version using `npm version [major|minor|patch]` (it will create a new tag `vA.B.C`, note it down)
1. Update all links and badges in `README.md` to point to the new version (`A.B.C`).
- You may use `ts-node scripts/release/updateReadme.ts <oldVersion> <newVersion>` to update the readme. e.g. `ts-node scripts/release/updateReadme.ts 0.26.0 0.26.1`
Expand All @@ -42,6 +81,7 @@ Manually test a few things that don't transfer well to automated testing:
1. Update selected package managers:
- Wait for CI to finish and confirm that it updated [Snap](https://snapcraft.io/ipfs-desktop), and is at least pending review on [Chocolatey](https://chocolatey.org/packages/ipfs-desktop#versionhistory).
- Update the [Homebrew cask](https://github.com/Homebrew/homebrew-cask/blob/master/CONTRIBUTING.md#updating-a-cask).
-->

### Manually notarize `.dmg` with Apple

Expand Down
50 changes: 25 additions & 25 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

[![](https://img.shields.io/badge/made%20by-Protocol%20Labs-blue.svg?style=flat-square)](https://protocol.ai/)
[![](https://img.shields.io/badge/project-IPFS-blue.svg?style=flat-square)](https://ipfs.tech/)
[![total download count](https://img.shields.io/github/downloads/ipfs-shipyard/ipfs-desktop/total.svg?style=flat-square&label=all%20downloads)](https://github.com/ipfs-shipyard/ipfs-desktop/releases)
[![latest release download count](https://img.shields.io/github/downloads/ipfs-shipyard/ipfs-desktop/v0.31.0/total.svg?style=flat-square)](https://github.com/ipfs-shipyard/ipfs-desktop/releases/tag/v0.31.0)
[![total download count](https://img.shields.io/github/downloads/ipfs/ipfs-desktop/total.svg?style=flat-square&label=all%20downloads)](https://github.com/ipfs/ipfs-desktop/releases)
[![latest release download count](https://img.shields.io/github/downloads/ipfs/ipfs-desktop/v0.31.0/total.svg?style=flat-square)](https://github.com/ipfs/ipfs-desktop/releases/tag/v0.31.0)

**IPFS Desktop gives you all the power of [IPFS](https://ipfs.io) in a convenient desktop app: a complete IPFS node, plus handy OS menubar/taskbar shortcuts and an all-in-one file manager, peer map, and content explorer.**

Expand All @@ -19,9 +19,9 @@ Use IPFS Desktop to get acquainted with IPFS without needing to touch the termin

When in doubt, pick one of package formats with built-in automatic update mechanism:

- **Mac:** [ipfs-desktop-0.31.0-mac.dmg](https://github.com/ipfs-shipyard/ipfs-desktop/releases/download/v0.31.0/ipfs-desktop-0.31.0-mac.dmg)
- **Windows:** [IPFS-Desktop-Setup-0.31.0.exe](https://github.com/ipfs-shipyard/ipfs-desktop/releases/download/v0.31.0/IPFS-Desktop-Setup-0.31.0.exe)
- **Linux:** [ipfs-desktop-0.31.0-linux-x86_64.AppImage](https://github.com/ipfs-shipyard/ipfs-desktop/releases/download/v0.31.0/ipfs-desktop-0.31.0-linux-x86_64.AppImage)
- **Mac:** [ipfs-desktop-0.31.0-mac.dmg](https://github.com/ipfs/ipfs-desktop/releases/download/v0.31.0/ipfs-desktop-0.31.0-mac.dmg)
- **Windows:** [IPFS-Desktop-Setup-0.31.0.exe](https://github.com/ipfs/ipfs-desktop/releases/download/v0.31.0/IPFS-Desktop-Setup-0.31.0.exe)
- **Linux:** [ipfs-desktop-0.31.0-linux-x86_64.AppImage](https://github.com/ipfs/ipfs-desktop/releases/download/v0.31.0/ipfs-desktop-0.31.0-linux-x86_64.AppImage)
- If you prefer to manage updates on your own, see [other package formats](#install) below.

### Table of Contents
Expand Down Expand Up @@ -106,33 +106,33 @@ If you're interested in learning how to use IPFS from the command line, IPFS Des

## Install

Release notes and older versions of IPFS Desktop can be found on the [releases page](https://github.com/ipfs-shipyard/ipfs-desktop/releases).
Release notes and older versions of IPFS Desktop can be found on the [releases page](https://github.com/ipfs/ipfs-desktop/releases).

Don't see your favorite package manager? Visit our [package managers page](https://github.com/ipfs-shipyard/ipfs-desktop/issues/691) and help us add support for it!
Don't see your favorite package manager? Visit our [package managers page](https://github.com/ipfs/ipfs-desktop/issues/691) and help us add support for it!

### Mac
- **Installer:** [ipfs-desktop-0.31.0-mac.dmg](https://github.com/ipfs-shipyard/ipfs-desktop/releases/download/v0.31.0/ipfs-desktop-0.31.0-mac.dmg)\
[![](https://img.shields.io/github/downloads/ipfs-shipyard/ipfs-desktop/v0.31.0/ipfs-desktop-0.31.0-mac.dmg.svg?style=flat-square&label=downloads)](https://github.com/ipfs-shipyard/ipfs-desktop/releases/download/v0.31.0/ipfs-desktop-0.31.0-mac.dmg)
- **Installer:** [ipfs-desktop-0.31.0-mac.dmg](https://github.com/ipfs/ipfs-desktop/releases/download/v0.31.0/ipfs-desktop-0.31.0-mac.dmg)\
[![](https://img.shields.io/github/downloads/ipfs/ipfs-desktop/v0.31.0/ipfs-desktop-0.31.0-mac.dmg.svg?style=flat-square&label=downloads)](https://github.com/ipfs/ipfs-desktop/releases/download/v0.31.0/ipfs-desktop-0.31.0-mac.dmg)
- **Homebrew** (community-maintained): `brew install --cask ipfs`

### Windows
- **Installer:** [IPFS-Desktop-Setup-0.31.0.exe](https://github.com/ipfs-shipyard/ipfs-desktop/releases/download/v0.31.0/IPFS-Desktop-Setup-0.31.0.exe)\
[![](https://img.shields.io/github/downloads/ipfs-shipyard/ipfs-desktop/v0.31.0/IPFS-Desktop-Setup-0.31.0.exe.svg?style=flat-square&label=downloads)](https://github.com/ipfs-shipyard/ipfs-desktop/releases/download/v0.31.0/IPFS-Desktop-Setup-0.31.0.exe)
- **Installer:** [IPFS-Desktop-Setup-0.31.0.exe](https://github.com/ipfs/ipfs-desktop/releases/download/v0.31.0/IPFS-Desktop-Setup-0.31.0.exe)\
[![](https://img.shields.io/github/downloads/ipfs/ipfs-desktop/v0.31.0/IPFS-Desktop-Setup-0.31.0.exe.svg?style=flat-square&label=downloads)](https://github.com/ipfs/ipfs-desktop/releases/download/v0.31.0/IPFS-Desktop-Setup-0.31.0.exe)
- **Chocolatey** (community-maintained): `choco install ipfs-desktop`
- **Scoop** (community-maintained): `scoop bucket add extras; scoop install extras/ipfs-desktop`
- **WinGet** (community-maintained): `winget install IPFS.IPFS-Desktop`

### Linux/FreeBSD
- **AppImage**: [ipfs-desktop-0.31.0-linux-x86_64.AppImage](https://github.com/ipfs-shipyard/ipfs-desktop/releases/download/v0.31.0/ipfs-desktop-0.31.0-linux-x86_64.AppImage)\
[![](https://img.shields.io/github/downloads/ipfs-shipyard/ipfs-desktop/v0.31.0/ipfs-desktop-0.31.0-linux-x86_64.AppImage.svg?style=flat-square&label=downloads)](https://github.com/ipfs-shipyard/ipfs-desktop/releases/download/v0.31.0/ipfs-desktop-0.31.0-linux-x86_64.AppImage)
- **Tarball** (use this for building packages for distros): [ipfs-desktop-0.31.0-linux-x64.tar.xz](https://github.com/ipfs-shipyard/ipfs-desktop/releases/download/v0.31.0/ipfs-desktop-0.31.0-linux-x64.tar.xz)\
[![](https://img.shields.io/github/downloads/ipfs-shipyard/ipfs-desktop/v0.31.0/ipfs-desktop-0.31.0-linux-x64.tar.xz.svg?style=flat-square&label=downloads)](https://github.com/ipfs-shipyard/ipfs-desktop/releases/download/v0.31.0/ipfs-desktop-0.31.0-linux-x64.tar.xz)
- **Debian** (experimental): [ipfs-desktop-0.31.0-linux-amd64.deb](https://github.com/ipfs-shipyard/ipfs-desktop/releases/download/v0.31.0/ipfs-desktop-0.31.0-linux-amd64.deb)\
[![](https://img.shields.io/github/downloads/ipfs-shipyard/ipfs-desktop/v0.31.0/ipfs-desktop-0.31.0-linux-amd64.deb.svg?style=flat-square&label=downloads)](https://github.com/ipfs-shipyard/ipfs-desktop/releases/download/v0.31.0/ipfs-desktop-0.31.0-linux-amd64.deb)
- **Red Hat** (experimental): [ipfs-desktop-0.31.0-linux-x86_64.rpm](https://github.com/ipfs-shipyard/ipfs-desktop/releases/download/v0.31.0/ipfs-desktop-0.31.0-linux-x86_64.rpm)\
[![](https://img.shields.io/github/downloads/ipfs-shipyard/ipfs-desktop/v0.31.0/ipfs-desktop-0.31.0-linux-x86_64.rpm.svg?style=flat-square&label=downloads)](https://github.com/ipfs-shipyard/ipfs-desktop/releases/download/v0.31.0/ipfs-desktop-0.31.0-linux-x86_64.rpm)
- **FreeBSD** (experimental): [ipfs-desktop-0.31.0-linux-x64.freebsd](https://github.com/ipfs-shipyard/ipfs-desktop/releases/download/v0.31.0/ipfs-desktop-0.31.0-linux-x64.freebsd) (requires [Linux Binary Compatibility to be enabled](https://docs.freebsd.org/en/books/handbook/linuxemu/))\
[![](https://img.shields.io/github/downloads/ipfs-shipyard/ipfs-desktop/v0.31.0/ipfs-desktop-0.31.0-linux-x64.freebsd.svg?style=flat-square&label=downloads)](https://github.com/ipfs-shipyard/ipfs-desktop/releases/download/v0.31.0/ipfs-desktop-0.31.0-linux-x64.freebsd)
- **AppImage**: [ipfs-desktop-0.31.0-linux-x86_64.AppImage](https://github.com/ipfs/ipfs-desktop/releases/download/v0.31.0/ipfs-desktop-0.31.0-linux-x86_64.AppImage)\
[![](https://img.shields.io/github/downloads/ipfs/ipfs-desktop/v0.31.0/ipfs-desktop-0.31.0-linux-x86_64.AppImage.svg?style=flat-square&label=downloads)](https://github.com/ipfs/ipfs-desktop/releases/download/v0.31.0/ipfs-desktop-0.31.0-linux-x86_64.AppImage)
- **Tarball** (use this for building packages for distros): [ipfs-desktop-0.31.0-linux-x64.tar.xz](https://github.com/ipfs/ipfs-desktop/releases/download/v0.31.0/ipfs-desktop-0.31.0-linux-x64.tar.xz)\
[![](https://img.shields.io/github/downloads/ipfs/ipfs-desktop/v0.31.0/ipfs-desktop-0.31.0-linux-x64.tar.xz.svg?style=flat-square&label=downloads)](https://github.com/ipfs/ipfs-desktop/releases/download/v0.31.0/ipfs-desktop-0.31.0-linux-x64.tar.xz)
- **Debian** (experimental): [ipfs-desktop-0.31.0-linux-amd64.deb](https://github.com/ipfs/ipfs-desktop/releases/download/v0.31.0/ipfs-desktop-0.31.0-linux-amd64.deb)\
[![](https://img.shields.io/github/downloads/ipfs/ipfs-desktop/v0.31.0/ipfs-desktop-0.31.0-linux-amd64.deb.svg?style=flat-square&label=downloads)](https://github.com/ipfs/ipfs-desktop/releases/download/v0.31.0/ipfs-desktop-0.31.0-linux-amd64.deb)
- **Red Hat** (experimental): [ipfs-desktop-0.31.0-linux-x86_64.rpm](https://github.com/ipfs/ipfs-desktop/releases/download/v0.31.0/ipfs-desktop-0.31.0-linux-x86_64.rpm)\
[![](https://img.shields.io/github/downloads/ipfs/ipfs-desktop/v0.31.0/ipfs-desktop-0.31.0-linux-x86_64.rpm.svg?style=flat-square&label=downloads)](https://github.com/ipfs/ipfs-desktop/releases/download/v0.31.0/ipfs-desktop-0.31.0-linux-x86_64.rpm)
- **FreeBSD** (experimental): [ipfs-desktop-0.31.0-linux-x64.freebsd](https://github.com/ipfs/ipfs-desktop/releases/download/v0.31.0/ipfs-desktop-0.31.0-linux-x64.freebsd) (requires [Linux Binary Compatibility to be enabled](https://docs.freebsd.org/en/books/handbook/linuxemu/))\
[![](https://img.shields.io/github/downloads/ipfs/ipfs-desktop/v0.31.0/ipfs-desktop-0.31.0-linux-x64.freebsd.svg?style=flat-square&label=downloads)](https://github.com/ipfs/ipfs-desktop/releases/download/v0.31.0/ipfs-desktop-0.31.0-linux-x64.freebsd)
- **Snapcraft** support is deprecated and discouraged due to [confinement issues](https://github.com/ipfs/ipfs-desktop/issues/2031), use `.AppImage` instead

Additional third-party packages exist, but have the built-in auto-update mechanism disabled.
Expand Down Expand Up @@ -160,7 +160,7 @@ npm start
IPFS Desktop in itself is a simple container that makes sure Kubo and IPFS Webui can work together in a standalone fashion and has access to other os-specfic features like tray and contextual integrations.
There are multiple ways to access IPFS Webui:

- https://webui.ipfs.io/#/welcome
- http://127.0.0.1:5001/webui (shipped with kubo)
- IPFS Desktop itself
Expand All @@ -169,7 +169,7 @@ All of these instances of IPFS Webui are the same but shipped slightly different

## Contribute

We welcome all contributions to IPFS Desktop! The best way to get started is to check the current [open issues](https://github.com/ipfs-shipyard/ipfs-desktop/issues) (or drill down specifically for [issues labeled "help wanted"](https://github.com/ipfs-shipyard/ipfs-desktop/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22)) and find something interesting. All issues are categorized by the [standard label taxonomy](https://github.com/ipfs/community/blob/master/ISSUE_LABELS.md) used across the IPFS project, so you can also drill by topic (for example, [UX-related issues](https://github.com/ipfs-shipyard/ipfs-desktop/issues?q=is%3Aissue+is%3Aopen+label%3Atopic%2Fdesign-ux)).
We welcome all contributions to IPFS Desktop! The best way to get started is to check the current [open issues](https://github.com/ipfs/ipfs-desktop/issues) (or drill down specifically for [issues labeled "help wanted"](https://github.com/ipfs/ipfs-desktop/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22)) and find something interesting. All issues are categorized by the [standard label taxonomy](https://github.com/ipfs/community/blob/master/ISSUE_LABELS.md) used across the IPFS project, so you can also drill by topic (for example, [UX-related issues](https://github.com/ipfs/ipfs-desktop/issues?q=is%3Aissue+is%3Aopen+label%3Atopic%2Fdesign-ux)).

No matter how you contribute, please be sure you read and follow the [IPFS Contributing Guidelines](https://github.com/ipfs/community/blob/master/CONTRIBUTING.md) and the [IPFS Community Code of Conduct](https://github.com/ipfs/community/blob/master/code-of-conduct.md).

Expand Down Expand Up @@ -222,7 +222,7 @@ $ ipfs-desktop
$Trace/breakpoint trap
```

This is a known issue with Electron/Chrome and some hardened kernels. More details can be found [here](https://github.com/ipfs-shipyard/ipfs-desktop/issues/1362#issuecomment-596857282), but a fix is to start IPFS Desktop from the terminal with the following additional parameter:
This is a known issue with Electron/Chrome and some hardened kernels. More details can be found [here](https://github.com/ipfs/ipfs-desktop/issues/1362#issuecomment-596857282), but a fix is to start IPFS Desktop from the terminal with the following additional parameter:
```console
$ ipfs-desktop --no-sandbox
```
Expand Down Expand Up @@ -326,7 +326,7 @@ You can also edit the config file (`~/.ipfs/config` or `C:\Users\Username\.ipfs\

If you need help with using IPFS Desktop, the quickest way to get answers is to post them in the [official IPFS forums](https://discuss.ipfs.tech).

If you think you've found a bug or other issue with IPFS Desktop itself, please [open an issue](https://github.com/ipfs-shipyard/ipfs-desktop/issues/new/choose).
If you think you've found a bug or other issue with IPFS Desktop itself, please [open an issue](https://github.com/ipfs/ipfs-desktop/issues/new/choose).

## License

Expand Down
Loading

0 comments on commit 11c30fc

Please sign in to comment.