Establish workflow scenarios
This ticket is supposed to document the already established workflows that have been elaborated on. Unfortunately the tooling is not ready for them yet, which makes their place in user facing documentation a problem. Hence I'm moving them here, so they can be worked on again once the tooling has gained more features to even support these workflows:
Packager Workflows
In this section the different workflows are listed, to give an overview, what they would mean in the different git repository layouts.
Adding a Package
Developer machine/ build server:
- Create repository
- Update, build package and commit changes in package's
PKGBUILD
_ - Tag release .. note:: Force pushing tags is disallowed.
- Sign package
- Upload built package and signature
- Call application on repository/ package server to add package
Repository server/ package server:
.. important:: The following steps need to be atomic (reversible).
- Verify user permissions #26
- Verify that an upstream URL is provided for any new
pkgbase
#39 (closed) - Lock repository sync databases and management repository #117
Inspect built files of package- Lock tags (by storing them in package's bare repository) @heftig @alad @maximbaz (please clarify what this means)
Modify management repo to reflect changes- Verify package file versioning and tag is consistent #118
Copy built package and signature to pool and create symlink to them in target repositoryAdd package to the package database- Unlock repository sync databases and management repository #117
Updating a Package
All steps, but the first, of Developer machine/ build server in Adding a Package
_ apply.
All steps of Repository server/ package server in Adding a Package
_ apply.
- Verify user permissions #26
- Lock repository sync databases and management repository #117
Inspect built files of package- Lock tags (by storing them in package's bare repository) @heftig @alad @maximbaz (please clarify what this means)
Modify management repo to reflect changes- Verify package file versioning and tag is consistent #118
Copy built package and signature to pool and create symlink to them in target repositoryAdd package to the package database- Remove symlinks and files of previous versions of package(s) #107 (closed)
- Unlock repository sync databases and management repository #117
Removing a Package
Developer machine/ build server:
- Call application on repository/ package server to remove package
Repository server/ package server:
.. important:: The following steps need to be transactional (reversible).
.. note:: The remove command should be able to remove stale packages (e.g. leftover packages, when removing a member of a split package)
- Verify user permissions #26
- Lock repository sync databases and management repository #117
Modify monorepo to reflect changesRemove package from the package database- Remove built package and signature from pool and remove symlink to them in target repository #107 (closed)
- Unlock package database and monorepo #117
Moving a Package
Developer machine/ build server:
- Call application on repository/ package server to move package
Repository server/ package server:
.. important:: The following steps need to be transactional (reversible).
- Verify user permissions #26
- Lock repository sync databases and management repository #117
Modify management repo(s) to reflect changes- Remove package from the source package database (write to tmp location) #105 (closed)
- Add package to the destination package database (write to tmp location) #105 (closed)
- Remove symlinks to package and signature files from source repository #107 (closed)
Add symlinks to package and signature them to the target repository- Unlock source and target package databases and management repo #117
.. _PKGBUILD: https://man.archlinux.org/man/pacman/PKGBUILD.5.en