nim-wiki/Creating-a-release.md

3.4 KiB

  • ensure travis and appveyor is green (Usually the case these days) for the release branch 0-19, 0-20, etc

  • test if Nimble works with new version

  • Update the version in system.nim

  • Update the changelog (put the release date, copy it to e.g. changelog_0_20_0.md)

  • Tag the release, e.g. git tag -am "Version 0.15.0" v0.15.0

  • Push the tag: git push origin [tagname]

  • Nightlies now build the binaries for us: https://github.com/nim-lang/nightlies/releases

  • Ensure nightly builds exist

  • Recompile koch!

  • Generate the full docs; koch doc0 (not koch doc); copy the docs from upload/$nimversion not from docs/html! Otherwise the GA code would be missing!

  • Merge 0-19 branch into master

  • DO NOT Update csources anymore, it's frozen forever.

Website

  • Download the binaries from https://github.com/nim-lang/nightlies/releases
  • Rename the nim-$version_windows_(x32/x64).zip files to nim-$version(x32/x64).zip for consistency with every older release.
  • Rename the nim-$version_osx.tar.xz to nim-$version.tar.xz as that is what we use for the source based installation.
  • Upload the produced .zips. For example: scp nim-0.18.0.tar.xz username@servername:/var/www/nim-lang.org/download/nim-0.18.0.tar.xz (change the version obviously)

Generating the sha256's

  • ssh username@servername
  • cd /var/www/nim-lang.org/download/
  • export NIM_VER=<current_ver> (for example export NIM_VER=0.19.0).
  • sh checksums.sh

Updating the blog/downloads page

  • Create a new blog post in _drafts titled: version-<ver>-released.md where <ver> is the version without any dots, e.g. 0180 for 0.18.0.
  • When ready to release:
    • move the blog post into _posts, making sure to append the current date to its filename: 2017-09-31-title.md.
    • modify config.yml's version key to the new version
    • git commit
      • TIP: Here is a real-life example of a commit that signifies a release: 6f95916dee. The draft blog post was created in earlier commits, but hopefully it's pretty easy to figure out how it was made.
      • TIP2: You can see what a draft post looks like by running jekyll serve --drafts inside the website's jekyll directory.
    • git push live master (the live remote is a strict secret)

Uploading docs

  • export NIM_VER=<current_ver> (for example export NIM_VER=0.19.0).
  • Upload documentation to /var/www/nim-lang.org/$NIM_VER
  • Change docs symlink
    • cd /var/www/nim-lang.org/
    • ln -sfn $NIM_VER docs (change the version here)
    • Verify this worked using ls -la | grep "docs"

Updating choosenim's channels

Choosenim currently only supports gz so you will need to create a .tar.gz out of the .tar.xz:

  • export NIM_VER=<current_ver>
  • cd /var/www/nim-lang.org/download
  • cp nim-$NIM_VER.tar.xz nim-"$NIM_VER"_copy.tar.xz
  • unxz nim-"$NIM_VER"_copy.tar.xz
  • gzip --best nim-"$NIM_VER"_copy.tar
  • mv nim-"$NIM_VER"_copy.tar.gz nim-"$NIM_VER".tar.gz
  • sha256sum nim-"$NIM_VER".tar.gz > nim-"$NIM_VER".tar.gz.sha256

Update the stable channel:

  • Update /var/www/nim-lang.org/channels using your favourite editor
    • vim /var/www/nim-lang.org/channels/stable

Need to fix mistakes?

  • Notifying people about problems in release notes: 9dcf1e2de1