45 / 57 · 17 Git & Version Control · Tagging and Releases← prev⊞ allnext →☰ Read as one page
6.5Associating Test Results with Releases
The gold standard is a release process where test results are permanently linked to the release tag.
In the Tag Message
git tag -a v2.4.0 -m "Release 2.4.0
Test Results:
Unit tests: 1,247/1,247 passed
Integration tests: 89/89 passed
Browser tests: 342/342 passed (Chrome 120, Firefox 121, Safari 17)
Visual regression: 0 diffs detected
Performance: LCP 1.2s (budget: 2.5s), FID 45ms (budget: 100ms)
CI Run: https://github.com/org/repo/actions/runs/12345
Test Report: https://qa-reports.example.com/releases/2.4.0
Known Issues:
SHOP-567: Tooltip misalignment on mobile (low priority)
SHOP-589: Slow search on large datasets (medium, fix planned for 2.5.0)"
In GitHub Releases
GitHub Releases provide a richer interface than raw tags. You can add formatted release notes, attach binary artifacts, and mark pre-releases.
# Create a GitHub release from a tag
gh release create v2.4.0 \
--title "Release 2.4.0" \
--notes "## What's New
- Redesigned checkout flow
- Added PayPal support
- Fixed 12 bugs from 2.3.x
## Test Results
- Full regression: 342/342 passed
- [CI Run](https://github.com/org/repo/actions/runs/12345)
- [Test Report](https://qa-reports.example.com/releases/2.4.0)
## Known Issues
- SHOP-567: Tooltip misalignment on mobile"
In CI/CD Pipeline (Automated)
The best approach: automate release tagging as part of the pipeline.
# Tag and release after all tests pass
create-release:
needs: [unit-tests, integration-tests, browser-tests]
if: github.ref == 'refs/heads/main' && github.event_name == 'push'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Determine version
id: version
run: echo "VERSION=$(cat package.json | jq -r .version)" >> $GITHUB_OUTPUT
- name: Create tag
run: |
git tag -a "v${{ steps.version.outputs.VERSION }}" \
-m "Release ${{ steps.version.outputs.VERSION }} - all tests passed"
git push origin "v${{ steps.version.outputs.VERSION }}"