nim-wiki/Creating-a-release.md

2.2 KiB

  • Run the full testsuite (tests\testament\tester all) and ensure it's green; actually ensure travis is green (Usually the case these days)

  • Update news.txt

  • write a news ticker entry

  • Update the version

    • In system.nim
  • Recompile koch!

  • Generate the full docs; koch web0

  • Test the installers: koch testinstall

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

  • Push the tag: git push origin [tagname]

  • Run tools/winrelease

  • Upload the produced .zips.

  • Merge devel into master

  • Update csources via koch pushcsources

The following shell script shall be replaced by 'koch unixrelease' Shell script to build a source tarball:

#!/bin/sh
set -eu
tmp_dir=$(mktemp -d)
cd $tmp_dir
git clone -q --depth 1 https://github.com/nim-lang/Nim.git
cd Nim
git clone -q --depth 1 https://github.com/nim-lang/csources
( cd csources && sh build.sh )
bin/nim c koch
./koch boot -d:release
./koch web0
PATH=$PATH:$(pwd)/bin
./koch csource -d:release
./koch xz -d:release

Website

Uploading the binaries

  • 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/
  • sha256sum nim-0.18.0.tar.xz > nim-0.18.0.tar.xz.sha256

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)