diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml index 86a5465..aa0df03 100644 --- a/.gitea/workflows/build.yml +++ b/.gitea/workflows/build.yml @@ -2,16 +2,9 @@ name: Gitea CI/CD on: workflow_dispatch: - #push: - #branches: [ "development", "main", "staging"] - #tags: [ "v*.*.*" ] - pull_request: - #branches: [ "development", "main", "staging" ] - tags: [ "v*.*.*" ] - -permissions: - contents: write - packages: write + push: + branches: [ "development", "main", "staging" ] + tags: [ "v*.*.*" ] env: DOTNET_VERSION: '8.0.x' @@ -19,6 +12,10 @@ env: REGISTRY_URL: git.triggermeelmo.com DOCKER_PLATFORMS: 'linux/amd64,linux/arm64' +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + jobs: build-and-test: runs-on: ubuntu-latest @@ -46,13 +43,14 @@ jobs: 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 - with: - fetch-depth: 0 - name: Determine next semantic version tag id: set_tag @@ -74,17 +72,27 @@ jobs: 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}" fi - new_tag="v${major}.${minor}.${patch}" - echo "Creating new version tag: ${new_tag}" - echo "tag_name=${new_tag}" >> $GITHUB_OUTPUT - docker-build-and-push: runs-on: ubuntu-latest needs: [build-and-test, set-tag] @@ -111,37 +119,22 @@ jobs: tag: name: Create Tag - needs: [docker-build-and-push] + needs: [docker-build, build, set-tag] runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - token: ${{ secrets.GITHUB_TOKEN }} - - name: Check if tag already exists - id: check_tag + - name: Set up Git user run: | - git fetch --tags - if git rev-parse "${{ needs.set-tag.outputs.tag_name }}" >/dev/null 2>&1; then - echo "Tag ${{ needs.set-tag.outputs.tag_name }} already exists!" - echo "exists=true" >> $GITHUB_OUTPUT - else - echo "Tag ${{ needs.set-tag.outputs.tag_name }} does not exist" - echo "exists=false" >> $GITHUB_OUTPUT - fi - - - name: Create and push tag - if: steps.check_tag.outputs.exists == 'false' - run: | - echo "Creating new tag: ${{ needs.set-tag.outputs.tag_name }}" git config user.name "GitHub Actions" git config user.email "actions@github.com" - git tag ${{ needs.set-tag.outputs.tag_name }} - git push -u origin ${{ needs.set-tag.outputs.tag_name }} - echo "Tag created and pushed successfully" - - name: Skip tag creation - if: steps.check_tag.outputs.exists == 'true' + - name: Create and push tag + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | - echo "Skipping tag creation - ${{ needs.set-tag.outputs.tag_name }} already exists" \ No newline at end of file + echo "Creating new tag: ${{ needs.set-tag.outputs.tag_name }}" + git tag ${{ needs.set-tag.outputs.tag_name }} + git push origin ${{ needs.set-tag.outputs.tag_name }} \ No newline at end of file