From 92c064c2640d0ebbac66f57fb2a16468fbf0c4f7 Mon Sep 17 00:00:00 2001 From: David Gwilliam Date: Tue, 31 Mar 2026 18:55:11 -0700 Subject: [PATCH] feat: add Gitea Actions release workflow --- .gitea/workflows/release.yml | 103 +++++++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 .gitea/workflows/release.yml diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml new file mode 100644 index 0000000..05ec557 --- /dev/null +++ b/.gitea/workflows/release.yml @@ -0,0 +1,103 @@ +name: Release + +on: + push: + branches: + - main + +env: + REGISTRY: euchre-camp + IMAGE_NAME: euchre-camp + +jobs: + release: + runs-on: ubuntu-latest + if: "!contains(github.event.head_commit.message, 'chore: bump version')" + + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '20' + cache: 'npm' + + - name: Install dependencies + run: npm ci + + - name: Run tests + run: npm run test:run + + - name: Configure Git + run: | + git config user.name "Gitea Actions" + git config user.email "actions@gitea.com" + + - name: Determine version bump type + id: bump_type + run: | + # Get commits since last tag + LAST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "") + if [ -z "$LAST_TAG" ]; then + COMMITS=$(git log --oneline) + else + COMMITS=$(git log --oneline ${LAST_TAG}..HEAD) + fi + + if echo "$COMMITS" | grep -q "BREAKING\|!:"; then + echo "bump=major" >> $GITHUB_OUTPUT + elif echo "$COMMITS" | grep -q "^feat"; then + echo "bump=minor" >> $GITHUB_OUTPUT + else + echo "bump=patch" >> $GITHUB_OUTPUT + fi + + - name: Bump version + id: version + run: | + BUMP="${{ steps.bump_type.outputs.bump }}" + echo "Bumping version: $BUMP" + npm run version:$BUMP + + # Get new version + NEW_VERSION=$(node -p "require('./package.json').version") + echo "new_version=$NEW_VERSION" >> $GITHUB_OUTPUT + + - name: Commit and push version bump + run: | + git add package.json CHANGELOG.md + git commit -m "chore: bump version to v${{ steps.version.outputs.new_version }}" + git push origin main + + - name: Create git tag + run: | + git tag -a "v${{ steps.version.outputs.new_version }}" -m "Release v${{ steps.version.outputs.new_version }}" + git push origin "v${{ steps.version.outputs.new_version }}" + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Build Docker image + run: | + docker build \ + --build-arg GIT_COMMIT=${{ github.sha }} \ + -t ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.new_version }} \ + -t ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest \ + . + + - name: Push Docker images + run: | + # Note: This assumes Docker daemon is already authenticated to the registry + docker push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.version.outputs.new_version }} + docker push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest + + - name: Deploy to dev (placeholder) + run: | + echo "Deploying version ${{ steps.version.outputs.new_version }} to dev environment..." + # TODO: Add actual deployment steps + # Example: SSH to dev server and update container + # ssh user@dev-server "cd /path/to/app && docker compose pull && docker compose up -d"