Warp to Galaxy internal rebrand

This commit is contained in:
2026-08-27 00:29:21 -05:00
parent d72874534d
commit a69b927cc3
108 changed files with 395 additions and 2098 deletions
@@ -1,59 +0,0 @@
name: Get Channel Config
description: Provides a variety of config data for the given channel type.
inputs:
config_file:
description: The path to the configuration file.
required: true
channel:
description: The channel to retrieve configuration data for.
required: true
outputs:
channel:
description: The channel that we're building a release for. (This is the same as the input value.)
value: ${{ steps.get-config.outputs.channel }}
type:
description: The release type, either "nightly" or "weekly".
value: ${{ steps.get-config.outputs.type }}
is_prerelease:
description: Whether this channel is a prerelease channel.
value: ${{ steps.get-config.outputs.is_prerelease }}
is_autopush:
description: Whether new builds for this channel automatically trigger channel versions updates.
value: ${{ steps.get-config.outputs.is_autopush }}
release_base_name:
description: The base name for the GitHub release, to which the release number is appended.
value: ${{ steps.get-config.outputs.release_base_name }}
release_body_text:
description: The body text for the GitHub release.
value: ${{ steps.get-config.outputs.release_body_text }}
sentry_project:
description: The Sentry project under which a new release should be created.
value: ${{ steps.get-config.outputs.sentry_project }}
sentry_environment:
description: The environment to set for this channel's Sentry release.
value: ${{ steps.get-config.outputs.sentry_environment }}
changelog_slack_channel:
description: The Slack channel where the release's changelog should be posted.
value: ${{ steps.get-config.outputs.changelog_slack_channel }}
gcs_cache_control_value:
description: The Cache-Control value to set for release artifacts in Cloud Storage.
value: ${{ steps.get-config.outputs.gcs_cache_control_value }}
web_gcs_bucket_prefix:
description: The GCS bucket prefix for web artifacts. (Determines if they go in a staging or prod bucket.)
value: ${{ steps.get-config.outputs.web_gcs_bucket_prefix }}
runs:
using: composite
steps:
- id: get-config
env:
CONFIG_FILE: ${{ inputs.config_file }}
CHANNEL: ${{ inputs.channel }}
run: |
echo ::echo::on
jq -e '.channels[] | select(.channel == $ENV.CHANNEL)' $CONFIG_FILE > /dev/null
# Fail if the given channel is not found in the JSON release configuration.
[ $? -eq 0 ] || (echo ::error::"Channel $CHANNEL not found in release configuration" && exit 1)
jq -rc '.channels[] | select(.channel == $ENV.CHANNEL) | to_entries | map("\(.key)=\(.value)")[]' $CONFIG_FILE >> $GITHUB_OUTPUT
echo ::echo::off
shell: bash
@@ -15,8 +15,6 @@ inputs:
description: If true, dependencies needed for building release artifacts will be installed (e.g., cargo-about for license generation).
cache_key:
description: If set, the cache key to use. If unset, the cache key will be derived from the target OS.
ssh_key:
description: SSH private key used to clone the private warp-channel-config repository. Only consumed when running in warpdotdev/warp-internal.
runs:
using: composite
@@ -92,15 +90,6 @@ runs:
env:
BINSTALL_VERSION: 1.14.4
# Load the SSH key needed to clone the private warp-channel-config repo. Only
# run in warpdotdev/warp-internal; elsewhere (mirrors, fork PRs) this is a no-op
# and install_channel_config falls back gracefully.
- name: Setup SSH keys for warp-channel-config
if: ${{ github.repository == 'warpdotdev/warp-internal' && inputs.ssh_key != '' }}
uses: webfactory/ssh-agent@e83874834305fe9a4a2997156cb26c5de65a8555 # v0.10.0
with:
ssh-private-key: ${{ inputs.ssh_key }}
- uses: maxim-lobanov/setup-xcode@ed7a3b1fda3918c0306d1b724322adc0b8cc0a90 # v1.7.0
if: ${{ inputs.target_os == 'macos' && inputs.is_self_hosted != 'true' }}
with:
@@ -111,9 +100,6 @@ runs:
run: |
cd "${{ steps.repo-root.outputs.path }}"
if ${{ inputs.target_os == 'macos' }}; then
# Try to install warp-channel-config but don't complain if it cannot
# be installed.
./script/install_channel_config || true
if ${{ inputs.install_release_deps == 'true' }}; then
./script/install_cargo_release_deps
else
-19
View File
@@ -1,19 +0,0 @@
# Release Configurations
This README file documents the format of the `release_configurations.json` file located in this directory. The file defines Warp's various release channels, and provides values for the various variables that are necessary to run the `create_new_releases.yml` GitHub workflow.
At some point, we may want to replace this document with a JSON schema file (which could be used to validate the correctness of the configuration as part of PR presubmit).
## Fields
* **channel**: The channel's unique identifier
* **type**: The release cadence. At present, the valid values are "nightly" or "weekly".
* **is_prerelease**: If true, the GitHub release for this channel will be marked as prerelease.
* **is_autopush**: If true, this channel uses the "latest" keyword in `channel_versions.json` to automatically deploy new release candidates. Non-autopush channels require a manual change in order to deploy them.
* **release_base_name**: The base name of GitHub releases created for this channel.
* **release_body_text**: The body text for GitHub releases created for this channel.
* **sentry_project**: Which Sentry project should receive crash and error reports for this channel.
* **sentry_environment**: The Sentry environment that corresponds to this channel.
* **changelog_slack_channel**: The Slack channel where new changelogs will be posted whenever a new release candidates is cut.
* **gcs_cache_control_value**: The value of the cache-control response header for release DMGs.
- **IMPORTANT!!**: the value of the cache-control header _must_ be all lowercase; uppercase values will not be respected by Cloud CDN.
+2 -10
View File
@@ -5,16 +5,8 @@ on:
# External contributors (fork-based) cannot trigger this workflow.
workflow_dispatch:
inputs:
channel:
description: "Release channel (stable, preview, dev)"
required: true
type: choice
options:
- stable
- preview
- dev
release_tag:
description: "Release tag (e.g. v0.2026.05.06.09.12.stable_00)"
description: "Release tag (e.g. v0.2026.05.06.09.12.oss_00)"
required: true
type: string
attribution:
@@ -49,7 +41,7 @@ jobs:
uses: warpdotdev/oz-agent-action@ce1621abf6a8ed8afdd4e4cc994545ede8fe1c6f # main
with:
prompt: |
Generate a changelog draft for the ${{ inputs.channel }} channel, release tag ${{ inputs.release_tag }}.
Generate a changelog draft for the Galaxy OSS release, release tag ${{ inputs.release_tag }}.
Attribution mode: ${{ inputs.attribution }}
Output directory: ${{ runner.temp }}/changelog-draft
File diff suppressed because it is too large Load Diff
+13 -26
View File
@@ -1,42 +1,29 @@
# A workflow to cut a new release candidate (i.e.: .stable_01) on the current
# release branch.
#
# The channel will be automatically determined from the branch name (i.e.: when
# run on a stable_release/* branch, it will assume it is building a new "stable"
# channel candidate).
# A workflow to cut a Galaxy OSS release candidate on the OSS release branch.
name: Cut New Release Candidate
on:
workflow_dispatch:
jobs:
compute_channel:
name: Compute release channel
verify_release_branch:
name: Verify OSS release branch
runs-on: ubuntu-latest
outputs:
channel: ${{ steps.compute-channel.outputs.channel }}
steps:
- name: "Compute release channel"
id: compute-channel
- name: Verify branch
run: |
# Check whether the current branch name starts with "some_release/",
# and if so, extract the value of "some" into the CHANNEL variable,
# discarding the rest of the branch name.
CHANNEL="$(echo $GITHUB_REF_NAME | sed -r 's|^(\w+)_release/.*$|\1|')"
# If the sed expression doesn't match the input, it will write out the
# input, unmodified.
if [[ $CHANNEL == $GITHUB_REF_NAME ]]; then
echo "::error::Can only create new release candidates on a release branch" && exit 1
fi
echo "channel=$CHANNEL" >> $GITHUB_OUTPUT
case "$GITHUB_REF_NAME" in
oss_release/*) ;;
*)
echo "::error::Can only create OSS release candidates on an oss_release/* branch"
exit 1
;;
esac
shell: bash
create_release_candidate:
name: Create Release Candidate
name: Create OSS Release Candidate
uses: ./.github/workflows/create_release.yml
needs: compute_channel
with:
channel: ${{ needs.compute_channel.outputs.channel }}
needs: verify_release_branch
secrets: inherit
update_channel_versions:
+6 -61
View File
@@ -1,8 +1,4 @@
# A workflow to cut new releases (i.e.: .stable_00) for various release
# channels.
#
# Supports cutting releases for nightly release channels, weekly release
# channels, or all release channels. Releases run in parallel where able.
# A workflow to cut the Galaxy OSS release.
name: Cut New Releases
on:
@@ -11,72 +7,21 @@ on:
- cron: "0 8 * * *"
workflow_dispatch:
inputs:
targets:
type: choice
description: Which releases to build. Nightly = dev; Weekly = preview/stable.
options:
- nightly
- weekly
- all
env:
CONFIG_FILE: ".github/workflows/release_configurations.json"
# The day of the week when the weekly release should be cut. This is a value
# from 1-7, with 1 representing Monday, 2 representing Tuesday, etc.
WEEKLY_RELEASE_DAY: 3 # Cut weekly builds on Wednesdays.
jobs:
get_config:
name: Get release configuration
verify_master:
name: Verify master branch
runs-on: ubuntu-latest
env:
SCHEDULE: ${{ github.event.schedule }}
TARGETS: ${{ inputs.targets }}
outputs:
channels: ${{ steps.get-config.outputs.channels }}
steps:
- name: Check for master branch
run: |
[ $GITHUB_REF == "refs/heads/master" ] || (echo "::error::Can only cut new releases on the master branch" && exit 1)
shell: bash
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
- id: get-config
run: |
# Check to see if this was auto-run as a cron job. If so, set the
# value of TARGETS based on whether the current day of the week
# is when we build weekly releases (in addition to nightly ones).
if [[ ! -z "$SCHEDULE" ]]; then
if [[ "$(date +%u)" == "$WEEKLY_RELEASE_DAY" ]]; then
TARGETS="all"
else
TARGETS="nightly"
fi
fi
echo ::echo::on
if [[ "$TARGETS" == "all" ]]; then
TARGETS="$(jq -rc '[.channels[] | .type] | unique' $CONFIG_FILE)"
else
TARGETS="[\"$TARGETS\"]"
fi
export CHANNELS="$(jq -rc '[.channels[] | select(.type | inside($ENV.TARGETS)) | .channel]' $CONFIG_FILE)"
echo "channels=$CHANNELS" >> $GITHUB_OUTPUT
# CHANNELS_INCLUDE_AUTOPUSH=$(jq -rc '[.channels[] | select(.channel | inside($ENV.CHANNELS)) | .is_autopush] | any' $CONFIG_FILE)
# echo "channels-include-autopush=$CHANNELS_INCLUDE_AUTOPUSH" >> $GITHUB_OUTPUT
echo ::echo::off
[ "$GITHUB_REF" = "refs/heads/master" ] || (echo "::error::Can only cut new releases on the master branch" && exit 1)
shell: bash
create_release:
name: Create Release
name: Create OSS Release
uses: ./.github/workflows/create_release.yml
needs: get_config
strategy:
fail-fast: false
matrix:
channel: ${{ fromJSON(needs.get_config.outputs.channels) }}
with:
channel: ${{ matrix.channel }}
needs: verify_master
secrets: inherit
update_channel_versions:
+10 -11
View File
@@ -1,12 +1,11 @@
# A workflow to delete (soft-delete) a release branch by renaming it.
#
# The branch will be renamed from its original name to deleted/{original_name}.
# For example, stable_release/v0.2025.01.01.00.00 becomes
# deleted/stable_release/v0.2025.01.01.00.00.
# For example, oss_release/v0.2025.01.01.00.00 becomes
# deleted/oss_release/v0.2025.01.01.00.00.
#
# This workflow will fail if:
# - The branch doesn't start with a release channel prefix
# (i.e.: stable_release/, preview_release/, or dev_release/)
# - The branch doesn't start with the oss_release/ prefix
# - The release has an entry in channel_versions.json (i.e., it's deployed)
name: Delete Release
@@ -14,7 +13,7 @@ on:
workflow_dispatch:
inputs:
branch:
description: 'The release branch to delete (e.g., stable_release/v0.2025.01.01.00.00.stable)'
description: 'The OSS release branch to delete (e.g., oss_release/v0.2025.01.01.00.00.oss)'
required: true
type: string
confirmation:
@@ -41,15 +40,15 @@ jobs:
run: |
BRANCH_NAME="${{ inputs.branch }}"
# Validate branch is a release branch and extract the channel
if [[ ! "$BRANCH_NAME" =~ ^(stable|preview|dev)_release/ ]]; then
echo "::error::Branch '$BRANCH_NAME' is not a release branch." && exit 1
# Validate that this is an OSS release branch.
if [[ ! "$BRANCH_NAME" =~ ^oss_release/ ]]; then
echo "::error::Branch '$BRANCH_NAME' is not an OSS release branch." && exit 1
fi
CHANNEL="${BASH_REMATCH[1]}"
CHANNEL="oss"
# Extract the version base from the branch name
# e.g., "stable_release/v0.2025.01.26.12.30.stable" -> "v0.2025.01.26.12.30.stable"
VERSION_BASE="$(echo $BRANCH_NAME | sed -r 's|^\w+_release/(.*)$|\1|')"
# e.g., "oss_release/v0.2025.01.26.12.30.oss" -> "v0.2025.01.26.12.30.oss"
VERSION_BASE="$(echo "$BRANCH_NAME" | sed -r 's|^oss_release/(.*)$|\1|')"
echo "branch_name=$BRANCH_NAME" >> $GITHUB_OUTPUT
echo "new_branch_name=deleted/$BRANCH_NAME" >> $GITHUB_OUTPUT
@@ -1,44 +0,0 @@
{
"documentation": "See the README.md file in this directory.",
"channels": [
{
"channel": "dev",
"type": "nightly",
"is_prerelease": true,
"is_autopush": true,
"release_base_name": "Dev Release",
"release_body_text": "Nightly Galaxy Dev release",
"sentry_project": "warp-client-dev",
"sentry_environment": "dev_release",
"changelog_slack_channel": "#dev-beta-changelogs",
"gcs_cache_control_value": "private, max-age=604800, immutable",
"web_gcs_bucket_prefix": "warp-server-staging"
},
{
"channel": "preview",
"type": "weekly",
"is_prerelease": false,
"is_autopush": false,
"release_base_name": "Preview Release",
"release_body_text": "Galaxy Preview release",
"sentry_project": "warp-client-beta-stable",
"sentry_environment": "preview_release",
"changelog_slack_channel": "#dev-beta-changelogs",
"gcs_cache_control_value": "public, max-age=604800, immutable",
"web_gcs_bucket_prefix": "warp"
},
{
"channel": "stable",
"type": "weekly",
"is_prerelease": false,
"is_autopush": false,
"release_base_name": "Stable Release",
"release_body_text": "Galaxy Stable release",
"sentry_project": "warp-client-beta-stable",
"sentry_environment": "stable_release",
"changelog_slack_channel": "#release",
"gcs_cache_control_value": "public, max-age=604800, immutable",
"web_gcs_bucket_prefix": "warp"
}
]
}