diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index 5aaf241..0000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,93 +0,0 @@ -name: Release - -on: - workflow_dispatch: - push: - branches: [main] - paths: - - "pyproject.toml" - -permissions: - contents: write - -jobs: - check-version: - runs-on: ubuntu-latest - outputs: - should_release: ${{ steps.version_check.outputs.should_release }} - new_version: ${{ steps.version_check.outputs.new_version }} - steps: - - uses: actions/checkout@v5 - with: - fetch-depth: 0 - - - name: Check for major/minor version bump - id: version_check - env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - NEW_VERSION=$(grep -m1 '^version' pyproject.toml | sed 's/version = "\(.*\)"/\1/') - echo "Detected version in pyproject.toml: $NEW_VERSION" - - LATEST_TAG=$(gh release list --limit 1 --json tagName -q '.[0].tagName' || true) - echo "Latest GitHub release: $LATEST_TAG" - - if [ -z "$LATEST_TAG" ]; then - echo "No previous release found, treating as new release" - echo "should_release=true" >> "$GITHUB_OUTPUT" - echo "new_version=$NEW_VERSION" >> "$GITHUB_OUTPUT" - exit 0 - fi - - OLD_MAJOR=$(echo "$LATEST_TAG" | cut -d. -f1) - OLD_MINOR=$(echo "$LATEST_TAG" | cut -d. -f2) - NEW_MAJOR=$(echo "$NEW_VERSION" | cut -d. -f1) - NEW_MINOR=$(echo "$NEW_VERSION" | cut -d. -f2) - - if [ "$NEW_MAJOR" -gt "$OLD_MAJOR" ] || [ "$NEW_MINOR" -gt "$OLD_MINOR" ]; then - echo "Major or minor version bump detected: $LATEST_TAG -> $NEW_VERSION" - echo "should_release=true" >> "$GITHUB_OUTPUT" - else - echo "Patch-only change ($LATEST_TAG -> $NEW_VERSION), skipping release" - echo "should_release=false" >> "$GITHUB_OUTPUT" - fi - - echo "new_version=$NEW_VERSION" >> "$GITHUB_OUTPUT" - - release: - needs: check-version - if: needs.check-version.outputs.should_release == 'true' - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v5 - - - name: Install uv - uses: astral-sh/setup-uv@v4 - - - name: Set up Python - run: uv python install 3.12 - - - name: Install dependencies and build - run: | - uv sync - uv build - - - name: Extract changelog for release - id: changelog - run: | - VERSION=${{ needs.check-version.outputs.new_version }} - # Extract the section for this version from CHANGELOG.md - awk "/^## \[$VERSION\]/{found=1; next} /^## \[/{if(found) exit} found{print}" CHANGELOG.md > release_notes.md - echo "Extracted release notes:" - cat release_notes.md - - - name: Create GitHub Release - env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - VERSION=${{ needs.check-version.outputs.new_version }} - gh release create "$VERSION" \ - --title "$VERSION" \ - --notes-file release_notes.md \ - dist/unshackle-${VERSION}-py3-none-any.whl \ - dist/unshackle-${VERSION}.tar.gz diff --git a/.github/workflows/version-bump.yml b/.github/workflows/version-bump.yml deleted file mode 100644 index 6e35cb1..0000000 --- a/.github/workflows/version-bump.yml +++ /dev/null @@ -1,72 +0,0 @@ -name: Version Bump - -on: - schedule: - - cron: "0 8 * * *" # daily 08:00 UTC - workflow_dispatch: - -permissions: - contents: write - -concurrency: - group: version-bump - cancel-in-progress: false - -jobs: - bump: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v5 - with: - ref: dev - fetch-depth: 0 - - - name: Install git-cliff - uses: taiki-e/install-action@v2 - with: - tool: git-cliff - - - name: Compute next version - id: bump - run: | - CURRENT=$(grep -m1 '^version' pyproject.toml | sed 's/version = "\(.*\)"/\1/') - NEXT=$(git cliff --bumped-version) - echo "Current version: $CURRENT, bumped version: $NEXT" - - if [ "$NEXT" = "$CURRENT" ]; then - echo "No releasable commits since $CURRENT, skipping" - echo "skip=true" >> "$GITHUB_OUTPUT" - else - echo "skip=false" >> "$GITHUB_OUTPUT" - echo "version=$NEXT" >> "$GITHUB_OUTPUT" - fi - - - name: Update version files - if: steps.bump.outputs.skip == 'false' - run: | - V=${{ steps.bump.outputs.version }} - sed -i "s/^version = \".*\"/version = \"$V\"/" pyproject.toml - sed -i "s/^__version__ = \".*\"/__version__ = \"$V\"/" unshackle/core/__init__.py - - - name: Install uv - if: steps.bump.outputs.skip == 'false' - uses: astral-sh/setup-uv@v4 - - - name: Update uv.lock - if: steps.bump.outputs.skip == 'false' - run: uv lock - - - name: Prepend changelog entry - if: steps.bump.outputs.skip == 'false' - run: git cliff --unreleased --tag ${{ steps.bump.outputs.version }} --prepend CHANGELOG.md - - - name: Commit, tag, and push - if: steps.bump.outputs.skip == 'false' - run: | - V=${{ steps.bump.outputs.version }} - git config user.name "github-actions[bot]" - git config user.email "github-actions[bot]@users.noreply.github.com" - git add pyproject.toml unshackle/core/__init__.py uv.lock CHANGELOG.md - git commit -m "chore(release): bump version to $V" - git tag "$V" - git push origin dev "$V"