Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
126 commits
Select commit Hold shift + click to select a range
abc2d4e
Automate the release guide
pingtimeout Jul 16, 2025
adb06d9
Fix typos
pingtimeout Jul 22, 2025
44c384b
Rename directory
pingtimeout Jul 22, 2025
67f41c7
Add README
pingtimeout Jul 22, 2025
316d6c2
Add Docker build commands
pingtimeout Jul 22, 2025
554f6a7
Fix test
pingtimeout Jul 22, 2025
8c1d473
Rename NC to RESET
pingtimeout Jul 23, 2025
5f02315
Add a way to disable term colors and use tput otherwise instead of AN…
pingtimeout Jul 23, 2025
54baeb8
Rename 03-create-release-tag.sh
pingtimeout Jul 23, 2025
c74aad9
Fix "Release tag" -> "Release Candidate tag"
pingtimeout Jul 23, 2025
2131030
Ensure there is no uncommitted change
pingtimeout Jul 23, 2025
75136ed
Refactor version validation and extraction into common functions
pingtimeout Jul 23, 2025
3ccb472
Just check the presence of gradlew for cwd
pingtimeout Jul 23, 2025
09038f1
Add comment for numeric fd
pingtimeout Jul 23, 2025
5d0c1c2
Add no-op mode in release branch script for rc>1
pingtimeout Jul 23, 2025
17f8d24
Merge branch 'oss-main' into releasesv2-main
pingtimeout Jul 23, 2025
e9a1527
Licence
pingtimeout Jul 24, 2025
512d2bb
WIP - Github checks
pingtimeout Jul 24, 2025
c5c3fbf
Verify that all Github checks have either passed or skipped
pingtimeout Jul 24, 2025
f6d67e3
Use tput for colors and only redefine if not already set
pingtimeout Jul 24, 2025
9fde2d0
nit
pingtimeout Jul 24, 2025
ff0bcf9
Merge branch 'oss-main' into releasesv2-main
pingtimeout Jul 28, 2025
3081060
WIP - Helm version
pingtimeout Jul 30, 2025
366e56a
Change case of libs_dir to show it is global
pingtimeout Jul 31, 2025
f47e07c
Set upstream for release branch and leverage it
pingtimeout Jul 31, 2025
24b330d
Fix tests after Helm chart package
pingtimeout Jul 31, 2025
8349286
Fix typo in variable name
pingtimeout Jul 31, 2025
7f260aa
Fix test
pingtimeout Jul 31, 2025
1fb77a1
Simplify Helm code
pingtimeout Jul 31, 2025
716d324
Remove requirement to be at project root to use releasey
pingtimeout Jul 31, 2025
39fe6d6
Fix test 05
pingtimeout Jul 31, 2025
5b08765
Fix test 06
pingtimeout Jul 31, 2025
77a7c78
Remove use of diff-so-fancy for compatibility
pingtimeout Jul 31, 2025
e2ef5c8
Disable Gradle parallel builds for release publish
pingtimeout Aug 1, 2025
aad31ba
Update README.md following refactoring
pingtimeout Aug 1, 2025
2e8782d
Code review
pingtimeout Aug 5, 2025
8e343a3
Fix release guide link
pingtimeout Aug 6, 2025
eaa8405
Use absolute paths in build script
pingtimeout Aug 6, 2025
26a4605
Fix copy path
pingtimeout Aug 7, 2025
6164e95
Code review
pingtimeout Aug 7, 2025
c2ac1eb
Store Polaris version in a global variable in libs/
pingtimeout Aug 7, 2025
cc5d1a7
Add workflow to automatically create release branches
pingtimeout Aug 7, 2025
16c36ca
Add workflow to automatically update version, changelog and RC tag
pingtimeout Aug 8, 2025
82809d2
Switch to manual release branch creation
pingtimeout Aug 8, 2025
0068b42
Ensure a RC tag is cut from the associated release branch
pingtimeout Aug 8, 2025
dd06128
Fix invalid checks
pingtimeout Aug 8, 2025
dcf78d9
Auto determine RC number from the branch name
pingtimeout Aug 8, 2025
a563654
Determine Github checks based on current repository only
pingtimeout Aug 8, 2025
2716880
Add Docker compose files to spawn a test SVN and Nexus server
pingtimeout Aug 11, 2025
1371620
Revert "Add Docker compose files to spawn a test SVN and Nexus server"
pingtimeout Aug 14, 2025
17ad6ed
Allow the ability to override the Nexus URL for testing purposes
pingtimeout Aug 12, 2025
5706fb4
Revert "Allow the ability to override the Nexus URL for testing purpo…
pingtimeout Aug 14, 2025
07ecde1
Bypass Github checks during testing
pingtimeout Aug 13, 2025
c8543c8
Revert "Bypass Github checks during testing"
pingtimeout Aug 14, 2025
5a2f8a4
Add workflow to build and publish artifacts
pingtimeout Aug 11, 2025
18a182f
Fix version parameter in release branch creation workflow
pingtimeout Aug 13, 2025
d5caaa8
Fix repo info detection for Github urls
pingtimeout Aug 13, 2025
0cb5696
Add worfklow to build and publish docker images
pingtimeout Aug 14, 2025
829e5a3
Add a workflow to build and stage the helm chart
pingtimeout Aug 14, 2025
c92cfb6
nit: Rename step for clarity
pingtimeout Aug 14, 2025
68ddc3b
Merge branch 'oss-main' into releasey-workflow
pingtimeout Aug 14, 2025
7eef6d9
Update common Github workflow triggers so that they run against relea…
pingtimeout Aug 14, 2025
45ed063
Rename workflows for easier organization
pingtimeout Aug 14, 2025
b8eadd0
Fix Github checks command as a Github Action accounts for a check
pingtimeout Aug 18, 2025
95e9648
Use a temporary script instead of inline variable evaluation
pingtimeout Aug 18, 2025
cb4de26
Explicitly exclude Github Actions that perform releases from checks
pingtimeout Aug 18, 2025
b322cf6
Fix cd command during dry-run
pingtimeout Aug 18, 2025
62712b6
Add workflow to publish a release after a vote
pingtimeout Aug 18, 2025
c40b15f
Delete all unused releasey code
pingtimeout Aug 18, 2025
be73814
Document release process
pingtimeout Aug 19, 2025
444acb4
Merge remote-tracking branch 'apache/main' into releasey-workflow
pingtimeout Aug 19, 2025
778c182
Cleanup whitespaces
pingtimeout Aug 19, 2025
198eb48
Only create the Github release after the vote passes
pingtimeout Aug 19, 2025
73f0eb5
Do not publish Docker images on DockerHub until the vote succeeds
pingtimeout Aug 19, 2025
144e38b
Pull remaining changes from #2179
pingtimeout Aug 21, 2025
18ae0da
Set releasey and libs dir env variable once per workflow
pingtimeout Aug 22, 2025
85369c8
Update .github/workflows/release-2-update-release-candidate.yml
pingtimeout Aug 22, 2025
ed230b1
Write Github Step Summaries
pingtimeout Aug 22, 2025
82484ce
Merge workflows 3, 4 and 5 as jobs of a single workflow
pingtimeout Aug 25, 2025
dbc74ab
Merge remote-tracking branch 'pingtimeout/releasey-workflow' into rel…
pingtimeout Aug 25, 2025
9d35973
Fix workflow number after refactoring
pingtimeout Aug 25, 2025
c46e964
Add ASL2 header
pingtimeout Aug 25, 2025
311e2d5
Update .github/workflows/release-3-build-and-publish-artifacts.yml
pingtimeout Aug 25, 2025
628cfe6
Merge remote-tracking branch 'pingtimeout/releasey-workflow' into rel…
pingtimeout Aug 25, 2025
03ff3fd
Cleanup readme
pingtimeout Aug 25, 2025
7c828c0
Fix import
pingtimeout Aug 25, 2025
56850da
Remove redundant info from step summary
pingtimeout Aug 26, 2025
28b4743
Typo
pingtimeout Aug 26, 2025
0414527
Do not update version in Helm values file as it is not there
pingtimeout Sep 1, 2025
477fc2e
Merge remote-tracking branch 'apache/main' into releasey-workflow
pingtimeout Sep 1, 2025
7d3fc4a
Allow RC numbers to start at 0
pingtimeout Sep 2, 2025
800c46c
Fix svn command to add the Helm index
pingtimeout Sep 5, 2025
3f4d5d7
Remove svn add index.yaml as the file is already tracked
pingtimeout Sep 5, 2025
3c58de3
Use a release/major.minor.x branch name pattern for releases
pingtimeout Sep 5, 2025
ad1c189
Merge remote-tracking branch 'apache/main' into releasey-workflow
pingtimeout Sep 15, 2025
3fb6b07
Update releasey/libs/_log.sh
pingtimeout Sep 25, 2025
80ac4e6
Clarify variable definition boundaries
pingtimeout Sep 25, 2025
2f8e143
Use GITHUB_REPOSITORY variable
pingtimeout Sep 25, 2025
c987e2e
Use Github CLI instead of a curl command
pingtimeout Sep 25, 2025
40c17b0
Simplify exec_process as no unit tests verify commands anymore
pingtimeout Sep 25, 2025
aa4465d
Record the staging repository ID and use it for the 4th workflow
pingtimeout Sep 25, 2025
750e089
Update releasey/libs/_version.sh
pingtimeout Nov 7, 2025
6e7d04b
Update releasey/libs/_version.sh
pingtimeout Nov 7, 2025
4bfd18a
Apply suggestions from code review
pingtimeout Nov 7, 2025
05211f0
Merge remote-tracking branch 'apache/main' into releasey-workflow
pingtimeout Nov 7, 2025
2d7aa89
Mask sensitive information in console output
pingtimeout Nov 7, 2025
703aa9d
Setup docker mirror in all jobs
pingtimeout Nov 7, 2025
8b827af
Remove second argument of calculate_sha512
pingtimeout Nov 7, 2025
b0369a8
Add a comment for helm plugin installation
pingtimeout Nov 7, 2025
9b7d9e2
Use proper version in docker image
pingtimeout Nov 7, 2025
f198dbf
FIX: `$`-brackets
snazy Nov 8, 2025
369a53a
FIX+Update: GH actions
snazy Nov 8, 2025
f65458d
_version.sh use version pattern instead of prev version
snazy Nov 8, 2025
c2760ed
Merge pull request #2 from snazy/releasey-workflow-review
pingtimeout Nov 10, 2025
cb70211
Replace Helm gpg plugin by standard key signing logic
pingtimeout Nov 13, 2025
e59bae6
Always delete the GPG files
pingtimeout Nov 13, 2025
2c151e3
Replace GNUPGHOME variable that does not exist
pingtimeout Nov 14, 2025
53fe66a
Fix gpg key export
pingtimeout Nov 17, 2025
f83c427
Reorder passphrase file creation
pingtimeout Nov 17, 2025
71f5f93
Ensure svn is installed on Github Runners
pingtimeout Nov 17, 2025
22d460d
Debug
pingtimeout Nov 17, 2025
33ec1b0
Fix RC version for Docker image
pingtimeout Nov 17, 2025
bf235e7
Setup Docker Buildx for multi-arch images
pingtimeout Nov 17, 2025
92ee589
Use public keyring to verify Helm chart
pingtimeout Nov 18, 2025
474a8ec
Revert "Setup Docker Buildx for multi-arch images"
pingtimeout Nov 18, 2025
57bc438
Manually setup docker buildx
pingtimeout Nov 18, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/gradle.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
branches: [ "main", "release/*" ]

