diff --git a/.gitea/workflows/docker-build.yml b/.gitea/workflows/docker-build.yml index 4aed6ad..712c4af 100644 --- a/.gitea/workflows/docker-build.yml +++ b/.gitea/workflows/docker-build.yml @@ -22,84 +22,56 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v4 + uses: https://github.com/actions/checkout@v4 with: fetch-depth: 0 # Full history for tag counting - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 + uses: https://github.com/docker/setup-buildx-action@v3 - name: Login to Docker Hub - uses: docker/login-action@v3 + uses: https://github.com/docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - # Generate CalVer: YYYY.MM.BUILD - # BUILD = count of tags matching current month + 1 - name: Generate CalVer version - id: meta - run: | - YEAR=$(date -u +%Y) - MONTH=$(date -u +%-m) - PREFIX="${YEAR}.${MONTH}." - - # Count existing tags for this month - git fetch --tags - BUILD=$(git tag -l "${PREFIX}*" | wc -l) - BUILD=$((BUILD + 1)) - - VERSION="${PREFIX}${BUILD}" - SHA_SHORT=$(echo ${{ github.sha }} | cut -c1-7) - - echo "version=${VERSION}" >> $GITHUB_OUTPUT - echo "sha_short=${SHA_SHORT}" >> $GITHUB_OUTPUT - echo "version_sha=${VERSION}-${SHA_SHORT}" >> $GITHUB_OUTPUT - echo "branch=${{ github.ref_name }}" >> $GITHUB_OUTPUT - echo "timestamp=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_OUTPUT - - echo "CalVer version: ${VERSION}" + id: calver + uses: cal/gitea-actions/calver@main # Dev build: push with dev + dev-SHA tags (PR/feature branches) - name: Build Docker image (dev) if: github.ref != 'refs/heads/main' - uses: docker/build-push-action@v5 + uses: https://github.com/docker/build-push-action@v5 with: context: . push: true tags: | manticorum67/major-domo-database:dev - manticorum67/major-domo-database:dev-${{ steps.meta.outputs.sha_short }} + manticorum67/major-domo-database:dev-${{ steps.calver.outputs.sha_short }} cache-from: type=registry,ref=manticorum67/major-domo-database:buildcache cache-to: type=registry,ref=manticorum67/major-domo-database:buildcache,mode=max # Production build: push with latest + CalVer tags (main only) - name: Build Docker image (production) if: github.ref == 'refs/heads/main' - uses: docker/build-push-action@v5 + uses: https://github.com/docker/build-push-action@v5 with: context: . push: true tags: | manticorum67/major-domo-database:latest - manticorum67/major-domo-database:${{ steps.meta.outputs.version }} - manticorum67/major-domo-database:${{ steps.meta.outputs.version_sha }} + manticorum67/major-domo-database:${{ steps.calver.outputs.version }} + manticorum67/major-domo-database:${{ steps.calver.outputs.version_sha }} cache-from: type=registry,ref=manticorum67/major-domo-database:buildcache cache-to: type=registry,ref=manticorum67/major-domo-database:buildcache,mode=max - # Create git tag via Gitea API (avoids branch protection issues with git push) - name: Tag release if: success() && github.ref == 'refs/heads/main' - run: | - curl -s -X POST \ - -H "Authorization: token ${{ github.token }}" \ - -H "Content-Type: application/json" \ - -d '{ - "tag_name": "${{ steps.meta.outputs.version }}", - "target": "${{ github.sha }}", - "message": "Release ${{ steps.meta.outputs.version }}" - }' \ - "${{ github.server_url }}/api/v1/repos/${{ github.repository }}/tags" + uses: cal/gitea-actions/gitea-tag@main + with: + version: ${{ steps.calver.outputs.version }} + token: ${{ github.token }} - name: Build Summary run: | @@ -107,13 +79,13 @@ jobs: echo "" >> $GITHUB_STEP_SUMMARY echo "**Image Tags:**" >> $GITHUB_STEP_SUMMARY echo "- \`manticorum67/major-domo-database:latest\`" >> $GITHUB_STEP_SUMMARY - echo "- \`manticorum67/major-domo-database:${{ steps.meta.outputs.version }}\`" >> $GITHUB_STEP_SUMMARY - echo "- \`manticorum67/major-domo-database:${{ steps.meta.outputs.version_sha }}\`" >> $GITHUB_STEP_SUMMARY + echo "- \`manticorum67/major-domo-database:${{ steps.calver.outputs.version }}\`" >> $GITHUB_STEP_SUMMARY + echo "- \`manticorum67/major-domo-database:${{ steps.calver.outputs.version_sha }}\`" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "**Build Details:**" >> $GITHUB_STEP_SUMMARY - echo "- Branch: \`${{ steps.meta.outputs.branch }}\`" >> $GITHUB_STEP_SUMMARY + echo "- Branch: \`${{ steps.calver.outputs.branch }}\`" >> $GITHUB_STEP_SUMMARY echo "- Commit: \`${{ github.sha }}\`" >> $GITHUB_STEP_SUMMARY - echo "- Timestamp: \`${{ steps.meta.outputs.timestamp }}\`" >> $GITHUB_STEP_SUMMARY + echo "- Timestamp: \`${{ steps.calver.outputs.timestamp }}\`" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY if [ "${{ github.ref }}" == "refs/heads/main" ]; then echo "Pushed to Docker Hub!" >> $GITHUB_STEP_SUMMARY @@ -125,78 +97,20 @@ jobs: - name: Discord Notification - Success if: success() && github.ref == 'refs/heads/main' - run: | - curl -H "Content-Type: application/json" \ - -d '{ - "embeds": [{ - "title": "Major Domo Database - Build Successful", - "description": "Docker image built and pushed to Docker Hub", - "color": 3066993, - "fields": [ - { - "name": "Version", - "value": "`${{ steps.meta.outputs.version }}`", - "inline": true - }, - { - "name": "Image Tag", - "value": "`${{ steps.meta.outputs.version_sha }}`", - "inline": true - }, - { - "name": "Commit", - "value": "`${{ steps.meta.outputs.sha_short }}`", - "inline": true - }, - { - "name": "Author", - "value": "${{ github.actor }}", - "inline": true - }, - { - "name": "View Run", - "value": "[Click here](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})", - "inline": false - } - ], - "timestamp": "${{ steps.meta.outputs.timestamp }}" - }] - }' \ - ${{ secrets.DISCORD_WEBHOOK_URL }} + uses: cal/gitea-actions/discord-notify@main + with: + webhook_url: ${{ secrets.DISCORD_WEBHOOK }} + title: "Major Domo Database" + status: success + version: ${{ steps.calver.outputs.version }} + image_tag: ${{ steps.calver.outputs.version_sha }} + commit_sha: ${{ steps.calver.outputs.sha_short }} + timestamp: ${{ steps.calver.outputs.timestamp }} - name: Discord Notification - Failure if: failure() && github.ref == 'refs/heads/main' - run: | - TIMESTAMP=$(date -u +%Y-%m-%dT%H:%M:%SZ) - curl -H "Content-Type: application/json" \ - -d '{ - "embeds": [{ - "title": "Major Domo Database - Build Failed", - "description": "Docker build encountered an error.", - "color": 15158332, - "fields": [ - { - "name": "Branch", - "value": "`${{ github.ref_name }}`", - "inline": true - }, - { - "name": "Commit", - "value": "`${{ github.sha }}`", - "inline": true - }, - { - "name": "Author", - "value": "${{ github.actor }}", - "inline": true - }, - { - "name": "View Logs", - "value": "[Click here](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})", - "inline": false - } - ], - "timestamp": "'"$TIMESTAMP"'" - }] - }' \ - ${{ secrets.DISCORD_WEBHOOK_URL }} + uses: cal/gitea-actions/discord-notify@main + with: + webhook_url: ${{ secrets.DISCORD_WEBHOOK }} + title: "Major Domo Database" + status: failure