|
| 1 | +# Release Flow |
| 2 | + |
| 3 | +Complete release process for Sumo Logic OpenTelemetry Collector. |
| 4 | + |
| 5 | +## Table of Contents |
| 6 | + |
| 7 | +- [Before You Start](#before-you-start) |
| 8 | +- [Steps](#steps) |
| 9 | + - [Step 1: Renovate Bot](#step-1-renovate-bot) |
| 10 | + - [Step 2: Merge Dependency PR](#step-2-merge-dependency-pr) |
| 11 | + - [Step 3: Prepare Release PR](#step-3-prepare-release-pr) |
| 12 | + - [Step 4: Find Build Number](#step-4-find-build-number) |
| 13 | + - [Step 5: CI to RC Promotion](#step-5-ci-to-rc-promotion) |
| 14 | + - [Step 6: QE Sign-off](#step-6-qe-sign-off) |
| 15 | + - [Step 7: Release Orchestrator](#step-7-release-orchestrator) |
| 16 | +- [References](#references) |
| 17 | + |
| 18 | +## Before You Start |
| 19 | + |
| 20 | +Fill in the [release checklist template](https://docs.google.com/document/d/17GPloLV18vJAQ5p9UPSV-KUFQnKEhrsqzF-eXGhAnuE/edit?tab=t.0) and follow the steps documented there. |
| 21 | + |
| 22 | +## Steps |
| 23 | + |
| 24 | +### Step 1: Renovate Bot |
| 25 | + |
| 26 | +1. Run Renovate bot ([renovate-scheduler.yml](../.github/workflows/renovate-scheduler.yml)) |
| 27 | +2. Wait for PR: `chore(deps): bump opentelemetry-collector` |
| 28 | + |
| 29 | +**Sample PR**: [#1944][pr_1944] |
| 30 | + |
| 31 | +### Step 2: Merge Dependency PR |
| 32 | + |
| 33 | +1. Check CI status |
| 34 | +2. **If CI passes**: Merge |
| 35 | +3. **If CI fails**: Resolve upstream issues first, then merge |
| 36 | + |
| 37 | +### Step 3: Prepare Release PR |
| 38 | + |
| 39 | +1. Create Python virtual environment: |
| 40 | + |
| 41 | + ```bash |
| 42 | + python3 -m venv venv |
| 43 | + source venv/bin/activate |
| 44 | + ``` |
| 45 | + |
| 46 | +2. Install dependencies: |
| 47 | + |
| 48 | + ```bash |
| 49 | + pip install towncrier==23.6.0 |
| 50 | + make install-prettier |
| 51 | + ``` |
| 52 | + |
| 53 | +3. Update changelog: |
| 54 | + |
| 55 | + ```bash |
| 56 | + make update-changelog VERSION=0.144.0-sumo-0 |
| 57 | + ``` |
| 58 | + |
| 59 | +4. Create and merge PR: |
| 60 | + |
| 61 | + ```bash |
| 62 | + git checkout -b prepare-release-0.144.0-sumo-0 |
| 63 | + git commit -m "chore: prepare release 0.144.0-sumo-0" |
| 64 | + git push origin prepare-release-0.144.0-sumo-0 |
| 65 | + ``` |
| 66 | + |
| 67 | +**Sample PR**: [#1965][pr_1965] |
| 68 | + |
| 69 | +### Step 4: Find Build Number |
| 70 | + |
| 71 | +1. Go to [Dev Builds](../.github/workflows/dev_builds.yml) |
| 72 | +2. Open the workflow run and check the **"Trigger Remote Workflow"** step |
| 73 | +3. Get the workflow ID from this step (e.g., `11672946742`) |
| 74 | + |
| 75 | +4. Search for this workflow ID in packaging repo to get build number: |
| 76 | + |
| 77 | + **CLI:** |
| 78 | + |
| 79 | + ```bash |
| 80 | + WORKFLOW_ID="11672946742" |
| 81 | + gh run list -R sumologic/sumologic-otel-collector-packaging \ |
| 82 | + -s success -w build_packages.yml -L 200 -b main \ |
| 83 | + --json displayTitle,number,url \ |
| 84 | + -q ".[] | select(.displayTitle | contains(\"${WORKFLOW_ID}\"))" |
| 85 | + ``` |
| 86 | + |
| 87 | + Output will show the build number (e.g., `"number": 1790`) |
| 88 | + |
| 89 | + **Manual:** |
| 90 | + - Go to [Packaging Build][packaging_build_workflow] |
| 91 | + - Search for your workflow ID |
| 92 | + - Note build number (e.g., `#1790`) |
| 93 | + |
| 94 | +5. Collector version format: `0.144.0-1790` (VERSION-BUILD_NUMBER) |
| 95 | + |
| 96 | +**Reference**: [release.md](./release.md#determine-the-workflow-run-id-to-release) |
| 97 | + |
| 98 | +### Step 5: CI to RC Promotion |
| 99 | + |
| 100 | +1. Go to [sumologic-otel-collector-packaging][packaging_repo] |
| 101 | +2. Actions → **[CI-to-RC Promotion][ci_to_rc_workflow]** workflow |
| 102 | +3. Enter: |
| 103 | + - **Version**: `0.144.0-1790` (full version with build number) |
| 104 | +4. Workflow will automatically: |
| 105 | + - Promote packaging artifacts (ci → rc) |
| 106 | + - Promote container images (ci → rc) |
| 107 | + |
| 108 | +**Reference**: [CI to RC Promotion Guide][ci_to_rc_guide] |
| 109 | + |
| 110 | +### Step 6: QE Sign-off |
| 111 | + |
| 112 | +1. Notify QE team |
| 113 | +2. Wait for testing (1-3 days) |
| 114 | +3. Get formal approval |
| 115 | + |
| 116 | +### Step 7: Release Orchestrator |
| 117 | + |
| 118 | +1. Go to [sumologic-otel-collector-packaging][packaging_repo] |
| 119 | +2. Actions → **[Release Orchestrator][release_orchestrator_workflow]** workflow |
| 120 | +3. Enter: |
| 121 | + - **Package version**: `0.144.0-1790` (full version with build number) |
| 122 | +4. Workflow will automatically: |
| 123 | + - Promote packages (rc → stable) |
| 124 | + - Create draft releases for collector, packaging, and containers |
| 125 | + |
| 126 | +## **Publish Draft Releases (⚠️ IMPORTANT ORDER):** |
| 127 | + |
| 128 | +**The orchestrator only creates draft releases. You must publish them manually in this exact order:** |
| 129 | + |
| 130 | +1. **FIRST**: Publish [Collector Release][collector_releases] |
| 131 | + - Edit draft release |
| 132 | + - Add upstream OTel core and contrib versions |
| 133 | + - Copy changelog from [CHANGELOG.md](../CHANGELOG.md) |
| 134 | + - Publish release |
| 135 | + - Wait for [post-release workflow](../.github/workflows/post-release.yml) to complete (creates package tags) |
| 136 | + |
| 137 | +2. **SECOND**: Publish [Packaging Release][packaging_releases] |
| 138 | + - Review draft release |
| 139 | + - Publish release |
| 140 | + |
| 141 | +3. **THIRD**: Publish [Containers Release][containers_releases] |
| 142 | + - Review draft release |
| 143 | + - Publish release |
| 144 | + |
| 145 | +**Reference**: [Release Orchestrator Guide][release_orchestrator_guide] |
| 146 | + |
| 147 | +## References |
| 148 | + |
| 149 | +- [release.md](./release.md) - Manual release process |
| 150 | +- [CONTRIBUTING.md](../CONTRIBUTING.md) - Changelog process |
| 151 | +- [Packaging Repo][packaging_repo] - Release workflows |
| 152 | +- [Container Repo][containers_repo] - Container releases |
| 153 | + |
| 154 | +[pr_1944]: https://github.com/SumoLogic/sumologic-otel-collector/pull/1944 |
| 155 | +[pr_1965]: https://github.com/SumoLogic/sumologic-otel-collector/pull/1965 |
| 156 | +[collector_releases]: https://github.com/SumoLogic/sumologic-otel-collector/releases |
| 157 | +[packaging_repo]: https://github.com/SumoLogic/sumologic-otel-collector-packaging |
| 158 | +[packaging_build_workflow]: https://github.com/SumoLogic/sumologic-otel-collector-packaging/actions/workflows/build_packages.yml |
| 159 | +[packaging_releases]: https://github.com/SumoLogic/sumologic-otel-collector-packaging/releases |
| 160 | +[ci_to_rc_workflow]: https://github.com/SumoLogic/sumologic-otel-collector-packaging/actions/workflows/ci-to-rc-promotion.yml |
| 161 | +[ci_to_rc_guide]: https://github.com/SumoLogic/sumologic-otel-collector-packaging/blob/main/docs/ci-to-rc-promotion.md |
| 162 | +[release_orchestrator_workflow]: https://github.com/SumoLogic/sumologic-otel-collector-packaging/actions/workflows/release-orchestrator.yml |
| 163 | +[release_orchestrator_guide]: https://github.com/SumoLogic/sumologic-otel-collector-packaging/blob/main/docs/release-orchestrator.md |
| 164 | +[containers_repo]: https://github.com/SumoLogic/sumologic-otel-collector-containers |
| 165 | +[containers_releases]: https://github.com/SumoLogic/sumologic-otel-collector-containers/releases |
0 commit comments