11#! /bin/bash
2+ #
3+ # package_check.sh
4+ #
5+ # Check for the presence of nginx-agent packages in a given package repository,
6+ # and download them if required. Defaults to packages.nginx.org if no repository is specified.
7+ #
8+ # If DL=1 and files are downloaded, it also prepares the packages for upload to Azure and GitHub Releases by
9+ # modifying paths to match the expected format for each platform.
10+ #
211# Usage:
312#
413# Check package v3.0.0 availability for all platforms, no auth required:
514# > ./package_check.sh 3.0.0
615#
716# Check pkgs and download if present, with authentication:
8- # > CERT=<cert-path> KEY=<key-path> DL=1 ./package_check.sh 3.0 .0
17+ # > DL=1 CERT=<cert-path> KEY=<key-path> ./package_check.sh 3.5 .0
918#
1019# Required parameters:
1120#
12- # version: the version of agent you wish to search for i.e 3.0 .0
21+ # version: the version of agent you wish to search for i.e 3.5 .0
1322#
14- # Optional parameters :
23+ # Optional env variables :
1524#
1625# PKG_REPO: The root url for the repository you wish to check, defaults to packages.nginx.org
1726# CERT: Path to your cert file
1827# KEY: Path to your key file
1928# DL: Switch to download the package if it is present, set to 1 if download required, defaults to 0
2029#
21- # Packages are downloaded to the local directory with the path of its corresponding repo url + uri i.e
30+ # Packages are downloaded to the local directory with the path of its corresponding repo url + uri, i.e
2231#
2332# packages.nginx.org/nginx-agent/debian/pool/agent/n/nginx-agent/nginx-agent_3.0.0~bullseye_arm64.deb
2433#
@@ -46,57 +55,58 @@ if [[ -z $VERSION ]]; then
4655fi
4756PKG_DIR=" ${PKG_REPO} /${PKG_NAME} "
4857PKG_REPO_URL=" https://${PKG_DIR} "
58+ DL=${DL:- 0}
4959
50- APK=(
51- alpine/v3.22/main/aarch64/nginx-agent-$VERSION .apk
52- alpine/v3.22/main/x86_64/nginx-agent-$VERSION .apk
53- alpine/v3.21/main/aarch64/nginx-agent-$VERSION .apk
54- alpine/v3.21/main/x86_64/nginx-agent-$VERSION .apk
55- alpine/v3.20/main/aarch64/nginx-agent-$VERSION .apk
56- alpine/v3.20/main/x86_64/nginx-agent-$VERSION .apk
57- alpine/v3.19/main/aarch64/nginx-agent-$VERSION .apk
58- alpine/v3.19/main/x86_64/nginx-agent-$VERSION .apk
59- )
60- UBUNTU=(
61- ubuntu/pool/agent/n/nginx-agent/nginx-agent_$VERSION ~jammy_amd64.deb
62- ubuntu/pool/agent/n/nginx-agent/nginx-agent_$VERSION ~noble_arm64.deb
63- ubuntu/pool/agent/n/nginx-agent/nginx-agent_$VERSION ~plucky_arm64.deb
64- ubuntu/pool/agent/n/nginx-agent/nginx-agent_$VERSION ~jammy_arm64.deb
65- ubuntu/pool/agent/n/nginx-agent/nginx-agent_$VERSION ~noble_amd64.deb
66- ubuntu/pool/agent/n/nginx-agent/nginx-agent_$VERSION ~plucky_amd64.deb
67- )
68- DEBIAN=(
69- debian/pool/agent/n/nginx-agent/nginx-agent_$VERSION ~bullseye_arm64.deb
70- debian/pool/agent/n/nginx-agent/nginx-agent_$VERSION ~bookworm_amd64.deb
71- debian/pool/agent/n/nginx-agent/nginx-agent_$VERSION ~trixie_arm64.deb
72- debian/pool/agent/n/nginx-agent/nginx-agent_$VERSION ~bookworm_arm64.deb
73- debian/pool/agent/n/nginx-agent/nginx-agent_$VERSION ~bullseye_amd64.deb
74- debian/pool/agent/n/nginx-agent/nginx-agent_$VERSION ~trixie_amd64.deb
75- )
76- AMZN=(
77- amzn/2023/aarch64/RPMS/nginx-agent-$VERSION .amzn2023.ngx.aarch64.rpm
78- amzn/2023/x86_64/RPMS/nginx-agent-$VERSION .amzn2023.ngx.x86_64.rpm
60+ majorVersion=$( echo ${VERSION} | cut -d. -f1)
61+
62+ # Define package URIs to check for each platform
63+
64+ APK=()
65+ ALPINE_VERSIONS=(" 3.22" " 3.21" " 3.20" " 3.19" )
66+ ALPINE_ARCH=(" x86_64" " aarch64" )
67+ for alpine_version in " ${ALPINE_VERSIONS[@]} " ; do
68+ for arch in ${ALPINE_ARCH[@]} ; do
69+ APK+=(" alpine/v${alpine_version} /main/${arch} /nginx-agent-${VERSION} .apk" )
70+ done
71+ done
72+
73+ UBUNTU=()
74+ UBUNTU_VERSIONS=(" jammy" " noble" " plucky" )
75+ DEB_ARCH=(" amd64" " arm64" )
76+ for ubuntu_version in " ${UBUNTU_VERSIONS[@]} " ; do
77+ for arch in ${DEB_ARCH[@]} ; do
78+ UBUNTU+=(" ubuntu/pool/agent/n/nginx-agent/nginx-agent_${VERSION} ~${ubuntu_version} _${arch} .deb" )
79+ done
80+ done
81+
82+ DEBIAN=()
83+ DEBIAN_VERSIONS=(" bullseye" " bookworm" " trixie" )
84+ for deb_version in " ${DEBIAN_VERSIONS[@]} " ; do
85+ for arch in ${DEB_ARCH[@]} ; do
86+ DEBIAN+=(" debian/pool/agent/n/nginx-agent/nginx-agent_${VERSION} ~${deb_version} _${arch} .deb" )
87+ done
88+ done
89+
90+ CENTOS=()
91+ CENTOS_VERSIONS=(" 10" " 9" " 8" )
92+ RPM_ARCH=(" aarch64" " x86_64" )
93+ for centos_version in " ${CENTOS_VERSIONS[@]} " ; do
94+ for arch in ${RPM_ARCH[@]} ; do
95+ CENTOS+=(" centos/${centos_version} /${arch} /RPMS/nginx-agent-${VERSION} .el${centos_version} .ngx.${arch} .rpm" )
96+ done
97+ done
98+
99+ AMZN=()
100+ for arch in ${RPM_ARCH[@]} ; do
101+ AMZN+=(" amzn/2023/${arch} /RPMS/nginx-agent-$VERSION .amzn2023.ngx.${arch} .rpm" )
102+ AMZN+=(" amzn2/2/${arch} /RPMS/nginx-agent-$VERSION .amzn2.ngx.${arch} .rpm" )
103+ done
79104
80- amzn2/2/aarch64/RPMS/nginx-agent-$VERSION .amzn2.ngx.aarch64.rpm
81- amzn2/2/x86_64/RPMS/nginx-agent-$VERSION .amzn2.ngx.x86_64.rpm
82- )
83105SUSE=(
84106 sles/15/x86_64/RPMS/nginx-agent-$VERSION .sles15.ngx.x86_64.rpm
85107)
86- CENTOS=(
87- centos/10/aarch64/RPMS/nginx-agent-$VERSION .el10.ngx.aarch64.rpm
88- centos/10/x86_64/RPMS/nginx-agent-$VERSION .el10.ngx.x86_64.rpm
89- centos/9/aarch64/RPMS/nginx-agent-$VERSION .el9.ngx.aarch64.rpm
90- centos/9/x86_64/RPMS/nginx-agent-$VERSION .el9.ngx.x86_64.rpm
91- centos/8/aarch64/RPMS/nginx-agent-$VERSION .el8.ngx.aarch64.rpm
92- centos/8/x86_64/RPMS/nginx-agent-$VERSION .el8.ngx.x86_64.rpm
93- )
94-
95- FREEBSD=(
96- freebsd/FreeBSD:12:amd64/latest/nginx-agent-$VERSION .pkg
97- freebsd/FreeBSD:13:amd64/latest/nginx-agent-$VERSION .pkg
98- )
99108
109+ # Aggregate all URIs to fetch
100110uris=(
101111 ${DEBIAN[@]}
102112 ${UBUNTU[@]}
@@ -106,8 +116,12 @@ uris=(
106116 ${SUSE[@]}
107117)
108118
109- majorVersion=$( echo ${VERSION} | cut -d. -f1)
110119if [[ ${majorVersion} == 2 ]]; then
120+ # v2.x supports FreeBSD packages
121+ FREEBSD=(
122+ freebsd/FreeBSD:12:amd64/latest/nginx-agent-$VERSION .pkg
123+ freebsd/FreeBSD:13:amd64/latest/nginx-agent-$VERSION .pkg
124+ )
111125 uris+=(${FREEBSD[@]} )
112126fi
113127
@@ -168,14 +182,17 @@ check_repo() {
168182 fi
169183}
170184
185+ # Prepare packages for upload to Azure
171186prep_deb () {
172- echo " Preparing deb packages for upload ..."
187+ echo " Preparing deb packages..."
173188 mkdir -p " ${PKG_DIR} /azure/deb"
174189 for i in $( find " ${PKG_DIR} " | grep -e " nginx-agent[_-]${VERSION} .*\.deb" ) ; do
175190 az_dest=" ${PKG_DIR} /azure/deb/$( basename " $i " ) "
191+ # Azure path
176192 echo " Copying ${i} to ${az_dest} "
177193 cp " ${i} " " ${az_dest} "
178- echo " Renaming ${i} to ${i/ _/ -} "
194+ # GitHub release asset path
195+ echo " Moving ${i} to ${i/ _/ -} "
179196 mv " ${i} " " ${i/ _/ -} "
180197 done
181198}
@@ -188,11 +205,15 @@ prep_apk() {
188205 arch=$( echo " $i " | grep -o -F -e " x86_64" -e " aarch64" )
189206 dest=" $( dirname " $i " ) /nginx-agent-${VERSION} -$ver -$arch .apk"
190207 az_dest=" ${PKG_DIR} /azure/apk/$ver /$arch /nginx-agent-${VERSION} .apk"
191- echo " Copying ${i} to ${az_dest} "
208+
209+ # Azure path
192210 mkdir -p " $( dirname " $az_dest " ) "
211+ echo " Copying ${i} to ${az_dest} "
193212 cp " ${i} " " ${az_dest} "
194- echo " Renaming ${i} to ${dest} "
195- cp " ${i} " " ${dest} "
213+
214+ # GitHub release asset path
215+ echo " Moving ${i} to ${dest} "
216+ mv " ${i} " " ${dest} "
196217 done
197218}
198219
@@ -201,9 +222,11 @@ prep_rpm() {
201222 mkdir -p " ${PKG_DIR} /azure/rpm"
202223 for i in $( find " ${PKG_DIR} " | grep -e " nginx-agent-${VERSION} .*.rpm" ) ; do
203224 az_dest=" ${PKG_DIR} /azure/rpm/$( basename " $i " ) "
225+ # Azure path
204226 echo " Copying ${i} to ${az_dest} "
205227 mkdir -p " $( dirname " $az_dest " ) "
206228 cp " ${i} " " ${az_dest} "
229+ # No path changes needed for GitHub release
207230 done
208231}
209232
@@ -224,20 +247,24 @@ prep_txz() {
224247
225248prepare_packages () {
226249 echo " Preparing packages for upload..."
227-
228250 prep_deb
229251 prep_apk
230252 prep_rpm
231253 if [[ ${majorVersion} == 2 ]]; then
232254 prep_txz
233255 fi
234256
235- echo " Prepared packages:"
236- find " ${PKG_DIR} /azure" -type f
257+ echo
258+ echo " Prepared packages for Azure:"
259+ find " ${PKG_DIR} /azure" -type f | grep " ${VERSION} " | sed " s|${PKG_DIR} /azure/||"
260+
261+ echo
262+ echo " Prepared packages for GitHub Release v${VERSION} :"
263+ find " ${PKG_DIR} " -type f | grep " ${VERSION} " | grep -v " /azure/" | awk -F/ ' {print $NF}'
237264}
238265
239266create_tarball () {
240- echo " Creating tarball of downloaded packages ... "
267+ echo " Creating tarball... "
241268 tar -czvf " ${PKG_DIR} /nginx-agent.tar.gz" -C ${PKG_DIR} /azure .
242269 if [[ $? != 0 ]]; then
243270 echo -e " ${RED} Failed to create tarball!${NC} "
@@ -248,7 +275,11 @@ create_tarball() {
248275
249276# Main
250277
251- check_repo
252- check_pkgs
253- prepare_packages
254- create_tarball
278+ # check_repo
279+ # check_pkgs
280+
281+ # Prepare packages for upload
282+ if [[ $DL == 1 ]]; then
283+ prepare_packages
284+ create_tarball
285+ fi
0 commit comments