desktop/release-automation
2024-01-21 23:27:54 -06:00
..
.gitignore Fix various legacy build issues 2024-01-21 20:21:17 -06:00
build.js Try to disable publishing auto update files 2024-01-21 23:27:54 -06:00
linux.sh Finish release automation scripts 2023-09-09 15:44:33 -05:00
mas.sh Update MAS automation script 2023-09-05 17:10:09 -05:00
README.md Only notarize in --production 2024-01-21 21:55:06 -06:00

Release automation scripts

These are the bespoke scripts that we use to automate various aspects of releasing new versions of the app. We publish these scripts because it's easier for us to just put them in the repository, and we hope they may be useful as a starting place for other mods. Expect to make changes.

build.js

This is what creates most of the downloads that are up on our website and on GitHub. It takes these arguments:

--production
    Enables update checker
    Adds "prod-" to the start of the distribution name
    Enables some extra warnings for people who install the wrong version of the app
    Allows notarization on macOS

--windows
    Create Windows installers for Windows 10 or later

--windows-legacy
    Create Windows installers for Windows 7 or later (less secure)

--microsoft-store
    Create appx files for uploading to Microsoft Store

--mac
    Create dmg files for macOS

--debian
    Create deb files for Debian/Ubuntu/etc.
    This does not actually upload them to the apt repository. See ../debian for those scripts.

--tarball
    Create tar.gz files for Linux

--appimage
    Create AppImages for Linux

Linux

In addition to publishing builds on our website and GitHub, we also publish Linux builds on:

  • releases.turbowarp.org, our apt repository
  • flathub.org
  • snapcraft.io
  • aur.archlinux.org

Due to the variety of package managers that this script relies on, this script only strives to support Arch Linux. It's probably not hard to make most of it work elsewhere, but that's not a priority for us. In addition to everything required to build turbowarp-desktop from source, you also need the following Arch packages:

  • base-devel
  • git
  • jq
  • gnupg
  • dpkg
  • rclone
  • gzip
  • python
  • pacman
  • pacman-contrib
  • flatpak
  • flatpak-builder
  • flatpak-node-generator which also needs:
    • python-pipx
    • python-aiohttp
  • snapd

Then for snap uploads, you also need to install and log in to snapcraft:

snap install snapcraft --classic
snapcraft login

For rclone configuration, see Debian scripts README.

Mac App Store

Creating builds for the Mac App Store is also a separate build:

./mas.sh

as is uploading those builds to App Store Connect using Transporter.