From fb1d016b36fe720ef144e22638d137a12985f205 Mon Sep 17 00:00:00 2001 From: donpat1to Date: Sat, 4 Oct 2025 00:42:03 +0200 Subject: [PATCH] excluding builds on subbranches --- .github/workflows/build.yml | 94 +++++++++++++++++++++---------------- 1 file changed, 53 insertions(+), 41 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d9b5345..fb43267 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -149,51 +149,64 @@ jobs: path: | ${{ needs.detect-project.outputs.project-dir }}/target/${{ matrix.target }}/release/${{ needs.detect-project.outputs.project-name }}${{ matrix.os == 'windows' && '.exe' || '' }} - set-tag: - name: Set Tag Name - needs: [detect-project, build] - if: ${{ !failure() && !cancelled() && github.event_name != 'pull_request' }} - runs-on: ubuntu-latest - outputs: - tag_name: ${{ steps.set_tag.outputs.tag_name }} - steps: - - uses: actions/checkout@v4 +set-tag: + name: Set Tag Name + needs: [detect-project, build] + if: ${{ !failure() && !cancelled() && github.event_name != 'pull_request' }} + runs-on: ubuntu-latest + outputs: + tag_name: ${{ steps.set_tag.outputs.tag_name }} + should_tag: ${{ steps.set_tag.outputs.should_tag }} + steps: + - uses: actions/checkout@v4 - - name: Determine next semantic version tag - id: set_tag - run: | - git fetch --tags + - name: Determine next semantic version tag + id: set_tag + run: | + git fetch --tags - # Find latest tag matching vX.Y.Z - latest_tag=$(git tag --list 'v*.*.*' --sort=-v:refname | head -n 1) - if [[ -z "$latest_tag" ]]; then - major=0 - minor=0 - patch=0 - else - version="${latest_tag#v}" - IFS='.' read -r major minor patch <<< "$version" - fi - - if [[ "${GITHUB_REF}" == "refs/heads/main" ]]; then - major=$((major + 1)) - minor=0 - patch=0 - elif [[ "${GITHUB_REF}" == "refs/heads/development" ]]; then - minor=$((minor + 1)) - patch=0 - elif [[ "${GITHUB_REF}" == "refs/heads/staging" ]]; then - patch=$((patch + 1)) - else - echo "Not on main, development, or staging branch. Using latest tag: $latest_tag" - echo "Not building docker image for this branch." - new_tag="$latest_tag" - echo "tag_name=${new_tag}" >> $GITHUB_OUTPUT - exit 0 - fi + # Find latest tag matching vX.Y.Z + latest_tag=$(git tag --list 'v*.*.*' --sort=-v:refname | head -n 1) + if [[ -z "$latest_tag" ]]; then + major=0 + minor=0 + patch=0 + else + version="${latest_tag#v}" + IFS='.' read -r major minor patch <<< "$version" + fi + if [[ "${GITHUB_REF}" == "refs/heads/main" ]]; then + major=$((major + 1)) + minor=0 + patch=0 new_tag="v${major}.${minor}.${patch}" echo "tag_name=${new_tag}" >> $GITHUB_OUTPUT + echo "should_tag=true" >> $GITHUB_OUTPUT + echo "Creating new major version tag: ${new_tag}" + + elif [[ "${GITHUB_REF}" == "refs/heads/development" ]]; then + minor=$((minor + 1)) + patch=0 + new_tag="v${major}.${minor}.${patch}" + echo "tag_name=${new_tag}" >> $GITHUB_OUTPUT + echo "should_tag=true" >> $GITHUB_OUTPUT + echo "Creating new minor version tag: ${new_tag}" + + elif [[ "${GITHUB_REF}" == "refs/heads/staging" ]]; then + patch=$((patch + 1)) + new_tag="v${major}.${minor}.${patch}" + echo "tag_name=${new_tag}" >> $GITHUB_OUTPUT + echo "should_tag=true" >> $GITHUB_OUTPUT + echo "Creating new patch version tag: ${new_tag}" + + else + echo "Not on main, development, or staging branch." + echo "Branch: ${GITHUB_REF}" + echo "Skipping tag creation and Docker build." + echo "should_tag=false" >> $GITHUB_OUTPUT + # Don't set tag_name output for non-release branches + fi docker-build: name: Build and Push Docker Image @@ -257,7 +270,6 @@ jobs: git tag ${{ needs.set-tag.outputs.tag_name }} git push origin ${{ needs.set-tag.outputs.tag_name }} - summary: name: Workflow Summary needs: [test, build, docker-build]