Skip to content

Commit 75100e6

Browse files
authored
Merge branch 'main' into uv-build-frontend-and-workspace
2 parents cc25427 + 67251a3 commit 75100e6

22 files changed

Lines changed: 640 additions & 522 deletions

File tree

.github/workflows/ci.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,7 @@ jobs:
221221
uses: ./.github/workflows/build-docs.yml
222222
with:
223223
build-ctk-ver: ${{ needs.ci-vars.outputs.CUDA_BUILD_VER }}
224+
is-release: ${{ github.ref_type == 'tag' }}
224225

225226
checks:
226227
name: Check job status

.github/workflows/release-cuda-pathfinder.yml

Lines changed: 12 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44

55
# One-click release workflow for cuda-pathfinder.
66
#
7-
# Provide a version number and commit SHA. The workflow automatically finds
8-
# the CI run and creates the git tag, creates a draft GitHub release with the standard
7+
# Provide a release tag. The workflow finds
8+
# the CI run, creates a draft GitHub release with the standard
99
# body, builds versioned docs, uploads source archive + wheels to the
1010
# release, publishes to TestPyPI, verifies the install, publishes to PyPI,
1111
# verifies again, and finally marks the release as published.
@@ -15,12 +15,8 @@ name: "Release: cuda-pathfinder"
1515
on:
1616
workflow_dispatch:
1717
inputs:
18-
version:
19-
description: "Version to release (e.g. 1.3.5)"
20-
required: true
21-
type: string
22-
commit:
23-
description: "Commit SHA to release (must be on default branch)"
18+
tag:
19+
description: "Release tag to publish (e.g. cuda-pathfinder-v1.3.5)"
2420
required: true
2521
type: string
2622

@@ -34,7 +30,7 @@ defaults:
3430

3531
jobs:
3632
# --------------------------------------------------------------------------
37-
# Validate inputs, find the CI run, create the tag + draft release.
33+
# Collect release metadata, find the CI run, create a draft release.
3834
# --------------------------------------------------------------------------
3935
prepare:
4036
runs-on: ubuntu-latest
@@ -53,52 +49,22 @@ jobs:
5349
exit 1
5450
fi
5551
56-
- name: Validate version
52+
- name: Set release variables
5753
id: vars
5854
env:
59-
VERSION_INPUT: ${{ inputs.version }}
55+
TAG_INPUT: ${{ inputs.tag }}
6056
run: |
61-
# Strip leading "v" if present (common typo)
62-
version="${VERSION_INPUT#v}"
63-
if [[ ! "${version}" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
64-
echo "::error::Version must be MAJOR.MINOR.PATCH, got: ${version}"
65-
exit 1
66-
fi
67-
tag="cuda-pathfinder-v${version}"
57+
version="${TAG_INPUT#cuda-pathfinder-v}"
6858
{
69-
echo "tag=${tag}"
59+
echo "tag=${TAG_INPUT}"
7060
echo "version=${version}"
7161
} >> "$GITHUB_OUTPUT"
7262
73-
- name: Validate commit input format
74-
env:
75-
COMMIT_INPUT: ${{ inputs.commit }}
76-
run: |
77-
# Require a full SHA to avoid ambiguity and accidental releases.
78-
if [[ ! "${COMMIT_INPUT}" =~ ^[0-9a-fA-F]{40}$ ]]; then
79-
echo "::error::Commit must be a full 40-character SHA, got: ${COMMIT_INPUT}"
80-
exit 1
81-
fi
82-
8363
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
8464
with:
8565
fetch-depth: 0
86-
ref: ${{ inputs.commit }}
87-
88-
- name: Validate and resolve commit
89-
id: commit
90-
env:
91-
DEFAULT_BRANCH: ${{ github.event.repository.default_branch }}
92-
run: |
93-
git fetch --no-tags origin "${DEFAULT_BRANCH}"
94-
commit=$(git rev-parse --verify "HEAD^{commit}")
95-
96-
if ! git merge-base --is-ancestor "${commit}" "origin/${DEFAULT_BRANCH}"; then
97-
echo "::error::Commit ${commit} is not reachable from origin/${DEFAULT_BRANCH}"
98-
exit 1
99-
fi
100-
101-
echo "commit=${commit}" >> "$GITHUB_OUTPUT"
66+
# Resolve only the exact tag ref; checkout fails if the tag does not exist.
67+
ref: refs/tags/${{ steps.vars.outputs.tag }}
10268

10369
- name: Check release notes exist
10470
env:
@@ -117,22 +83,6 @@ jobs:
11783
ctk_ver=$(yq '.cuda.build.version' ci/versions.yml)
11884
echo "ctk-ver=${ctk_ver}" >> "$GITHUB_OUTPUT"
11985
120-
- name: Create tag
121-
env:
122-
TAG: ${{ steps.vars.outputs.tag }}
123-
TARGET_COMMIT: ${{ steps.commit.outputs.commit }}
124-
run: |
125-
if git rev-parse "${TAG}" >/dev/null 2>&1; then
126-
existing_commit=$(git rev-parse "${TAG}^{commit}")
127-
if [[ "${existing_commit}" != "${TARGET_COMMIT}" ]]; then
128-
echo "::error::Tag ${TAG} already exists at ${existing_commit}, expected ${TARGET_COMMIT}"
129-
exit 1
130-
fi
131-
else
132-
git tag "${TAG}" "${TARGET_COMMIT}"
133-
git push origin "${TAG}"
134-
fi
135-
13686
- name: Detect CI run ID
13787
id: detect-run
13888
env:
@@ -179,6 +129,7 @@ jobs:
179129
--repo "${{ github.repository }}" \
180130
--draft \
181131
--latest=false \
132+
--verify-tag \
182133
--title "cuda-pathfinder v${VERSION}" \
183134
--notes-file /tmp/release-body.md
184135

0 commit comments

Comments
 (0)