Release Checklist
The following checklist helps to identify the series of actions that need to be done leading up to a normal EdgeX release. The examples below were taken from the Kamakura release in May 2022.
- One week prior to code freeze
- Stop merged 3rd party Dependa-Bot PRs (unless critical bug fixes)
- Pin 3rd party docker images to patch level in compose builder
- Code Freeze
- Update edgex-global-pipelines to enable new release name. (example)
- Update all modules & services to use latest go-mod dev tags
- Update go-mod-secrets with latest version of go-mod-core-contracts (example)
- Update go-mod-bootstrap with latest versions of other go-mods (example)
- Update SDKs with latest versions of go-mods (Examples: app-functions-sdk-go, device-sdk-go)
- Update all services with latest versions of their go-mods and SDKs (example)
- Verify TAF Tests all pass (Jenkins Pipelines)
- Perform Manual Testing
- Fix bugs if needed, repeat steps #3 thru #5 as necessary.
- Generate and prepare changelogs. Ask WG Chairs to make necessary changes if necessary. (example)
- Release go-mods
- Verify release jobs have next semver for main set appropriately.
- Update changelogs for Go Mods (example)
- Release go-mod-configuration, go-mod-core-contracts, go-mod-registry, (example)
- Update go-mod-secrets and go-mod-messaging with release version of go-mod-core-contracts (example)
- Release go-mod-secrets and go-mod-messaging (example)
- Update go-mod-bootstrap with release version of other go-mods (example)
- Release go-mod-bootstrap (example)
- Release SDKs (app-functions-sdk-go, device-sdk-go)
- Verify release jobs have next semver for main set appropriately.
- Update SDKs with released versions of go-mods (app-functions-sdk-go, device-sdk-go)
- Update changelogs for SDKs (example)
- Update App Template go.mod with SDK version (example)
- Release SDKs (example)
- Release edgex-go
- Release App Services (app-service-configurable, app-rfid-llrp-inventory & app-record-replay)
- Release Device Services (Confirm which devices with Device Services WG)
- Verify release jobs have next semver for main set appropriately.
- Update with released versions of SDK and go-mods (device-mqtt-go example)
- Update changelogs for Device Services (device-mqtt-go example)
- Release Device Services (example)
- Release UI (edgex-ui-go)
- Verify release jobs have next semver for main set appropriately.
- Update with released versions of go-mods (Ex: UI part1, part2, part3)
- Update changelog (ui-example)
- Release UI(example)
- Release Compose files
- Add any new services to the compose job code.
- Run CI Job (Jenkins Job)(Run without parameters for dry-run.)
- Creates commit / branch (example)
- Removes Jenkins file
- Update README’s (example)
- Make any needed version tweaks (example)
- Test that all images can be pulled and started appropriately
make run no-secty [all service options]
- Merge tweaks PR (example)
- Tag commit on newly created branch
- Release Helm Chart
- Update Helm Chart to use current release images (example)
- Tag edgex-helm repo
- Release examples (edgex-examples)
- Release Docs (edgex-docs)
- Update Docker image descriptions
- Update Docker Hub descriptions.
- Do not manually generate overviews. Jenkins will do that in the next step. (example)
- Manually trigger build to publish changes (Jenkins Job)
- Update Docker Hub descriptions.
- Tag TAF
- Update links example links above to current PRs
- Verify semver on main branch is set to next expected release version with "-dev.1" appended
- Prepare edgex-compose for next release
- Update compose builder versions for 3rd party dependencies to not pin to patch level
- Also update release name in the gen-header file to be the upcoming name.
- Run make build to regenerate all the WIP compose files.
- Update swagger versions to expected next release number.
- Create Dev tags for next minor/major release
- Update all semver to create next dev tags for the new minor/major version
- If next release is a major release,
Update all modules to be the next major version - ie v2 → v3, update all import statements for the new major version, and update all mocks in the following order- Update go-mod-configuration, go-mod-core-contracts, go-mod-registry
- Update go-mod-secrets and go-mod-messaging (Note that the mocks in go-mod-messaging must be updated to ensure that the nats.go package is in the import statement)
- Update go-mod-bootstrap
- Update all go-sdks to be the next major version - ie v2 → v3, update all import statements for the new major version, and update all mocks
- Update go.mod to use latest dev go-mod-bootstrap
- Update edgex-go import statements for its dependent EdgeX modules
- Update go.mod to use latest dev go-mod-bootstrap
- Update all app services' import statements for its dependent EdgeX modules
- Update go.mod to use latest dev App SDK
- Update all device services' import statements for its dependent EdgeX modules
- Update go.mod to use latest dev Device SDK
- If next release is a minor release,
update to generate and use initial dev tags for next minor release- Update go-mod-configuration, go-mod-core-contracts, go-mod-registry
- simple README tweak to dev tag generated
- Update go-mod-secrets and go-mod-messaging to use latest dev go-mod tags
- Update go-mod-bootstrap to use latest dev go-mod tags
- Update all go-sdks to use latest dev go-mod-bootstrap
- Update edgex-go to use latest dev go-mod-bootstrap
- Update all app services to use latest dev App SDK
- Update all device services to use latest dev Device SDK
- Update go-mod-configuration, go-mod-core-contracts, go-mod-registry
- Make adjustments to the checklist for items that have changed since last release