From d77f61f361663e792463ae43c28a5c22828c0778 Mon Sep 17 00:00:00 2001 From: Jason Ross Date: Fri, 17 Oct 2025 10:19:15 -0500 Subject: [PATCH] added error handling and semver format verification for release number in jobs" --- .github/workflows/release.yml | 85 ++++++++++++++++++++++++++++++++--- 1 file changed, 80 insertions(+), 5 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0355114..e5e2eb8 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -379,7 +379,21 @@ jobs: run: | set -e # Read version from pyproject.toml (single source of truth) - VERSION="$(poetry version -s)" + if ! VERSION="$(poetry version -s 2>&1)"; then + echo "::error::Failed to read version from pyproject.toml" + echo "::error::Poetry output: $VERSION" + exit 1 + fi + if [ -z "$VERSION" ]; then + echo "::error::Version is empty in pyproject.toml" + exit 1 + fi + # Validate semver format + if ! [[ "$VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z0-9]+(\.[a-zA-Z0-9]+)*)?(\+[a-zA-Z0-9]+(\.[a-zA-Z0-9]+)*)?$ ]]; then + echo "::error::Invalid version format in pyproject.toml: $VERSION" + echo "::error::Expected semantic version format (e.g., 1.2.3, 1.2.3-beta.1, 1.2.3+build.123)" + exit 1 + fi echo "Using version from pyproject.toml: $VERSION" # Create PR with auto-merge enabled @@ -653,7 +667,22 @@ jobs: shell: bash run: | set -euo pipefail - VERSION="$(poetry version -s)" + if ! VERSION="$(poetry version -s 2>&1)"; then + echo "::error::Failed to read version from pyproject.toml" + echo "::error::Poetry output: $VERSION" + exit 1 + fi + if [ -z "$VERSION" ]; then + echo "::error::Version is empty in pyproject.toml" + exit 1 + fi + # Validate semver format + if ! [[ "$VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z0-9]+(\.[a-zA-Z0-9]+)*)?(\+[a-zA-Z0-9]+(\.[a-zA-Z0-9]+)*)?$ ]]; then + echo "::error::Invalid version format in pyproject.toml: $VERSION" + echo "::error::Expected semantic version format (e.g., 1.2.3, 1.2.3-beta.1, 1.2.3+build.123)" + exit 1 + fi + echo "Using version: $VERSION" PKG_DIR="pkg_dist_debian" mkdir -p dist echo "Packaging from $PKG_DIR" @@ -769,7 +798,21 @@ jobs: -e FPM_VERSION=${{ env.FPM_VERSION }} \ ghcr.io/jmr-dev/android-file-handler-arch-builder:latest \ sh -c 'set -euo pipefail && \ - VERSION="$(poetry version -s)" && \ + if ! VERSION="$(poetry version -s 2>&1)"; then \ + echo "::error::Failed to read version from pyproject.toml" >&2 && \ + echo "::error::Poetry output: $VERSION" >&2 && \ + exit 1; \ + fi && \ + if [ -z "$VERSION" ]; then \ + echo "::error::Version is empty in pyproject.toml" >&2 && \ + exit 1; \ + fi && \ + if ! [[ "$VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z0-9]+(\.[a-zA-Z0-9]+)*)?(\+[a-zA-Z0-9]+(\.[a-zA-Z0-9]+)*)?$ ]]; then \ + echo "::error::Invalid version format in pyproject.toml: $VERSION" >&2 && \ + echo "::error::Expected semantic version format (e.g., 1.2.3, 1.2.3-beta.1, 1.2.3+build.123)" >&2 && \ + exit 1; \ + fi && \ + echo "Using version: $VERSION" && \ PKG_DIR="pkg_dist_arch" && \ mkdir -p dist && \ echo "Packaging from $PKG_DIR" && \ @@ -877,7 +920,22 @@ jobs: shell: bash run: | set -euo pipefail - VERSION="$(poetry version -s)" + if ! VERSION="$(poetry version -s 2>&1)"; then + echo "::error::Failed to read version from pyproject.toml" + echo "::error::Poetry output: $VERSION" + exit 1 + fi + if [ -z "$VERSION" ]; then + echo "::error::Version is empty in pyproject.toml" + exit 1 + fi + # Validate semver format + if ! [[ "$VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z0-9]+(\.[a-zA-Z0-9]+)*)?(\+[a-zA-Z0-9]+(\.[a-zA-Z0-9]+)*)?$ ]]; then + echo "::error::Invalid version format in pyproject.toml: $VERSION" + echo "::error::Expected semantic version format (e.g., 1.2.3, 1.2.3-beta.1, 1.2.3+build.123)" + exit 1 + fi + echo "Using version: $VERSION" PKG_DIR="pkg_dist_rhel" mkdir -p dist echo "Packaging from $PKG_DIR (version=$VERSION)" @@ -1043,7 +1101,24 @@ jobs: - name: Get version id: version - run: echo "version=$(poetry version -s)" >> $GITHUB_OUTPUT + run: | + if ! VERSION="$(poetry version -s 2>&1)"; then + echo "::error::Failed to read version from pyproject.toml" + echo "::error::Poetry output: $VERSION" + exit 1 + fi + if [ -z "$VERSION" ]; then + echo "::error::Version is empty in pyproject.toml" + exit 1 + fi + # Validate semver format + if ! [[ "$VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z0-9]+(\.[a-zA-Z0-9]+)*)?(\+[a-zA-Z0-9]+(\.[a-zA-Z0-9]+)*)?$ ]]; then + echo "::error::Invalid version format in pyproject.toml: $VERSION" + echo "::error::Expected semantic version format (e.g., 1.2.3, 1.2.3-beta.1, 1.2.3+build.123)" + exit 1 + fi + echo "Using version: $VERSION" + echo "version=$VERSION" >> $GITHUB_OUTPUT - name: Download all artifacts uses: actions/download-artifact@v4