Release Process
This is an outline/checklist of the process to create Archivematica & Storage service releases.
Overview
- Merge new features
- Test new features
- #Update PRONOM
- Write documentation
- Create packages
- #Tag Release
- Announce release
Update PRONOM
PRONOM needs to be updated in our file identification tools, FIDO & Siegfried, as well as in the FPR.
Update FIDO
The FPR update currently use FIDO as a source for new PRONOM, since it is formatted nicer than PRONOM offers, so we depend on FIDO having updated their PRONOM. If that has not happened, we can generate a new formats-v##.xml by updating signatures manually. Artefactual can also update PRONOM and submit a PR to FIDO.
- Checkout fido from https://github.com/openpreserve/fido
- Update signatures
- Run
python -m fido.update_signatures
from the fido repository root
- Run
- Add:
- New signature file
fido/conf/DROID_SignatureFile-v##.xml
- New formats file
fido/conf/formats-v##.xml
- New PRONOM zip file
fido/conf/pronom-xml-v##.zip
- Updated
fido/conf/versions.xml
- New signature file
- Remove:
- Old signature file
- Old formats file
- Old PRONOM zip file
- Update
fido/fido.py
to point to the new format_files - Create pull request. This may trigger a release from FIDO
Package FIDO
First, clone the am-packbuild repo. The most recent work has been done in branch dev/packages-1.6-docker, and needs to be merged into main.
Update the Makefiles available at rpm/fido/Makefile
, and deb/fido/Makefile
, and run make
in each directory to build the packages.
Package Siegfried
First, clone the am-packbuild repo. The most recent work has been done in branch dev/packages-1.6-docker, and needs to be merged into main.
Update the Makefiles available at rpm/siegfried/Makefile
, and deb/siegfried/Makefile
, and run make
in each directory to build the packages.
Update FPR
This process is currently more convoluted than it needs to be, and should be simplified.
This depends on FIDO having updated their PRONOM files. See #Update FIDO
- Install the latest stable Archivematica release
- Generate a JSON with the current version of the FPR (for use later)
./src/dashboard/src/manage.py dumpdata fpr > fpr-current.json
- Install the latest development version of Archivematica
- Generate a blank data migration in the FPR-admin module
- E.g.
./src/dashboard/src/manage.py makemigrations --empty --name pronom_89 fpr
- E.g.
- Generate the FPR migration body. This also updates the local database's FPR with the new PRONOM IDs
- E.g.
am import-pronom-ids fido/fido/conf/formats-v89.xml --output-filename archivematica/pronom89.txt
- E.g.
- Copy the output into the blank migration, add RunPython operation
migrations.RunPython(data_migration),
- Due to a bug, fix the imports
- Remove the
apps.get_model
lines - Import the models directly with
from fpr.models import Format, FormatVersion, IDRule
- Remove the
- Commit
- Deploy on testing pipeline
- (Analysts) Update the new entries
- Move new formats to a more appropriate category
- Create rules & commands
- Test with data for new formats
- Generate a JSON with the updated version of the FPR on the testing pipeline
./src/dashboard/src/manage.py dumpdata fpr > fpr-updated.json
- Get the updates as JSON
- E.g.
am get-fpr-changes fpr-current.json fpr-updated.json src/dashboard/src/fpr/migrations/pronom_89.json
- E.g.
- Update the migration to load the JSON updates
- Replace the contents of the data migration function with
fixture_file = os.path.join(os.path.dirname(__file__), 'pronom_89.json')
call_command('loaddata', fixture_file, app_label='fpr')
- Remove the direct imports from the bug
- Improvement Note: Because this is using loaddata, this will have problems if the FPR models are changed. A possible solution is to update get-fpr-changes to generate a migration instead of JSON
- Replace the contents of the data migration function with
- Commit
- Merge
Tag Release
- Add release tags to repositories
- Archivematica
- Storage Service
- FPR-admin
- appraisal tab
- transfer browser
- Others?
- Create stable/#.x branch
- Delete qa/#.x branch