Release Checklist

  • Make a copy of this Release Checklist Template document as a new page on cardano-wallet's wiki called Release vYYYY-MM-DD. Follow all the next steps using that newly created document as a "status tracker".

Check additional automated tests

  • Verify that the latest E2E tests are fine (See "E2E *" workflows on https://github.com/cardano-foundation/cardano-wallet/actions).
  • Verify latest buildkite nightly and make sure the results are fine. Benchmark charts may be helpful in analysis.

Prepare the release

  • Make sure cardano-wallet points to correct revisions of dependent low-level libs in cabal.project. Use cardano-node as guidance.

    • Verify that target repositories point to appopriate revisions for persistent, cardano-addresses, bech32, ...)

    • If you have updated cabala.project, execute

    ./nix/regenerate.sh --cache=/dev/null
    # This will fetch and update the sha256 hashes.
    
  • Fetch the tip of master:

    > git checkout master
    > git pull
    
  • Create a new branch for the release:

    > git checkout -b your-name/bump-release/YYYY-MM-DD
    
  • From the root of the repository, run:

    > ./scripts/make_release.sh
    

    This will bump the version in .cabal and .nix files, and the swagger spec files, and generate release notes.

Note

If you get GitHub API rate limit errors, you can set the GITHUB_API_TOKEN environment variable. To create a personal access token, go to your Github Settings. No scope is required for this token, only public access (as it is simply used to read publicly available data from the Github API).

  • Verify that the script modified the compatibility matrix in README.md correctly.

  • Open a pull request to submit the modified files

  • Get it merged

  • Trigger a release build on CI (GitHub Actions) and wait for the build artifacts to be published on the GitHub release page.

    > git checkout master
    > git pull
    > git tag --sign -m "vYYYY-MM-DD" vYYYY-MM-DD
    > git push origin vYYYY-MM-DD
    

    Where YYYY-MM-DD should be replaced by the actual date of the release.

Create the release notes

Verify release artifacts

  • Verify that the documentations have been correctly exported on gh-pages

    • Make a commit with redirects to the documentation for the release like this one.
     > git checkout gh-pages
     > git pull origin gh-pages
     > cd releases
     > ./make_redirects.sh vYYYY-MM-DD
     ## push changes to gh-pages after
    
  • Make sure the Command-Line Interface manual is up to date.

Manual ad-hoc verifications

  • Execute all manual scenarios on the binaries to be released.

  • Verify that sensitive fields listed in Cardano/Wallet/Api/Server are still accurate and aren't missing any new ones.

    sensitive =
        [ "passphrase"
        , "old_passphrase"
        , "new_passphrase"
        , "mnemonic_sentence"
        , "mnemonic_second_factor"
        ]
    

Publication

  • Once everyone has signed off (i.e. Tech lead, QA & Release manager), publish the release draft.

  • If there are any changes to the release checklist update this document.