feat(apt): import .deb files from import- directory (#10694)

Currently, the `sync-apt.sh` script just generates metadata for all
packages found in the `.deb` directory. Unfortunately, this requires the
packages to already be uploaded with a certain naming convention,
otherwise `apt-ftparchive packages` doesn't actually detect them and
creates an empty `Packages` file.

The solution here is to extend the `sync-apt.sh` script to normalize the
filename to what we need it to be. This requires us to upload the new
`.deb` files to the `pool` directory. Instead of messing around with the
existing files in there, we slightly change how the `sync-apt.sh` script
works.

In its new version, it expects packages to be in the `import-stable` and
`import-preview` directories. It will then download these, normalize
their names and move them to a local `pool-stable` and `pool-preview`
directory respectively (potentially overwriting and existing one that is
already there, this allows for updating packages).

As a final step, it will generate the metadata for all packages in
`pool-stable` and `pool-preview`, upload both directories, upload the
metadata and then delete the imported `.deb` files.
This commit is contained in:
Thomas Eizinger
2025-10-23 21:09:07 +11:00
committed by GitHub
parent 30b70b408c
commit 28ea0730b6
2 changed files with 82 additions and 4 deletions

View File

@@ -198,7 +198,7 @@ jobs:
run: |
set -xe
# Download all .deb assets directly to pool
# Download all .deb assets
gh release download "${{ inputs.release_name || github.event.release.name }}" --pattern "*.deb"
# List downloaded files for verification
@@ -209,7 +209,7 @@ jobs:
--destination apt \
--source . \
--pattern "*.deb" \
--destination-path pool \
--destination-path import-stable \
--overwrite \
--no-progress \
--connection-string "${{ secrets.AZURERM_ARTIFACTS_CONNECTION_STRING }}"