Skip to content

Automated Builds & Distribution

Carter Roeser edited this page Apr 12, 2024 · 2 revisions

Overview

CircleCI

The agent is built and distributed automatically through CircleCI. The build process is defined in the .circleci/config.yml file and is triggered by pushing tags to the repository. Pushing tags will trigger builds to the stable release channel.

Manual builds can be triggered in CircleCI by running Trigger Pipeline on the main branch with the channel parameter set to the desired release channel (stable or beta). Beta builds will not update the apt repository as it does not support release channels.

Beta releases are not run automatically due to the cost of MacOS builds. To run a beta build, you must manually trigger the build in CircleCI.

Version numbers are pulled from the package.json file and are used to publish to Cloudflare R2 / the CLI update command. Git version tags are ignored in the build process and are for reference only.

Documentation should also be updated with each release to reflect changes in the agent. This can be done by running the following command:

yarn run version

Prerequisites

The build process relies on the following environment variables:

Variable Value
APPLE_ID Apple ID Username of Developer Account
APPLE_ID_APP_PASSWORD App-Specific Password for Developer Account
APPLE_TEAM_ID Apple Developer Team ID
AWS_ACCESS_KEY_ID Cloudflare R2 Read / Write Access Key
AWS_ENDPOINT_URL_S3 Cloudflare R2 Endpoint URL https://<ACCOUNT_ID>.r2.cloudflarestorage.com
AWS_SECRET_ACCESS_KEY Cloudflare R2 Secret Access Key
GPG_PASSPHRASE GPG Passphrase for Signing Debian Packages
GPG_PRIVATE_KEY GPG Private Key for Signing Debian Packages (base64 encoded armored)
GPG_PUBLIC_KEY GPG Public Key for Signing Debian Packages (base64 encoded armored)
OSX_APPLICATION_CERT_BASE64 Apple Developer Application Certificate (base64 encoded p12)
OSX_APPLICATION_CERT_PASSWORD Password for Application Certificate
OSX_INSTALLER_CERT_BASE64 Apple Developer Installer Certificate (base64 encoded p12)
OSX_INSTALLER_CERT_PASSWORD Password for Installer Certificate
RMAGENT_DEB_KEY GPG Key ID for Signing Debian Packages

To obtain Apple Developer Certificates, you must export them from the Apple Developer Portal, add them to a keychain, and export them as a .p12 file from the "My Certificates" section of the keychain. The .p12 file must be base64 encoded with base64 -b 0 / base64 -w 0 before adding it to the environment variable.

To obtain the GPG keys, you must export the public and private keys with gpg -a --export and gpg -a --export-secret-keys, respectively, and base64 encode them with base64 -b 0 / base64 -w 0 before adding them to the environment variable.

The public key should also be uploaded to the Ubuntu keyserver with gpg --send-keys <key-id> --keyserver keyserver.ubuntu.com.

The build process will also update install.sh and the Release.key file in the Debian repository using the public key in the GPG_PUBLIC_KEY environment variable.

Clone this wiki locally