daml/release/RELEASE.md
Stefano Baghino 84e6064d51 Remove unreleased.rst (#3547)
* Start working on getting rid of unreleased.rst

Document new process in CONTRIBUTING.md,
.github/pull_request_template.md and unreleased.rst (for good measure)

Report the previous changelog additions here so that they're not lost in
the mist of times.

CHANGELOG_BEGIN

- [DAML Stdlib] Added the ``NumericScale`` typeclass, which improves the type inference for Numeric literals, and helps catch the creation of out-of-bound Numerics earlier in the compilation process.

- [DAML Triggers] ``emitCommands`` now accepts an additional argument
  that allows you to mark contracts as pending. Those contracts will
  be automatically filtered from the result of ``getContracts`` until
  we receive the corresponding completion/transaction.

- [Navigator] Fixed a bug where Navigator becomes unresponsive if the ledger does not contain any DAML packages.

- [Ledger-API] Add field ``gen_map`` in Protobuf definition for ledger
  api values. This field is used to support generic maps, an new
  feature currently in development.  See issue
  https://github.com/digital-asset/daml/pull/3356 for more details
  about generic maps.

  The Ledger API will send no messages where this field is set, when
  using a stable version of DAML-LF.  However the addition of this
  field may cause pattern-matching exhaustive warnings in the code of
  ledger API clients. Those warnings can be safely ignored until
  GenMap is made stable in an upcoming version of DAML-LF.

- [JSON API - Experimental] CLI configuration to enable serving static content as part of the JSON API daemon:
  ``--static-content "directory=/full/path,prefix=static"``
  This configuration is NOT recommended for production deployment. See issue #2782.

- [Extractor] The app can now work against a Ledger API server that requires client authentication. See `issue #3157 <https://github.com/digital-asset/daml/issues/3157>`__.
- [DAML Script] This release contains a first version of an experimental DAML script
   feature that provides a scenario-like API that is run against an actual ledger.
- [DAML Compiler] The default DAML-LF version is now 1.7. You can
  still produce DAML-LF 1.6 by passing ``--target=1.6`` to ``daml
  build``.

- [JSON API - Experimental] The database schema has changed; if using
  ``--query-store-jdbc-config``, you must rebuild the database by adding
  ``,createSchema=true``.
  See `issue #3461 <https://github.com/digital-asset/daml/pull/3461>`_.

- [JSON API - Experimental] Terminate process immediately after creating schema. See issue #3386.

- [DAML Stdlib] ``fromAnyChoice`` and ``fromAnyContractKey`` now take
  the template type into account.

CHANGELOG_END

* Document new release process to gather changelog additions

* Change the release script to ignore unreleased.rst

* Remove spurious unreleased.rst lines

* Transition to use tags

* Document new way to get changelog additions with tags

* Update release/RELEASE.md

Co-Authored-By: Gary Verhaegen <gary.verhaegen@digitalasset.com>

* Address https://github.com/digital-asset/daml/pull/3547#discussion_r348438786

* Document correction process

* Add copyright header to unreleased.sh

* Update CONTRIBUTING.md

Co-Authored-By: Gary Verhaegen <gary.verhaegen@digitalasset.com>

* Modify CONTRIBUTING.md after @garyverhaegen-da's proposal

* Make unreleased.sh run per commit and treat tags as case-insensitive

* Fix documentation for replacements
2019-11-20 15:16:57 +00:00

6.5 KiB

Making a Release

  1. Make a PR that bumps the version number in the VERSION file and adds a new header and label for the new version in docs/source/support/release-notes.rst (see previous releases as examples). Release notes additions can be retrieved from commits using the following command:

    ./unreleased.sh

    where <revision range> is the expressions (documented under man gitrevisions) to only read the relevant commits since the last release. If, for example, the previous release is tagged as v0.13.36 the <revision range> for all commits since then is v0.13.36... Each change outlined by the output of this command is preceded by the section to which it belongs: create one entry per section and add all pertaining items (without the section tag) to the release notes. Note that the changelog may also specify edits to existing changelog additions, in which case they will be reported with the WARNING tag as in the following example:

    CHANGELOG_BEGIN
    
    WARNING: fix typo in entry "Adds new amdin API to upload DAR files" with the following.
    
    - [Sandbox] Adds new admin API to upload DAR files
    
    CHANGELOG_END
    

    It is important that the PR only changes VERSION, release-notes.rst. Note that VERSION and release-notes.rst must be modified even if there have been no changes that have been added to the release notes so far.

  2. Merge the PR.

  3. Once CI has passed for the corresponding master build, the release should be available on Bintray, Maven Central and GitHub and have a Git tag. The release should be visible on GitHub with prerelease status, meaning it's not yet ready for production. The release notes should not be defined yet and will be adjusted later on. Maven central has a slight delay of around 20 minutes until the new version is visible.

  4. Run through the following test plan on Linux or MacOS:

    1. Install the SDK using curl -sSL https://get.daml.com/ | sh -s X.XX.XX, where X.XX.XX is the new version number.
    2. Run daml version --assistant=yes and verify that the new version is selected as the assistant version and the default version for new projects.
    3. Create a new project with daml new quickstart quickstart-java and switch to it using cd quickstart.
    4. Run daml start. Your browser should be opened automatically at http://localhost:7500. Login as Alice and verify that there is 1 contract and 3 templates. Close the tab and kill daml start using Ctrl-C.
    5. Run daml build.
    6. In 3 separate terminals (since each command will block) run
      1. daml sandbox --port 6865 --scenario Main:setup .daml/dist/quickstart-0.0.1.dar.
      2. daml navigator server localhost 6865 --port 7500
      3. mvn compile exec:java@run-quickstart

      Note: It takes some time for our artifacts to be available on Maven Central. If you try running the above before the artifacts are available, you will get a "not found" error. Trying to build again in the next 24h will result in:

      Failure to find ... was cached in the local repository, resolution will not be reattempted until the update interval of digitalasset-releases has elapsed or updates are forced
      

      This is Maven telling you it has locally cached that "not found" result and will consider it valid for 24h. To bypass that and force Maven to try the network call again, add a -U option, as in mvn compile exec:java@run-quickstart -U. Note that this is required to bypass your local cache of the failure; it will not be required for any user trying to run the quickstart after the artifacts have been published.

    7. Point your browser to http://localhost:7500, login as Alice and verify that there is 1 contract, 3 templates and 1 owned IOU.
    8. Check that curl http://localhost:8080/iou returns
      {"0":{"issuer":"EUR_Bank","owner":"Alice","currency":"EUR","amount":100.0000000000,"observers":[]}}
      
    9. Kill all processes.
    10. Run daml studio --replace=always. This should open the VSCode application and trigger the DAML extension bundled with the new SDK version. (The new VSCode extension will not be in the marketplace at this point.)
    11. Open daml/Main.daml
    12. Click on Scenario results above setup and wait for the scenario results to appear.
    13. Add + at the end of line 11, after "Alice" and confirm you get an error in line 12.
    14. Add 1 after the + and confirm you get an error in line 11.
    15. Delete the +1, and the e in Alice and verify that the scenario results are updated.
    16. Right click on eurBank in line 17 and verify that goto definition takes you to the definition in line 14.
    17. Close all files.
  5. Run through the following test plan on Windows. This is slightly shortened to not make testing too annoying and since most issues are not platform specific.

    1. Download the Windows installer from https://github.com/digital-asset/daml/releases.
    2. Close any running SDK instance in PowerShell (Navigator or Sandbox)
    3. Run the installer. If asked if you want to remove an existing installation, click yes.
    4. Open a new Powershell.
    5. Run daml new quickstart to create a new project and switch to it using cd quickstart.
    6. Run daml start.
    7. Open your browser at http://localhost:7500, verify that you can login as Alice and there is one template and one contract.
    8. Kill daml start with Ctrl-C
    9. Run daml studio --replace=always and open daml/Main.daml.
    10. Verify that the scenario result appears within 30 seconds.
    11. Add + at the end of line 26 after "Alice" and verify that you get a red squiggly line.
  6. If no issues are found, the release should be made public. To do so, go to the releases page and click on the Edit button for the relevant release. Take the combined release notes from docs/source/support/release-notes.rst for all releases since the last public release, convert them to markdown and insert them in the textbox, then uncheck the This is a pre-release checkbox at the bottom.

  7. On the release PR, add the Standard-Change label.

  8. Leave a comment like "All manual tests have passed" on the release PR on GitHub.

  9. Finally, announce the release in the relevant Slack channels.

  10. Documentation is published automatically once you make the release public on Github but you might have to wait up to an hour for the job to run.