@@ -10,6 +10,10 @@ shopt -s nullglob
1010
1111PACKAGE_NAME=" ${PACKAGE_NAME:- ${GITHUB_REPOSITORY:- } } "
1212PACKAGE_NAME=" ${PACKAGE_NAME##*/ } "
13+ if [ -z " $PACKAGE_NAME " ]; then
14+ echo " PACKAGE_NAME could not be determined"
15+ exit 1
16+ fi
1317APTLY_DISTRIBUTIONS=" ${APTLY_DISTRIBUTIONS:- bookworm} "
1418APTLY_COMPONENT=" ${APTLY_COMPONENT:- main} "
1519APTLY_ARCHITECTURES=" ${APTLY_ARCHITECTURES:- amd64,arm64} "
105109 done
106110}
107111
112+ package_file_name () {
113+ local package_file=" $1 "
114+
115+ case " $package_file " in
116+ * .deb)
117+ dpkg-deb -f " $package_file " Package 2> /dev/null || true
118+ ;;
119+ * .rpm)
120+ rpm -qp --qf ' %{NAME}\n' " $package_file " 2> /dev/null || true
121+ ;;
122+ esac
123+ }
124+
125+ stage_package_artifacts () {
126+ find " $DIST_DIR " -maxdepth 1 -type f \( -name " *.deb" -o -name " *.rpm" \) -exec cp {} " $PACKAGE_REPO_STAGE_DIR " / \;
127+ }
128+
129+ prune_stage_package_history () {
130+ while IFS= read -r -d ' ' staged_package; do
131+ if [ " $( package_file_name " $staged_package " ) " = " $PACKAGE_NAME " ]; then
132+ rm -f " $staged_package "
133+ fi
134+ done < <( find " $PACKAGE_REPO_STAGE_DIR " -type f \( -name " *.deb" -o -name " *.rpm" \) -print0)
135+ }
136+
108137acquire_lock
109138
110139gcloud storage rsync \
111140 --recursive \
112141 " $destination " \
113142 " $PACKAGE_REPO_STAGE_DIR " > /dev/null 2>&1 || true
114143
144+ prune_stage_package_history
145+ stage_package_artifacts
146+
115147mkdir -p " $MERGED_DIST_DIR "
116148find " $PACKAGE_REPO_STAGE_DIR " -type f \( -name " *.deb" -o -name " *.rpm" \) -exec cp {} " $MERGED_DIST_DIR " / \;
117149find " $DIST_DIR " -maxdepth 1 -type f \( -name " *.deb" -o -name " *.rpm" \) -exec cp {} " $MERGED_DIST_DIR " / \;
@@ -157,15 +189,15 @@ if [ ${#deb_packages[@]} -gt 0 ]; then
157189 exit 1
158190 fi
159191
160- cat > " $APTLY_ROOT_DIR /aptly.conf" << EOF
192+ cat > " $APTLY_ROOT_DIR /aptly.conf" << APTLYCONF
161193{
162194 "rootDir": "$APTLY_ROOT_DIR ",
163195 "architectures": [$architecture_json ],
164196 "gpgDisableSign": false,
165197 "downloadConcurrency": 4,
166198 "downloadSpeedLimit": 0
167199}
168- EOF
200+ APTLYCONF
169201
170202 passphrase_file=" $APTLY_ROOT_DIR /gpg-passphrase"
171203 cp " $passphrase_file_secret " " $passphrase_file "
197229 " $APTLY_PUBLISH_PREFIX "
198230 done
199231
232+ while IFS= read -r existing_public_path; do
233+ rm -rf " $PACKAGE_REPO_STAGE_DIR /${existing_public_path# " $APTLY_ROOT_DIR /public" / } "
234+ done < <( find " $APTLY_ROOT_DIR /public" -mindepth 1 -maxdepth 1)
235+
200236 cp -R " $APTLY_ROOT_DIR /public/." " $PACKAGE_REPO_STAGE_DIR /"
201237fi
202238
@@ -205,6 +241,7 @@ gpg --batch --yes --output "$PACKAGE_REPO_STAGE_DIR/${APTLY_PUBLIC_KEY_NAME}.gpg
205241
206242if [ ${# rpm_packages[@]} -gt 0 ]; then
207243 rpm_dir=" $PACKAGE_REPO_STAGE_DIR /${RPM_REPOSITORY_PATH#/ } "
244+ rm -rf " $rpm_dir "
208245 mkdir -p " $rpm_dir "
209246 cp " ${rpm_packages[@]} " " $rpm_dir /"
210247 createrepo_c --update " $rpm_dir "
0 commit comments