env:
GRADLE_TOS_ACCEPTED: ${{ vars.GRADLE_TOS_ACCEPTED }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/helm.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
branches: [ "main", "release/*" ]

env:
GRADLE_TOS_ACCEPTED: ${{ vars.GRADLE_TOS_ACCEPTED }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/python-client.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
branches: [ "main", "release/*" ]

env:
GRADLE_TOS_ACCEPTED: ${{ vars.GRADLE_TOS_ACCEPTED }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/regtest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
branches: [ "main", "release/*" ]

env:
GRADLE_TOS_ACCEPTED: ${{ vars.GRADLE_TOS_ACCEPTED }}
Expand Down
122 changes: 122 additions & 0 deletions .github/workflows/release-1-create-release-branch.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#

name: Release - 1 - Create Release Branch

on:
workflow_dispatch:
inputs:
version:
description: 'Release version without RC number (e.g., 1.0.0-incubating)'
required: true
type: string
dry_run:
description: 'Dry run mode (check to enable, uncheck to perform actual operations)'
required: false
type: boolean
default: true

jobs:
create-release-branch:
name: Release - 1 - Create Release Branch
runs-on: ubuntu-latest
permissions:
contents: write

steps:
- name: Checkout repository
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
with:
# Fetch full history for proper branch operations
fetch-depth: 0
# Use a token with write permissions
token: ${{ secrets.GITHUB_TOKEN }}

- name: Setup test environment
uses: ./.github/actions/setup-test-env

- name: Set up environment variables
run: |
echo "RELEASEY_DIR=$(pwd)/releasey" >> $GITHUB_ENV
echo "LIBS_DIR=$(pwd)/releasey/libs" >> $GITHUB_ENV

echo "## Mode" >> $GITHUB_STEP_SUMMARY
if [[ "${{ github.event.inputs.dry_run }}" == "true" ]]; then
echo "DRY_RUN=1" >> $GITHUB_ENV
echo "‼️ DRY_RUN mode enabled - No actual changes will be made" >> $GITHUB_STEP_SUMMARY
else
echo "DRY_RUN=0" >> $GITHUB_ENV
echo "DRY_RUN mode disabled - Performing actual operations" >> $GITHUB_STEP_SUMMARY
fi

- name: Configure Git
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"

- name: Validate release parameters
run: |
source "${LIBS_DIR}/_version.sh"

# Extract release parameters from workflow inputs
version="${{ github.event.inputs.version }}"

echo "## Parameters" >> $GITHUB_STEP_SUMMARY

# Validate version format and extract components
if ! validate_and_extract_polaris_version "${version}"; then
echo "❌ Invalid version format. Expected: major.minor.patch-incubating, got: ${version}" >> $GITHUB_STEP_SUMMARY
exit 1
fi

echo "Version: \`${version}\`" >> $GITHUB_STEP_SUMMARY

# Create branch name in major.minor.x format
branch_name="${major}.${minor}.x"

# Export parameters for next step
echo "version=${version}" >> $GITHUB_ENV
echo "branch_name=${branch_name}" >> $GITHUB_ENV

- name: Create release branch
run: |
source "${LIBS_DIR}/_exec.sh"

release_branch="release/${branch_name}"

echo "## Summary" >> $GITHUB_STEP_SUMMARY

# Check if release branch already exists
if git show-ref --verify --quiet "refs/remotes/origin/${release_branch}"; then
echo "❌ Release branch ${release_branch} already exists. Delete the existing branch manually if you want to recreate it." >> $GITHUB_STEP_SUMMARY
exit 1
fi

exec_process git branch "${release_branch}"
exec_process git push origin "${release_branch}" --set-upstream

cat <<EOT >> $GITHUB_STEP_SUMMARY
🎉 Release branch created successfully:

| Name | Value |
| --- | --- |
| Release branch name | \`${release_branch}\` |
| Ref | \`$(git rev-parse HEAD)\` |
| Version | \`${version}\` |
EOT
206 changes: 206 additions & 0 deletions .github/workflows/release-2-update-release-candidate.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,206 @@
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#

name: Release - 2 - Update version and Changelog for Release Candidate

on:
workflow_dispatch:
inputs:
dry_run:
description: 'Dry run mode (check to enable, uncheck to perform actual operations)'
required: false
type: boolean
default: true

jobs:
update-release-candidate:
name: Release - 2 - Update version and Changelog for Release Candidate
runs-on: ubuntu-latest
permissions:
contents: write

steps:
- name: Checkout repository
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
with:
# Fetch full history. Branch operations require this.
fetch-depth: 0
# Use a token with write permissions
token: ${{ secrets.GITHUB_TOKEN }}

- name: Setup test environment
uses: ./.github/actions/setup-test-env

- name: Configure Git
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"

- name: Set up environment variables
run: |
echo "RELEASEY_DIR=$(pwd)/releasey" >> $GITHUB_ENV
echo "LIBS_DIR=$(pwd)/releasey/libs" >> $GITHUB_ENV

echo "## Mode" >> $GITHUB_STEP_SUMMARY
if [[ "${{ github.event.inputs.dry_run }}" == "true" ]]; then
echo "DRY_RUN=1" >> $GITHUB_ENV
echo "‼️ DRY_RUN mode enabled - No actual changes will be made" >> $GITHUB_STEP_SUMMARY
else
echo "DRY_RUN=0" >> $GITHUB_ENV
echo "DRY_RUN mode disabled - Performing actual operations" >> $GITHUB_STEP_SUMMARY
fi

- name: Auto-determine release branch and next RC number
run: |
source "${LIBS_DIR}/_version.sh"

# Get the current branch name
current_branch=$(git branch --show-current)

echo "## Parameters" >> $GITHUB_STEP_SUMMARY

# Validate that we're on a release branch
if [[ ! "${current_branch}" =~ ^release/(.+)$ ]]; then
echo "❌ Invalid branch: \`${current_branch}\`. This workflow must be run from a release branch (release/major.minor.x)" >> $GITHUB_STEP_SUMMARY
exit 1
fi

# Extract version from release branch name
branch_version="${BASH_REMATCH[1]}"

# Validate branch version format and extract components
if ! validate_and_extract_branch_version "${branch_version}"; then
echo "❌ Invalid release branch version format: \`${branch_version}\`, expected: major.minor.x" >> $GITHUB_STEP_SUMMARY
exit 1
fi

# Find the next available patch number for this major.minor version
find_next_patch_number "${major}" "${minor}"

# Build the target version using branch major.minor and determined patch
version_without_rc="${major}.${minor}.${patch}-incubating"

# Find the next available RC number by checking existing tags
find_next_rc_number "${version_without_rc}"

# Build the new release tag
release_tag="apache-polaris-${version_without_rc}-rc${rc_number}"

# Export all variables for next steps
echo "release_tag=${release_tag}" >> $GITHUB_ENV
echo "major=${major}" >> $GITHUB_ENV
echo "minor=${minor}" >> $GITHUB_ENV
echo "patch=${patch}" >> $GITHUB_ENV
echo "rc_number=${rc_number}" >> $GITHUB_ENV
echo "version_without_rc=${version_without_rc}" >> $GITHUB_ENV
echo "release_branch=${current_branch}" >> $GITHUB_ENV

cat <<EOT >> $GITHUB_STEP_SUMMARY
| Parameter | Value |
| --- | --- |
| Release branch | \`${current_branch}\` |
| Version without RC | \`${version_without_rc}\` |
| RC number | \`${rc_number}\` |
| Release tag | \`${release_tag}\` |
EOT

- name: Verify GitHub checks are passing
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
source "${LIBS_DIR}/_github.sh"

# Get the current HEAD commit SHA
current_commit=$(git rev-parse HEAD)

echo "## Validation" >> $GITHUB_STEP_SUMMARY

# Verify all GitHub checks are passing
if ! check_github_checks_passed "${current_commit}"; then
echo "❌ GitHub checks are not all passing for commit \`${current_commit}\`. Please ensure all checks pass before updating the release candidate." >> $GITHUB_STEP_SUMMARY
exit 1
fi

echo "All GitHub checks are passing for commit \`${current_commit}\`" >> $GITHUB_STEP_SUMMARY

- name: Set up Java
uses: actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5
with:
distribution: 'temurin'
java-version: '21'

- name: Update project versions
run: |
source "${LIBS_DIR}/_version.sh"

update_version "${version_without_rc}"
cat <<EOT >> $GITHUB_STEP_SUMMARY
## Version update
All version files updated to \`${version_without_rc}\`
EOT

- name: Update changelog
run: |
source "${LIBS_DIR}/_exec.sh"
exec_process ./gradlew patchChangelog

cat <<EOT >> $GITHUB_STEP_SUMMARY
## Changelog
Changelog patched successfully
EOT

- name: Commit and push changes
run: |
source "${LIBS_DIR}/_constants.sh"
source "${LIBS_DIR}/_exec.sh"

# Commit version files and changelog
exec_process git add \
"$VERSION_FILE" \
"$HELM_CHART_YAML_FILE" \
"$HELM_README_FILE" \
"$CHANGELOG_FILE"
exec_process git commit -m "[chore] Bump version to ${version_without_rc} for release candidate ${rc_number}"

# Push the changes
exec_process git push origin "${release_branch}"

# Get the new commit SHA after our changes
new_tag_ref=$(git rev-parse HEAD)
echo "new_tag_ref=${new_tag_ref}" >> $GITHUB_ENV

- name: Create RC tag at new commit
run: |
source "${LIBS_DIR}/_exec.sh"

# Create the tag at the new commit
exec_process git tag "${release_tag}" "${new_tag_ref}"
exec_process git push origin "${release_tag}"

echo "## Summary" >> $GITHUB_STEP_SUMMARY
cat <<EOT >> $GITHUB_STEP_SUMMARY
🎉 Release candidate tag created successfully:

| Name | Value |
| --- | --- |
| Release candidate tag | \`${release_tag}\` |
| Commit | \`${new_tag_ref}\` |
| Version | \`${version_without_rc}\` |
| RC number | \`${rc_number}\` |
EOT
Loading