9b69cb84e3
Test / unit-tests (push) Has been cancelled
Test / safe-acceptance-tests (push) Has been cancelled
Pull Request / unit-tests (pull_request) Successful in 13m14s
Test / unit-tests (pull_request) Successful in 13m11s
Pull Request / analyze-bump-type (pull_request) Successful in 10s
Test / safe-acceptance-tests (pull_request) Has been cancelled
3.8 KiB
3.8 KiB
Gitea Actions Workflow Architecture
This document describes the workflow architecture for version bumping and releases.
Overview
The workflow architecture uses a two-step process:
- PR Workflow: Analyzes commits and suggests bump type
- Release Workflow: Bumps version, creates tags, and builds Docker images on merge
Workflow Files
1. .gitea/workflows/pr.yml (Pull Request Workflow)
Trigger: Pull requests to main branch
Purpose:
- Run unit tests on every PR
- Analyze commits to determine bump type (major/minor/patch)
- Comment the suggested bump type on the PR
Bump Type Detection:
- Major: Breaking changes detected (
BREAKING CHANGEor!:in commit messages) - Minor: Feature commits detected (
feat:prefix) - Patch: Default for fixes and other changes
2. .gitea/workflows/release.yml (Release Workflow)
Trigger: Pushes to main branch (after PR merge)
Purpose:
- Determine bump type from merge commit or PR commits
- Bump version in
package.jsonandCHANGELOG.md - Commit the version bump
- Create git tag for the release
- Run tests inside Docker container
- Build production Docker image
- Push images to registry
- Deploy to dev environment
Key Features:
- Skips commits that are auto-generated version bumps
- Uses
DOCKER_LOGINandDOCKER_PASSWORDsecrets for registry auth - Handles existing git tags gracefully
Version Bump Logic
Step 1: PR Analysis (pr.yml)
When a PR is opened or updated:
- Fetch the merge base with
main - Analyze all commits in the PR
- Determine bump type based on commit messages:
- Breaking changes → major
- Features → minor
- Fixes → patch
- Comment the suggested bump type on the PR
Step 2: Release (release.yml)
When a PR is merged to main:
- Check if the commit is an auto-bump (skip if so)
- Analyze the merge commit message or PR commits
- Run
node scripts/bump-version.js <type> --yes - Commit the version bump changes
- Create and push git tag
- Build and push Docker images
Environment Variables & Secrets
Required Secrets
DOCKER_LOGIN: Username for Docker registry authenticationDOCKER_PASSWORD: Password for Docker registry authenticationGITEA_TOKEN(optional): For pushing back to repo (if needed)
Environment Variables
REGISTRY: Docker registry URL (default:docker.notsosm.art)IMAGE_NAME: Docker image name (default:euchre-camp)
Example Workflow
Scenario: Feature PR
- Developer opens PR with commits:
- "feat: add new feature"
- "fix: resolve edge case"
- PR workflow runs:
- Unit tests pass
- Bump type analysis suggests "minor"
- Comment posted on PR: "Suggested bump: MINOR"
- Developer merges PR
- Release workflow runs:
- Detects minor bump from commits
- Bumps version from 0.1.1 → 0.2.0
- Commits version bump
- Creates tag v0.2.0
- Builds and pushes Docker image
- Deploys to dev
Scenario: Breaking Change PR
- Developer opens PR with commit:
- "feat!: breaking API change"
- PR workflow runs:
- Detects breaking change marker
- Suggests "major" bump
- Comments on PR
- Developer merges PR
- Release workflow runs:
- Detects major bump
- Bumps version from 0.1.1 → 1.0.0
- Creates tag v1.0.0
- Proceeds with build and deploy
Benefits
- No CI Loops: Version bump commits are detected and skipped
- Clear Communication: PR comments inform developers of impact
- Semantic Versioning: Automated adherence to semver rules
- Traceability: Git tags and changelog reflect all changes
- Safe Releases: Tests run before version bump and deployment
Future Enhancements
- Add GitHub/Gitea Release creation
- Slack/Discord notifications on release
- Automatic rollback on test failure
- Multi-environment deployment (dev/staging/prod)