Skip to content

Commit f89ec9e

Browse files
authored
copy APT repo update workflow from main (#305)
* copy APT repo update workflow from main * update package metadata
1 parent 34b791e commit f89ec9e

2 files changed

Lines changed: 95 additions & 2 deletions

File tree

.fpm

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
-s dir
22
--name defguard-gateway
3-
--description "defguard VPN gateway service"
3+
--description "Defguard VPN gateway service"
44
--url "https://defguard.net/"
5-
--maintainer "teonite"
5+
--maintainer "Defguard"
66
--config-files /etc/defguard/gateway.toml.sample
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
name: Update repositories with packages
2+
3+
on:
4+
release:
5+
types: [published]
6+
7+
jobs:
8+
update-apt:
9+
runs-on:
10+
- self-hosted
11+
- Linux
12+
- X64
13+
steps:
14+
- name: Checkout
15+
uses: actions/checkout@v4
16+
- name: Install gh cli
17+
run: |
18+
sudo apt-get install -y gh
19+
- name: Download .deb assets from release
20+
env:
21+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
22+
run: |
23+
mkdir debs
24+
gh release download "${{ github.event.release.tag_name }}" \
25+
--pattern "*.deb" \
26+
--dir debs
27+
28+
- name: Install ruby with deb-s3
29+
run: |
30+
sudo apt-get install -y ruby
31+
gem install deb-s3
32+
echo "$(ruby -r rubygems -e 'puts Gem.user_dir')/bin" >> $GITHUB_PATH
33+
34+
- name: Upload DEB to APT repository
35+
run: |
36+
if [[ "${{ github.event.release.prerelease }}" == "true" ]]; then
37+
component="pre-release"
38+
else
39+
component="release"
40+
fi
41+
42+
for deb_file in debs/*.deb; do
43+
if [[ "$deb_file" == *"ubuntu-22-04-lts"* ]]; then
44+
codename="bookworm"
45+
else
46+
codename="trixie"
47+
fi
48+
49+
echo "Uploading $deb_file to $codename"
50+
deb-s3 upload -l \
51+
--bucket=apt.defguard.net \
52+
--access-key-id=${{ secrets.AWS_ACCESS_KEY_APT }} \
53+
--secret-access-key=${{ secrets.AWS_SECRET_KEY_APT }} \
54+
--s3-region=eu-north-1 \
55+
--no-fail-if-exists \
56+
--codename="$codename" \
57+
--component="$component" \
58+
"$deb_file"
59+
done
60+
61+
apt-sign:
62+
needs:
63+
- update-apt
64+
runs-on:
65+
- self-hosted
66+
- Linux
67+
- X64
68+
steps:
69+
- name: Sign APT repository
70+
run: |
71+
export AWS_ACCESS_KEY_ID=${{ secrets.AWS_ACCESS_KEY_APT }}
72+
export AWS_SECRET_ACCESS_KEY=${{ secrets.AWS_SECRET_KEY_APT }}
73+
export AWS_REGION=eu-north-1
74+
sudo apt update -y
75+
sudo apt install -y awscli curl jq
76+
77+
for DIST in trixie bookworm; do
78+
aws s3 cp s3://apt.defguard.net/dists/${DIST}/Release .
79+
80+
curl -X POST "${{ secrets.DEFGUARD_SIGNING_URL }}?signature_type=both" \
81+
-H "Authorization: Bearer ${{ secrets.DEFGUARD_SIGNING_API_KEY }}" \
82+
-F "file=@Release" \
83+
-o response.json
84+
85+
cat response.json | jq -r '.files["Release.gpg"].content' | base64 --decode > Release.gpg
86+
cat response.json | jq -r '.files.Release.content' | base64 --decode > InRelease
87+
88+
aws s3 cp Release.gpg s3://apt.defguard.net/dists/${DIST}/ --acl public-read
89+
aws s3 cp InRelease s3://apt.defguard.net/dists/${DIST}/ --acl public-read
90+
91+
done
92+
(aws s3 ls s3://apt.defguard.net/dists/ --recursive; aws s3 ls s3://apt.defguard.net/pool/ --recursive) | awk '{print "<a href=\""$4"\">"$4"</a><br>"}' > index.html
93+
aws s3 cp index.html s3://apt.defguard.net/ --acl public-read

0 commit comments

Comments
 (0)