Checkout v6.0.1 was released yesterday (Dec 2, 2025) and is causing CI failures across all workflows. The v6 release requires minimum GitHub Actions Runner v2.329.0 for Docker container scenarios and likely has edge cases causing failures. Downgrading to v4.2.2 (stable release from Oct 2024) to restore CI stability. Can re-evaluate v6 after it matures. Affects 16 checkout action references across 12 workflow files: - quality-checks.yml - waf-integration.yml - docker-publish.yml - codecov-upload.yml - codeql.yml - benchmark.yml - docs.yml - release-goreleaser.yml - auto-versioning.yml - docker-lint.yml - auto-changelog.yml - renovate.yml
102 lines
3.7 KiB
YAML
102 lines
3.7 KiB
YAML
name: Auto Versioning and Release
|
|
|
|
on:
|
|
push:
|
|
branches: [ main ]
|
|
|
|
permissions:
|
|
contents: write
|
|
pull-requests: write
|
|
|
|
jobs:
|
|
version:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Generate semantic version (fallback script)
|
|
id: semver
|
|
run: |
|
|
# Ensure git tags are fetched
|
|
git fetch --tags --quiet || true
|
|
# Get latest tag or default to v0.0.0
|
|
TAG=$(git describe --abbrev=0 --tags 2>/dev/null || echo "v0.0.0")
|
|
echo "Detected latest tag: $TAG"
|
|
# Set outputs for downstream steps
|
|
echo "version=$TAG" >> $GITHUB_OUTPUT
|
|
echo "release_notes=Fallback: using latest tag only" >> $GITHUB_OUTPUT
|
|
echo "changed=false" >> $GITHUB_OUTPUT
|
|
|
|
- name: Show version
|
|
run: |
|
|
echo "Next version: ${{ steps.semver.outputs.version }}"
|
|
|
|
- id: create_tag
|
|
name: Create annotated tag and push
|
|
if: ${{ steps.semver.outputs.changed }}
|
|
run: |
|
|
# Ensure a committer identity is configured in the runner so git tag works
|
|
git config --global user.email "actions@github.com"
|
|
git config --global user.name "GitHub Actions"
|
|
|
|
# Normalize the version: remove any leading 'v' so we don't end up with 'vvX.Y.Z'
|
|
RAW="${{ steps.semver.outputs.version }}"
|
|
VERSION_NO_V="${RAW#v}"
|
|
|
|
TAG="v${VERSION_NO_V}"
|
|
echo "TAG=${TAG}"
|
|
|
|
# If tag already exists, skip creation to avoid failure
|
|
if git rev-parse -q --verify "refs/tags/${TAG}" >/dev/null; then
|
|
echo "Tag ${TAG} already exists; skipping tag creation"
|
|
else
|
|
git tag -a "${TAG}" -m "Release ${TAG}"
|
|
git push origin "${TAG}"
|
|
fi
|
|
|
|
# Export the tag for downstream steps
|
|
echo "tag=${TAG}" >> $GITHUB_OUTPUT
|
|
env:
|
|
CHARON_TOKEN: ${{ secrets.CHARON_TOKEN }}
|
|
|
|
- name: Determine tag
|
|
id: determine_tag
|
|
run: |
|
|
# Prefer created tag output; if empty fallback to semver version
|
|
TAG="${{ steps.create_tag.outputs.tag }}"
|
|
if [ -z "$TAG" ]; then
|
|
# semver.version contains a tag value like 'vX.Y.Z' or fallback 'v0.0.0'
|
|
VERSION_RAW="${{ steps.semver.outputs.version }}"
|
|
VERSION_NO_V="${VERSION_RAW#v}"
|
|
TAG="v${VERSION_NO_V}"
|
|
fi
|
|
echo "Determined tag: $TAG"
|
|
echo "tag=$TAG" >> $GITHUB_OUTPUT
|
|
|
|
- name: Check for existing GitHub Release
|
|
id: check_release
|
|
run: |
|
|
TAG=${{ steps.determine_tag.outputs.tag }}
|
|
echo "Checking for release for tag: ${TAG}"
|
|
STATUS=$(curl -s -o /dev/null -w "%{http_code}" -H "Authorization: token ${CHARON_TOKEN}" -H "Accept: application/vnd.github+json" "https://api.github.com/repos/${GITHUB_REPOSITORY}/releases/tags/${TAG}") || true
|
|
if [ "${STATUS}" = "200" ]; then
|
|
echo "exists=true" >> $GITHUB_OUTPUT
|
|
else
|
|
echo "exists=false" >> $GITHUB_OUTPUT
|
|
fi
|
|
env:
|
|
CHARON_TOKEN: ${{ secrets.CHARON_TOKEN }}
|
|
|
|
- name: Create GitHub Release (tag-only, no workspace changes)
|
|
if: ${{ steps.semver.outputs.changed && steps.check_release.outputs.exists == 'false' }}
|
|
uses: softprops/action-gh-release@a06a81a03ee405af7f2048a818ed3f03bbf83c7b # v2
|
|
with:
|
|
tag_name: ${{ steps.determine_tag.outputs.tag }}
|
|
name: Release ${{ steps.determine_tag.outputs.tag }}
|
|
body: ${{ steps.semver.outputs.release_notes }}
|
|
env:
|
|
CHARON_TOKEN: ${{ secrets.CHARON_TOKEN }}
|