Reusable GitHub Actions workflows for the Data Science Club.
- Node Build - Build Node.js applications with Infisical secrets
- Vercel Deploy - Deploy to Vercel
- Quality Gate - Lint and typecheck
- Quality Sonar - SonarQube analysis
- Dispatch Docs Update - Notify the docs app (nexus-docs) when a PR merges so the changelog gets updated
This repository uses automatic versioning based on conventional commits with manual fallback options.
Workflow: .github/workflows/release.yml
Automatically creates releases based on commit messages following Conventional Commits.
When you push to main, the workflow automatically:
- Analyzes commit messages since the last release
- Determines the version bump (major, minor, or patch)
- Creates and pushes a version tag (e.g.,
v1.2.3) - Generates release notes from commits
- Creates a GitHub release
- Updates the major version tag (e.g.,
v1) to point to the latest release
For situations where you need manual control:
- Go to Actions → Release → Run workflow
- Choose options:
- Release type:
auto- Analyze commit messages (default)major- Force major version bump (e.g., 1.0.0 → 2.0.0)minor- Force minor version bump (e.g., 1.0.0 → 1.1.0)patch- Force patch version bump (e.g., 1.0.0 → 1.0.1)
- Dry run: Preview the version and changelog without creating a release
- Release type:
- Click Run workflow
Use manual mode when:
- You need to force a specific version bump regardless of commits
- You want to preview what will be released (dry run)
- Commit messages don't reflect the actual changes
- You need to create a release without waiting for new commits
Workflow: .github/workflows/release-tag.yml
Creates releases when you push a version tag (bypasses automatic versioning entirely).
To use:
# Create and push a tag
git tag v1.0.0
git push origin v1.0.0
# For pre-releases
git tag v1.0.0-beta.1
git push origin v1.0.0-beta.1Use tag-based when:
- The automatic release workflow is not working
- You need complete manual control over versioning
- Creating hotfix releases on older versions
Follow Conventional Commits for automatic releases:
<type>(<scope>): <description>
[optional body]
[optional footer]
feat:- New feature (triggers minor release: 1.0.0 → 1.1.0)fix:- Bug fix (triggers patch release: 1.0.0 → 1.0.1)perf:- Performance improvement (triggers patch release)docs:- Documentation changes (triggers patch release)refactor:- Code refactoring (triggers patch release)chore:- Maintenance (no release)test:- Test changes (no release)ci:- CI changes (no release)BREAKING CHANGE:- Breaking change (triggers major release: 1.0.0 → 2.0.0)
# Minor release (new feature)
feat: add new workflow for Docker builds
# Patch release (bug fix)
fix: correct artifact path in build workflow
# Major release (breaking change - option 1)
feat!: redesign workflow input parameters
# Major release (breaking change - option 2)
feat: change deployment strategy
BREAKING CHANGE: deployment now requires vercel-project-id
# No release
chore: update dependencies
test: add unit tests for workflowsJust commit using conventional commit format and push to main:
git commit -m "feat: add new deployment workflow"
git push origin main
# Automatically creates a release!If you need to force a specific version:
- Go to Actions → Release
- Click Run workflow
- Select
major,minor, orpatch - Click Run workflow
If semantic-release isn't working:
git tag v1.0.0
git push origin v1.0.0The release workflow uses github-tag-action to analyze conventional commits and determine version bumps automatically.