Skip to content

Latest commit

 

History

History
executable file
·
113 lines (74 loc) · 4.19 KB

release-process.md

File metadata and controls

executable file
·
113 lines (74 loc) · 4.19 KB

Release Process

Before every release candidate:

Before every minor and major release:

  • Update bips.md to account for changes since the last release.
  • Update version in configure.ac (don't forget to set CLIENT_VERSION_IS_RELEASE to true)
  • Write release notes (see below)
  • Update src/chainparams.cpp nMinimumChainWork with information from the getblockchaininfo rpc.
  • Update src/chainparams.cpp defaultAssumeValid with information from the getblockhash rpc.
    • The selected value must not be orphaned so it may be useful to set the value two blocks back from the tip.
    • Testnet should be set some tens of thousands back from the tip due to reorgs there.
    • This update should be reviewed with a reindex-chainstate with assumevalid=0 to catch any defect that causes rejection of blocks in the past history.

Before every major release:

  • Update hardcoded seeds, see this pull request for an example.
  • Update BLOCK_CHAIN_SIZE to the current size plus some overhead.
  • Update src/chainparams.cpp chainTxData with statistics about the transaction count and rate.

First time / New builders

git clone https://github.com/AIPGProject/AIPGcoin.git

AIPG maintainers/release engineers, suggestion for writing release notes

Write release notes. git shortlog helps a lot, for example:

git shortlog --no-merges v(current version, e.g. 0.7.2)..v(new version, e.g. 0.8.0)

Generate list of authors:

git log --format='%aN' "$*" | sort -ui | sed -e 's/^/- /'

Tag version (or release candidate) in git

git tag -s v(new version, e.g. 0.8.0)

Build binaries.

TODO: describe process.

Codesigner only: Create Windows/OS X detached signatures:

  • Only one person handles codesigning. Everyone else should skip to the next step.
  • Only once the Windows/OS X builds each have 3 matching signatures may they be signed with their respective release keys.

Codesigner only: Sign the osx binary:

transfer aipg-osx-unsigned.tar.gz to osx for signing
tar xf aipg-osx-unsigned.tar.gz
./detached-sig-create.sh -s "Key ID"
Enter the keychain password and authorize the signature
Move signature-osx.tar.gz back to the gitian host

Codesigner only: Sign the windows binaries:

tar xf aipg-win-unsigned.tar.gz
./detached-sig-create.sh -key /path/to/codesign.key
Enter the passphrase for the key when prompted
signature-win.tar.gz will be created

After binaries are built:

  • Create SHA256SUMS.asc for the builds, and GPG-sign it:
sha256sum * > SHA256SUMS

The list of files should be:

aipg-${VERSION}-aarch64-linux-gnu.tar.gz
aipg-${VERSION}-arm-linux-gnueabihf.tar.gz
aipg-${VERSION}-x86_64-linux-gnu.tar.gz
aipg-${VERSION}-osx64.tar.gz
aipg-${VERSION}-osx.dmg
aipg-${VERSION}.tar.gz
aipg-${VERSION}-win64-setup.exe
aipg-${VERSION}-win64.zip

- GPG-sign it, delete the unsigned file:

gpg --digest-algo sha256 --clearsign SHA256SUMS # outputs SHA256SUMS.asc rm SHA256SUMS

(the digest algorithm is forced to sha256 to avoid confusion of the `Hash:` header that GPG adds with the SHA256 used for the files)
Note: check that SHA256SUMS itself doesn't end up in SHA256SUMS, which is a spurious/nonsensical entry.

- Upload zips and installers, as well as `SHA256SUMS.asc` from last step, to the github-release page.

- Update aipgcoin.org version

- Announce the release:

  - AIPowerGrid.io blog post

  - Optionally twitter, reddit /r/AIPowerGrid, ... but this will usually sort out itself

  - Archive release notes for the new version to `doc/release-notes/` (branch `master` and branch of the release)

  - Create a [new GitHub release](https://github.com/AIPGProject/AIPGcoin/releases/new) with a link to the archived release notes.

  - Celebrate