From f077ae3f184b7a6edff240ae5a3ac06ae7202241 Mon Sep 17 00:00:00 2001
From: jakub-tldr <78603704+jakub-tldr@users.noreply.github.com>
Date: Fri, 9 Jan 2026 16:49:33 +0100
Subject: [PATCH] trigger apt update on published release/pre-release
---
.github/workflows/update-repositories.yml | 90 +++++++++++++++++++++++
1 file changed, 90 insertions(+)
create mode 100644 .github/workflows/update-repositories.yml
diff --git a/.github/workflows/update-repositories.yml b/.github/workflows/update-repositories.yml
new file mode 100644
index 0000000..58c413d
--- /dev/null
+++ b/.github/workflows/update-repositories.yml
@@ -0,0 +1,90 @@
+name: Update repositories with packages
+
+on:
+ release:
+ types: [published]
+
+jobs:
+ update-apt:
+ runs-on:
+ - self-hosted
+ - Linux
+ - X64
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ - name: Download .deb assets from release
+ env:
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ run: |
+ mkdir debs
+ gh release download "${{ github.event.release.tag_name }}" \
+ --pattern "*.deb" \
+ --dir debs
+
+ - name: Install ruby with deb-s3
+ run: |
+ sudo apt-get install -y ruby
+ gem install deb-s3
+ echo "$(ruby -r rubygems -e 'puts Gem.user_dir')/bin" >> $GITHUB_PATH
+
+ - name: Upload DEB to APT repository
+ run: |
+ if [[ "${{ github.event.release.prerelease }}" == "true" ]]; then
+ component="pre-release"
+ else
+ component="release"
+ fi
+
+ for deb_file in debs/*.deb; do
+ if [[ "$deb_file" == *"ubuntu-22-04-lts"* ]]; then
+ codename="bookworm"
+ else
+ codename="trixie"
+ fi
+
+ echo "Uploading $deb_file to $codename"
+ deb-s3 upload -l \
+ --bucket=apt.defguard.net \
+ --access-key-id=${{ secrets.AWS_ACCESS_KEY_APT }} \
+ --secret-access-key=${{ secrets.AWS_SECRET_KEY_APT }} \
+ --s3-region=eu-north-1 \
+ --no-fail-if-exists \
+ --codename="$codename" \
+ --component="$component"
+ "$deb_file"
+ done
+
+ apt-sign:
+ needs:
+ - update-apt
+ runs-on:
+ - self-hosted
+ - Linux
+ - X64
+ steps:
+ - name: Sign APT repository
+ run: |
+ export AWS_ACCESS_KEY_ID=${{ secrets.AWS_ACCESS_KEY_APT }}
+ export AWS_SECRET_ACCESS_KEY=${{ secrets.AWS_SECRET_KEY_APT }}
+ export AWS_REGION=eu-north-1
+ sudo apt update -y
+ sudo apt install -y awscli curl jq
+
+ for DIST in trixie bookworm; do
+ aws s3 cp s3://apt.defguard.net/dists/${DIST}/Release .
+
+ curl -X POST "${{ secrets.DEFGUARD_SIGNING_URL }}?signature_type=both" \
+ -H "Authorization: Bearer ${{ secrets.DEFGUARD_SIGNING_API_KEY }}" \
+ -F "file=@Release" \
+ -o response.json
+
+ cat response.json | jq -r '.files["Release.gpg"].content' | base64 --decode > Release.gpg
+ cat response.json | jq -r '.files.Release.content' | base64 --decode > InRelease
+
+ aws s3 cp Release.gpg s3://apt.defguard.net/dists/${DIST}/ --acl public-read
+ aws s3 cp InRelease s3://apt.defguard.net/dists/${DIST}/ --acl public-read
+
+ done
+ (aws s3 ls s3://apt.defguard.net/dists/ --recursive; aws s3 ls s3://apt.defguard.net/pool/ --recursive) | awk '{print ""$4"
"}' > index.html
+ aws s3 cp index.html s3://apt.defguard.net/ --acl public-read