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.


  1. One week prior to code freeze
    1. Stop merged 3rd party Dependa-Bot PRs (unless critical bug fixes)
    2. Pin 3rd party docker images to patch level in compose builder
  2. Code Freeze
  3. Update edgex-global-pipelines to enable new release name. (example)
  4. Update all modules & services to use latest go-mod dev tags
    1. Update go-mod-secrets with latest version of go-mod-core-contracts (example)
    2. Update go-mod-bootstrap with latest versions of other go-mods (example)
    3. Update SDKs with latest versions of go-mods (Examples: app-functions-sdk-go, device-sdk-go)
    4. Update all services with latest versions of their go-mods and SDKs (example)
  5. Verify TAF Tests all pass (Jenkins Pipelines)
  6. Perform Manual Testing
  7. Fix bugs if needed, repeat steps #3 thru #5 as necessary.
  8. Generate and prepare changelogs. Ask WG Chairs to make necessary changes if necessary. (example)
  9. Release go-mods
    1. Verify release jobs have next semver for main set appropriately. 
    2. Update changelogs for Go Mods (example)
    3. Release go-mod-configuration, go-mod-core-contracts, go-mod-registry,  (example)
    4. Update go-mod-secrets and go-mod-messaging with release version of go-mod-core-contracts (example)
    5. Release go-mod-secrets and go-mod-messaging (example)
    6. Update go-mod-bootstrap with release version of other go-mods (example)
    7. Release go-mod-bootstrap (example)
  10. Release SDKs  (app-functions-sdk-go, device-sdk-go)
    1. Verify release jobs have next semver for main set appropriately. 
    2. Update SDKs with released versions of go-mods (app-functions-sdk-godevice-sdk-go)
    3. Update changelogs for SDKs (example)
    4. Update App Template go.mod with SDK version (example)
    5. Release SDKs (example)
  11. Release edgex-go
    1. Verify release jobs have next semver for main set appropriately. 
    2. Update with released versions of go-mods (example)
    3. Update changelog (example)
    4. Release Core/Support/Security services (example)
  12. Release App Services (app-service-configurableapp-rfid-llrp-inventory & app-record-replay)
    1. Verify release jobs have next semver for main set appropriately. 
    2. Update with released version of SDK and go-mods (example)
    3. Update changelogs for App Services (example)
    4. Release App Services (example)
  13. Release Device Services (Confirm which devices with Device Services WG)
    1. Verify release jobs have next semver for main set appropriately. 
    2. Update with released versions of SDK and go-mods (device-mqtt-go example)
    3. Update changelogs for Device Services (device-mqtt-go example)
    4. Release Device Services (example)
  14. Release UI  (edgex-ui-go)
    1. Verify release jobs have next semver for main set appropriately. 
    2. Update with released versions of go-mods (Ex: UI part1, part2, part3)
    3. Update changelog (ui-example)
    4. Release UI(example)
  15. Release Compose files
    1. Add any new services to the compose job code.
    2. Run CI Job (Jenkins Job)(Run without parameters for dry-run.)
      1. Creates commit / branch (example)
      2. Removes Jenkins file
    3. Update README’s (example)
    4. Make any needed version tweaks (example)
    5. Test that all images can be pulled and started appropriately
      1. make run no-secty [all service options]
    6. Merge tweaks PR (example)
    7. Tag commit on newly created branch
  16. Release Helm Chart 
    1. Update Helm Chart to use current release images (example)
    2. Tag edgex-helm repo
  17. Release examples (edgex-examples)
    1. App Service examples use current released SDK (example)
    2. Update security examples for released images & SDKs
    3. Tag edgex-examples repo (example)
  18. Release Docs (edgex-docs)
    1. Update example links to use release tag (example)
    2. Release/Run CI Job (example)
    3. Merge PR’s from CI Job (example)
  19. Update Docker image descriptions
    1. Update Docker Hub descriptions.
      1. Do not manually generate overviews. Jenkins will do that in the next step. (example)
    2. Manually trigger build to publish changes (Jenkins Job)
  20. Tag TAF
    1. TAF team switches to release branch (example
    2. Tag TAF (example)
  21. Update links example links above to current PRs
  22. Verify semver on main branch is set to next expected release version with "-dev.1" appended
  23. Prepare edgex-compose for next release 
    1. Update compose builder versions for 3rd party dependencies to not pin to patch level 
    2. Also update release name in the gen-header file to be the upcoming name.
    3. Run make build to regenerate all the WIP compose files.
  24. Update swagger versions to expected next release number.
    1. edgex-go (example)
    2. app-functions-sdk-go (example)
    3. device-sdk-go (example)
    4. device-onvif-camera (example)
      1. Change version in JSON swagger generation config file
      2. Run `make openapi` to generate swagger 
  25. Create Dev tags for next minor/major release
    1. Update all semver to create next dev tags for the new minor/major version
    2. 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
      1. Update go-mod-configuration, go-mod-core-contracts, go-mod-registry
      2. 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)
      3. Update go-mod-bootstrap
      4. 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
        1. Update go.mod to use latest dev go-mod-bootstrap
      5. Update edgex-go  import statements for its dependent EdgeX modules
        1. Update go.mod to use latest dev go-mod-bootstrap
      6. Update all app services'  import statements for its dependent EdgeX modules
        1. Update go.mod to use latest dev App SDK
      7. Update all device services'  import statements for its dependent EdgeX modules
        1. Update go.mod to use latest dev Device SDK
    3. If next release is a minor release,
      update to generate and use initial dev tags for next minor release
      1. Update go-mod-configuration, go-mod-core-contracts, go-mod-registry 
        1. simple README tweak to dev tag generated
      2. Update go-mod-secrets and go-mod-messaging to use latest dev go-mod tags
      3. Update go-mod-bootstrap to use latest dev go-mod tags
      4. Update all go-sdks to use latest dev go-mod-bootstrap
      5. Update edgex-go to use latest dev go-mod-bootstrap
      6. Update all app services to use latest dev App SDK
      7. Update all device services to use latest dev Device SDK
  26. Make adjustments to the checklist for items that have changed since last release