docs(release): remove inline markdownlint disable comment

This commit is contained in:
Tuan-Dat Tran
2026-02-23 13:49:27 +01:00
parent 15a5c0a59c
commit 31d58103fd

View File

@@ -1,3 +1,5 @@
<!-- markdownlint-disable MD013 -->
# Release Engineering Documentation # Release Engineering Documentation
## Overview ## Overview
@@ -70,38 +72,38 @@ All commits must follow the [Conventional Commits](https://www.conventionalcommi
#### Commit Types #### Commit Types
| Type | Description | Version Bump | Example | | Type | Description | Version Bump | Example |
|------|-------------|--------------|---------| | ---------- | ----------------------- | --------------------- | ------------------------------------------- |
| `feat` | New feature | Minor (1.0.0 → 1.1.0) | `feat(admin): add password protection` | | `feat` | New feature | Minor (1.0.0 → 1.1.0) | `feat(admin): add password protection` |
| `fix` | Bug fix | Patch (1.0.0 → 1.0.1) | `fix(skills): prevent focus loss` | | `fix` | Bug fix | Patch (1.0.0 → 1.0.1) | `fix(skills): prevent focus loss` |
| `perf` | Performance improvement | Patch | `perf(ui): lazy load images` | | `perf` | Performance improvement | Patch | `perf(ui): lazy load images` |
| `feat!` | Breaking change | Major (1.0.0 → 2.0.0) | `feat(api)!: remove deprecated endpoints` | | `feat!` | Breaking change | Major (1.0.0 → 2.0.0) | `feat(api)!: remove deprecated endpoints` |
| `docs` | Documentation only | None | `docs(readme): update installation` | | `docs` | Documentation only | None | `docs(readme): update installation` |
| `style` | Code style (formatting) | None | `style(ui): fix indentation` | | `style` | Code style (formatting) | None | `style(ui): fix indentation` |
| `refactor` | Code refactoring | None | `refactor(auth): simplify token validation` | | `refactor` | Code refactoring | None | `refactor(auth): simplify token validation` |
| `test` | Adding/updating tests | None | `test(api): add auth middleware tests` | | `test` | Adding/updating tests | None | `test(api): add auth middleware tests` |
| `build` | Build system changes | None | `build(docker): update node version` | | `build` | Build system changes | None | `build(docker): update node version` |
| `ci` | CI/CD changes | None | `ci(github): add staging workflow` | | `ci` | CI/CD changes | None | `ci(github): add staging workflow` |
| `chore` | Maintenance tasks | None | `chore(deps): update dependencies` | | `chore` | Maintenance tasks | None | `chore(deps): update dependencies` |
| `revert` | Revert previous commit | Patch | `revert: remove broken feature` | | `revert` | Revert previous commit | Patch | `revert: remove broken feature` |
#### Allowed Scopes #### Allowed Scopes
| Scope | Description | | Scope | Description |
|-------|-------------| | ------------ | ---------------------- |
| `admin` | Admin panel components | | `admin` | Admin panel components |
| `api` | Backend API | | `api` | Backend API |
| `ui` | Frontend UI components | | `ui` | Frontend UI components |
| `docker` | Docker configuration | | `docker` | Docker configuration |
| `ci` | CI/CD workflows | | `ci` | CI/CD workflows |
| `deps` | Dependencies | | `deps` | Dependencies |
| `release` | Release configuration | | `release` | Release configuration |
| `auth` | Authentication | | `auth` | Authentication |
| `skills` | Skills section | | `skills` | Skills section |
| `experience` | Experience section | | `experience` | Experience section |
| `education` | Education section | | `education` | Education section |
| `projects` | Projects section | | `projects` | Projects section |
| `personal` | Personal info section | | `personal` | Personal info section |
### 2. semantic-release ### 2. semantic-release
@@ -139,6 +141,7 @@ Enforces conventional commits via:
- **CI job**: Validates commits in pull requests - **CI job**: Validates commits in pull requests
Configuration in `commitlint.config.js`: Configuration in `commitlint.config.js`:
- Validates commit types - Validates commit types
- Validates scopes - Validates scopes
- Enforces lowercase subjects - Enforces lowercase subjects
@@ -146,10 +149,10 @@ Configuration in `commitlint.config.js`:
### 4. Husky Git Hooks ### 4. Husky Git Hooks
| Hook | Purpose | Command | | Hook | Purpose | Command |
|------|---------|---------| | ------------ | ------------------------- | ------------------- |
| `pre-commit` | Run linting before commit | `npm run lint` | | `pre-commit` | Run linting before commit | `npm run lint` |
| `commit-msg` | Validate commit message | `commitlint --edit` | | `commit-msg` | Validate commit message | `commitlint --edit` |
### 5. GitHub Actions Workflows ### 5. GitHub Actions Workflows
@@ -250,16 +253,16 @@ Runs on: Schedule (daily at 02:00 UTC)
## Docker Image Tags ## Docker Image Tags
| Tag | Registry | Description | Update Frequency | | Tag | Registry | Description | Update Frequency |
|-----|----------|-------------|------------------| | ------------ | -------- | --------------------- | ---------------------- |
| `latest` | Both | Latest stable release | Every release | | `latest` | Both | Latest stable release | Every release |
| `v1.0.0` | Both | Specific version | Immutable | | `v1.0.0` | Both | Specific version | Immutable |
| `1.0` | Both | Major.minor | Points to latest patch | | `1.0` | Both | Major.minor | Points to latest patch |
| `1` | Both | Major version | Points to latest minor | | `1` | Both | Major version | Points to latest minor |
| `staging` | Both | Staging environment | Every staging push | | `staging` | Both | Staging environment | Every staging push |
| `nightly` | Both | Latest nightly build | Daily | | `nightly` | Both | Latest nightly build | Daily |
| `edge` | Both | Alias for nightly | Daily | | `edge` | Both | Alias for nightly | Daily |
| `2026-02-20` | Both | Date-specific nightly | Immutable | | `2026-02-20` | Both | Date-specific nightly | Immutable |
### Pulling Images ### Pulling Images
@@ -277,11 +280,11 @@ docker pull ghcr.io/owner/cv-app:v1.0.0
## Environments ## Environments
| Environment | Branch | Trigger | Docker Tag | | Environment | Branch | Trigger | Docker Tag |
|-------------|--------|---------|------------| | ----------- | --------- | ----------------------------------- | ------------------------------- |
| Production | `master` | semantic-release (feat/fix commits) | `latest`, `vX.Y.Z` | | Production | `master` | semantic-release (feat/fix commits) | `latest`, `vX.Y.Z` |
| Staging | `staging` | Push to branch | `staging` | | Staging | `staging` | Push to branch | `staging` |
| Nightly | `master` | Daily at 02:00 UTC | `nightly`, `edge`, `YYYY-MM-DD` | | Nightly | `master` | Daily at 02:00 UTC | `nightly`, `edge`, `YYYY-MM-DD` |
## Release Flow Example ## Release Flow Example
@@ -379,11 +382,11 @@ Developer commits: feat(admin): add export functionality
Configure these in GitHub repository settings → Secrets and variables → Actions: Configure these in GitHub repository settings → Secrets and variables → Actions:
| Secret | Description | Required For | | Secret | Description | Required For |
|--------|-------------|--------------| | -------------------- | ------------------------ | ------------------- |
| `DOCKERHUB_USERNAME` | Docker Hub username | Docker Hub push | | `DOCKERHUB_USERNAME` | Docker Hub username | Docker Hub push |
| `DOCKERHUB_TOKEN` | Docker Hub access token | Docker Hub push | | `DOCKERHUB_TOKEN` | Docker Hub access token | Docker Hub push |
| `GITHUB_TOKEN` | GitHub token (automatic) | GHCR push, releases | | `GITHUB_TOKEN` | GitHub token (automatic) | GHCR push, releases |
### Creating Docker Hub Token ### Creating Docker Hub Token
@@ -427,6 +430,7 @@ git commit -m "docs: update readme [skip ci]"
**Error**: `subject must be lower-case` **Error**: `subject must be lower-case`
**Fix**: Use lowercase for the subject: **Fix**: Use lowercase for the subject:
```bash ```bash
# Wrong # Wrong
git commit -m "feat(ui): Add new button" git commit -m "feat(ui): Add new button"
@@ -438,6 +442,7 @@ git commit -m "feat(ui): add new button"
### Release Not Triggering ### Release Not Triggering
**Causes**: **Causes**:
1. No release-worthy commits (only docs/style/refactor/test/build/ci/chore) 1. No release-worthy commits (only docs/style/refactor/test/build/ci/chore)
2. Commit message contains `[skip ci]` 2. Commit message contains `[skip ci]`
3. Workflow already running 3. Workflow already running
@@ -449,6 +454,7 @@ git commit -m "feat(ui): add new button"
**Error**: `denied: requested access to the resource is denied` **Error**: `denied: requested access to the resource is denied`
**Fix**: **Fix**:
1. Verify `DOCKERHUB_USERNAME` and `DOCKERHUB_TOKEN` secrets 1. Verify `DOCKERHUB_USERNAME` and `DOCKERHUB_TOKEN` secrets
2. Ensure Docker Hub token has Write permission 2. Ensure Docker Hub token has Write permission
3. Check Docker Hub repository exists (or enable auto-create) 3. Check Docker Hub repository exists (or enable auto-create)
@@ -458,21 +464,22 @@ git commit -m "feat(ui): add new button"
**Cause**: semantic-release requires conventional commits with proper types. **Cause**: semantic-release requires conventional commits with proper types.
**Fix**: Ensure commits follow: **Fix**: Ensure commits follow:
- `feat:` for features (minor bump) - `feat:` for features (minor bump)
- `fix:` for bug fixes (patch bump) - `fix:` for bug fixes (patch bump)
- `feat!:` or `BREAKING CHANGE:` for breaking changes (major bump) - `feat!:` or `BREAKING CHANGE:` for breaking changes (major bump)
## File Reference ## File Reference
| File | Purpose | | File | Purpose |
|------|---------| | ------------------------------- | ---------------------------------- |
| `.releaserc.json` | semantic-release configuration | | `.releaserc.json` | semantic-release configuration |
| `commitlint.config.js` | Commitlint rules | | `commitlint.config.js` | Commitlint rules |
| `.husky/pre-commit` | Pre-commit hook (lint) | | `.husky/pre-commit` | Pre-commit hook (lint) |
| `.husky/commit-msg` | Commit message hook (commitlint) | | `.husky/commit-msg` | Commit message hook (commitlint) |
| `.github/workflows/ci.yml` | CI pipeline | | `.github/workflows/ci.yml` | CI pipeline |
| `.github/workflows/release.yml` | Release pipeline | | `.github/workflows/release.yml` | Release pipeline |
| `.github/workflows/staging.yml` | Staging deployment | | `.github/workflows/staging.yml` | Staging deployment |
| `.github/workflows/nightly.yml` | Nightly builds | | `.github/workflows/nightly.yml` | Nightly builds |
| `docker-bake.hcl` | Multi-platform Docker build config | | `docker-bake.hcl` | Multi-platform Docker build config |
| `CHANGELOG.md` | Auto-generated changelog | | `CHANGELOG.md` | Auto-generated changelog |