Skip to content

Release process

Richard Lehane edited this page Dec 17, 2023 · 46 revisions

Release process for siegfried updates

Update signatures

Prep

  • Update README
  • Update CHANGELOG
  • Update config - sf version
  • go generate (in github.com/richardlehane/siegfried/cmd/roy folder, to update sigs)
  • go generate (in github.com/richardlehane/siegfried/pkg/static, to update signature.go)
  • go get -u // update dependencies
  • go mod tidy // clean cruft
  • Commit changes to develop branch

Git

// make sure configured with git config --global push.followTags true // or if using vscode, use command palette... Git: Push (follow tags) // vscode command is "checkout to" for checkout

git checkout main

git merge develop

git tag -a v1.6.0 -m "see CHANGELOG.md"

git push origin main (if in VS Code use command pallette + "Git Push (Follow Tags)")

git checkout develop

Release candidates

On develop:

git tag -a v1.6.0-rc (or v1.6.0-rc1) -m "release candidate" git push origin develop

Announce

Send snippet from Changelog to the Google Group

Release process for PRONOM updates

When PRONOM is updated, the process for updating siegfried is:

  1. Copy latest:
  • release-notes.xml
  • droid.xml
  • container.xml
  1. Harvest PRONOM and build skeleton suite with: https://github.com/richardlehane/builder
  • then in siegfried source wget pronom.zip from builder and unpack it selectively in roy/data and sf/testdata folders with unzip pronom.zip "pronom/*" and unzip pronom.zip "skeleton-suite/*"
  • doing sudo chmod -R -x . and sudo chmod -R +X . (adds exec bit for dirs) will fix git diff explosion for file mode changes
  1. Run go generate in the cmd/roy directory to rebuild siegfried's signature files (default.sig and archivematica.sig) and sets; then run the sf tests to check against the new test suite

  2. Some files in the skeleton suite fail (not because of sf issue!). These files should be deleted to allow the tests to pass:

  • fmt-62-signature-id-78.xlw (this skeleton file is identical to the fmt-61)
  • fmt-1062-signature-id-1435.3fr (reported here)
  • fmt-1157-signature-id-1539.nfo (missing v200 sequence reported here)
  • fmt-1739-signature-id-2077.toast (reported here)
  • fmt-1757-signature-id-2094.iso (reported here)
  • fmt-1757-signature-id-2095.iso (reported here)
  • fmt-1190-container-signature-id-28200.swc (reported here)
  1. Copy the fresh signature file and sets into the itforarchivists.com source directory and do a Google Appengine push to update "Try Siegfried" as well as the -update service.

Updating website

  • remove public directory
  • make a new post for the release
  • download new deb from github release then update repository with reprepro -b static/repositories includedeb buster siegfried_1.X.X-1_amd64.deb (use WSL environment)
  • update the go.mod file to have latest siegfried release
  • run scripts/update.sh to copy sets and signatures files into static directory (use WSL environment) (check latest target folder)
  • check main.go to make sure sf is loading from correct /latest folder
  • copy signatures for 1.10, 1.11 ... into static/latest folders (the update script helps)
  • do go generate to update the siegfried.js file, sets files (need to have latest sets in siegfried home) and update.json files
  • hugo to rebuild the site
  • gcloud app deploy

(obsolete appengine now has 1.20) google appengine max version is go 1.16, if any dependencies require later code, manually downgrade by using replace directives e.g. go mod edit -replace golang.org/x/sys@v0.0.0-20220909162455-aba9fc2a8ff2=golang.org/x/sys@v0.0.0-20220722155257-8c9f86f7a55f

Check deb files and binaries

  • dpkg -I siegfried.deb
  • ar -t siegfried.deb (check has .xz extensions)
  • go version -m sf.exe (check e.g. if cgo enabled)

Dealing with expired signing keys

  • gpg --list-options show-unusable-subkeys --list-keys
  • gpg --edit-key 0x20F802FE798E6857
  • gpg> key 2
  • gpg> expire
  • gpg --keyserver keyserver.ubuntu.com --send-keys 0x20F802FE798E6857