|
| 1 | +# Release v0.1.0: Stable End-to-End Execution |
| 2 | + |
| 3 | +**Issue**: #462 |
| 4 | +**Parent Epic**: N/A |
| 5 | +**Related**: [#459](https://github.com/torrust/torrust-tracker-deployer/issues/459) (beta.2 release validation), |
| 6 | +[#450](https://github.com/torrust/torrust-tracker-deployer/issues/450) (beta.1 release validation), |
| 7 | +[#448](https://github.com/torrust/torrust-tracker-deployer/issues/448) (release process definition), |
| 8 | +[#452](https://github.com/torrust/torrust-tracker-deployer/pull/452) (crate rename to tracker-deployer namespace) |
| 9 | + |
| 10 | +## Overview |
| 11 | + |
| 12 | +Execute the first stable release of the Torrust Tracker Deployer (`v0.1.0`), |
| 13 | +validating the full release workflow from version bump through release publication. |
| 14 | + |
| 15 | +This release is the GA cut after beta validation. The objective is to execute the |
| 16 | +canonical process cleanly, ensure all release artifacts are published and verifiable, |
| 17 | +and capture any friction that still exists in the release workflow documentation, |
| 18 | +skill instructions, or CI automation. |
| 19 | + |
| 20 | +## Goals |
| 21 | + |
| 22 | +- [ ] Version `0.1.0` is reflected in all four `Cargo.toml` files on `main` |
| 23 | +- [ ] Signed tag `v0.1.0` and release branch `releases/v0.1.0` exist |
| 24 | +- [ ] Docker image `torrust/tracker-deployer:0.1.0` is published to Docker Hub |
| 25 | +- [ ] All four crates are published to crates.io at version `0.1.0` |
| 26 | +- [ ] GitHub release `v0.1.0` is published (not draft) |
| 27 | +- [ ] Any new friction points discovered are documented and filed as follow-ups |
| 28 | + |
| 29 | +## Specifications |
| 30 | + |
| 31 | +### Version Bump Scope |
| 32 | + |
| 33 | +Update `version` field to `0.1.0` in all four manifests: |
| 34 | + |
| 35 | +| File | Crate | |
| 36 | +| ------------------------------------------ | ----------------------------------------------- | |
| 37 | +| `Cargo.toml` (workspace root) | `torrust-tracker-deployer` | |
| 38 | +| `packages/deployer-types/Cargo.toml` | `torrust-tracker-deployer-types` | |
| 39 | +| `packages/dependency-installer/Cargo.toml` | `torrust-tracker-deployer-dependency-installer` | |
| 40 | +| `packages/sdk/Cargo.toml` | `torrust-tracker-deployer-sdk` | |
| 41 | + |
| 42 | +Also update every internal path dependency `version` constraint to `0.1.0`. |
| 43 | + |
| 44 | +### Publish Order (crates.io dependency order) |
| 45 | + |
| 46 | +1. `torrust-tracker-deployer-types` |
| 47 | +2. `torrust-tracker-deployer-dependency-installer` |
| 48 | +3. `torrust-tracker-deployer` |
| 49 | +4. `torrust-tracker-deployer-sdk` |
| 50 | + |
| 51 | +Each crate's dry-run step in CI runs only after its prerequisites are indexed on |
| 52 | +crates.io - do not attempt to publish out of order. |
| 53 | + |
| 54 | +## Implementation Plan |
| 55 | + |
| 56 | +### Phase 1: Pre-Flight and Setup |
| 57 | + |
| 58 | +- [ ] Task 1.1: Verify local workspace is clean and on `torrust/main` up-to-date |
| 59 | + with `origin/main` (`git status`, `git pull --ff-only`) |
| 60 | +- [ ] Task 1.2: Confirm GitHub environments `dockerhub-torrust` and `crates-io` are |
| 61 | + correctly configured for stable release publication |
| 62 | +- [ ] Task 1.3: Confirm releaser has push access to `main`, tags, and release branches |
| 63 | +- [ ] Task 1.4: Document any pre-flight issues found |
| 64 | + |
| 65 | +### Phase 2: Execute the Release |
| 66 | + |
| 67 | +- [ ] Task 2.1: Update `version` to `0.1.0` in all four `Cargo.toml` files |
| 68 | + and in every internal path dependency constraint |
| 69 | +- [ ] Task 2.2: Run `cargo build && cargo test` and verify they pass |
| 70 | +- [ ] Task 2.3: Run `./scripts/pre-commit.sh` and verify all checks pass |
| 71 | +- [ ] Task 2.4: Create and push the signed release commit to `main` |
| 72 | + (`git commit -S -m "release: version v0.1.0"`) |
| 73 | +- [ ] Task 2.5: Create and push annotated signed tag `v0.1.0` |
| 74 | +- [ ] Task 2.6: Create and push release branch `releases/v0.1.0` |
| 75 | +- [ ] Task 2.7: Monitor Container and Publish Crate workflows to completion |
| 76 | + |
| 77 | +### Phase 3: Artifact Verification |
| 78 | + |
| 79 | +- [ ] Task 3.1: Pull and inspect Docker image `torrust/tracker-deployer:0.1.0` |
| 80 | +- [ ] Task 3.2: Verify all four crates at `0.1.0` are visible on crates.io |
| 81 | +- [ ] Task 3.3: Verify docs.rs build for the published crate versions |
| 82 | +- [ ] Task 3.4: Create GitHub release from tag `v0.1.0` |
| 83 | + |
| 84 | +### Phase 4: Process Review and Fixes |
| 85 | + |
| 86 | +- [ ] Task 4.1: Collect every friction point, error, or unexpected step encountered |
| 87 | + during the release - no matter how small |
| 88 | +- [ ] Task 4.2: For each issue found, fix the root cause immediately in the relevant |
| 89 | + artifact: |
| 90 | + - `docs/release-process.md` - if a step was wrong, missing, or misleading |
| 91 | + - `.github/skills/dev/git-workflow/release-new-version/skill.md` - if the skill |
| 92 | + diverged from reality |
| 93 | + - `scripts/` - if a helper script failed or was absent |
| 94 | + - CI workflow files (`.github/workflows/`) - if a workflow behaved unexpectedly |
| 95 | + - Any other documentation, template, or configuration that contributed to the |
| 96 | + friction |
| 97 | +- [ ] Task 4.3: File follow-up issues for any non-trivial problems that cannot be |
| 98 | + fixed inline (e.g., upstream blockers, larger refactors) |
| 99 | +- [ ] Task 4.4: Re-run `./scripts/pre-commit.sh` after any fixes to confirm nothing |
| 100 | + was broken |
| 101 | +- [ ] Task 4.5: Confirm all finalization gates below are met |
| 102 | + |
| 103 | +## Acceptance Criteria |
| 104 | + |
| 105 | +**Quality Checks**: |
| 106 | + |
| 107 | +- [ ] Pre-commit checks pass: `./scripts/pre-commit.sh` |
| 108 | + |
| 109 | +**Release Execution**: |
| 110 | + |
| 111 | +- [ ] Version `0.1.0` is committed and present in all four `Cargo.toml` files on `main` |
| 112 | +- [ ] Tag `v0.1.0` exists and is signed |
| 113 | +- [ ] Branch `releases/v0.1.0` exists |
| 114 | +- [ ] Container workflow completed successfully |
| 115 | +- [ ] Publish Crate workflow completed successfully |
| 116 | +- [ ] GitHub release `v0.1.0` is published (not draft) |
| 117 | + |
| 118 | +**Artifact Verification**: |
| 119 | + |
| 120 | +- [ ] Docker image `torrust/tracker-deployer:0.1.0` can be pulled and run |
| 121 | +- [ ] All four crates at `0.1.0` are visible on crates.io: |
| 122 | + - [ ] `torrust-tracker-deployer-types@0.1.0` |
| 123 | + - [ ] `torrust-tracker-deployer-dependency-installer@0.1.0` |
| 124 | + - [ ] `torrust-tracker-deployer@0.1.0` |
| 125 | + - [ ] `torrust-tracker-deployer-sdk@0.1.0` |
| 126 | +- [ ] docs.rs build page loads for the published versions |
| 127 | + |
| 128 | +**Process Quality**: |
| 129 | + |
| 130 | +- [ ] Every friction point or error encountered is documented (inline comment or |
| 131 | + filed follow-up issue) |
| 132 | +- [ ] Every fixable problem is fixed in the relevant artifact - documentation, |
| 133 | + skill, script, or workflow - not just noted |
| 134 | +- [ ] No step was silently skipped or improvised without documentation |
| 135 | +- [ ] `docs/release-process.md` and the release skill accurately reflect how the |
| 136 | + release was actually executed |
| 137 | + |
| 138 | +## Related Documentation |
| 139 | + |
| 140 | +- [Release Process](../release-process.md) |
| 141 | +- [Release Skill](../../.github/skills/dev/git-workflow/release-new-version/skill.md) |
| 142 | +- [beta.2 release issue #459](https://github.com/torrust/torrust-tracker-deployer/issues/459) |
| 143 | + |
| 144 | +## Notes |
| 145 | + |
| 146 | +This is a stable release (`0.1.0`), not a pre-release. Cargo users should receive |
| 147 | +this version by default through normal semver resolution, and release notes should |
| 148 | +highlight upgrade guidance from `0.1.0-beta.2` where relevant. |
0 commit comments