Skip to content

Commit e422fc6

Browse files
authored
APT update on published release/pre-release (#228)
1 parent a876d5b commit e422fc6

File tree

1 file changed

+90
-0
lines changed

1 file changed

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

0 commit comments

Comments
 (0)