Release process - richardlehane/siegfried GitHub Wiki
Release process for siegfried updates
Update signatures
- http://tika.apache.org/download.html
- https://freedesktop.org/wiki/Software/shared-mime-info/ (Releases - data - freedesktop.org.xml.in rename to .xml)
- http://www.loc.gov/preservation/digital/formats/fdd/fdd_xml_info.shtml
- http://www.nationalarchives.gov.uk/aboutapps/pronom/droid-signature-files.htm
Prep
- Update README
- Update CHANGELOG
go get -u// update dependenciesgo mod tidy// clean cruftgo test ./...: check all the tests- 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)- Commit changes to develop branch
- STOP and check on github actions to see if any tests are failing!
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:
- Copy latest:
- release-notes.xml
- droid.xml
- container.xml
- 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/*"andunzip pronom.zip "skeleton-suite/*" - doing
sudo chmod -R -x .andsudo chmod -R +X .(adds exec bit for dirs) will fix git diff explosion for file mode changes
-
Run
go generatein thecmd/roydirectory to rebuild siegfried's signature files (default.sig and archivematica.sig) and sets; then run thesftests to check against the new test suite -
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)
- fmt-2090-signature-id-3453.tif (reported here)
- fmt-2091-signature-id-3454.tif (reported here)
- 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
-updateservice.
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 generateto update the siegfried.js file, sets files (need to have latest sets in siegfried home) and update.json files hugoto rebuild the sitegcloud 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/[email protected]=golang.org/x/[email protected]
Check deb files and binaries
dpkg -I siegfried.debar -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-keysgpg --edit-key 0x20F802FE798E6857gpg> key 2gpg> expiregpg --keyserver keyserver.ubuntu.com --send-keys 0x20F802FE798E6857