Skip to content

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:

  1. Create repository
  2. Update, build package and commit changes in package's PKGBUILD_
  3. Tag release .. note:: Force pushing tags is disallowed.
  4. Sign package
  5. Upload built package and signature
  6. Call application on repository/ package server to add package

Repository server/ package server:

.. important:: The following steps need to be atomic (reversible).

  1. Verify user permissions #26
  2. Verify that an upstream URL is provided for any new pkgbase #39 (closed)
  3. Lock repository sync databases and management repository #117
  4. Inspect built files of package
  5. Lock tags (by storing them in package's bare repository) @heftig @alad @maximbaz (please clarify what this means)
  6. Modify management repo to reflect changes
  7. Verify package file versioning and tag is consistent #118
  8. Copy built package and signature to pool and create symlink to them in target repository
  9. Add package to the package database
  10. 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.

  1. Verify user permissions #26
  2. Lock repository sync databases and management repository #117
  3. Inspect built files of package
  4. Lock tags (by storing them in package's bare repository) @heftig @alad @maximbaz (please clarify what this means)
  5. Modify management repo to reflect changes
  6. Verify package file versioning and tag is consistent #118
  7. Copy built package and signature to pool and create symlink to them in target repository
  8. Add package to the package database
  9. Remove symlinks and files of previous versions of package(s) #107 (closed)
  10. Unlock repository sync databases and management repository #117

Removing a Package

Developer machine/ build server:

  1. 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)

  1. Verify user permissions #26
  2. Lock repository sync databases and management repository #117
  3. Modify monorepo to reflect changes
  4. Remove package from the package database
  5. Remove built package and signature from pool and remove symlink to them in target repository #107 (closed)
  6. Unlock package database and monorepo #117

Moving a Package

Developer machine/ build server:

  1. Call application on repository/ package server to move package

Repository server/ package server:

.. important:: The following steps need to be transactional (reversible).

  1. Verify user permissions #26
  2. Lock repository sync databases and management repository #117
  3. Modify management repo(s) to reflect changes
  4. Remove package from the source package database (write to tmp location) #105 (closed)
  5. Add package to the destination package database (write to tmp location) #105 (closed)
  6. Remove symlinks to package and signature files from source repository #107 (closed)
  7. Add symlinks to package and signature them to the target repository
  8. Unlock source and target package databases and management repo #117

.. _PKGBUILD: https://man.archlinux.org/man/pacman/PKGBUILD.5.en

Edited by David Runge
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information