Skip to content

Commit 1b2b415

Browse files
committed
only sync latest package
1 parent b78b9d4 commit 1b2b415

1 file changed

Lines changed: 39 additions & 2 deletions

File tree

scripts/publish-package-repo.sh

Lines changed: 39 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ shopt -s nullglob
1010

1111
PACKAGE_NAME="${PACKAGE_NAME:-${GITHUB_REPOSITORY:-}}"
1212
PACKAGE_NAME="${PACKAGE_NAME##*/}"
13+
if [ -z "$PACKAGE_NAME" ]; then
14+
echo "PACKAGE_NAME could not be determined"
15+
exit 1
16+
fi
1317
APTLY_DISTRIBUTIONS="${APTLY_DISTRIBUTIONS:-bookworm}"
1418
APTLY_COMPONENT="${APTLY_COMPONENT:-main}"
1519
APTLY_ARCHITECTURES="${APTLY_ARCHITECTURES:-amd64,arm64}"
@@ -105,13 +109,41 @@ PY
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+
108137
acquire_lock
109138

110139
gcloud 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+
115147
mkdir -p "$MERGED_DIST_DIR"
116148
find "$PACKAGE_REPO_STAGE_DIR" -type f \( -name "*.deb" -o -name "*.rpm" \) -exec cp {} "$MERGED_DIST_DIR"/ \;
117149
find "$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"
@@ -197,6 +229,10 @@ EOF
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/"
201237
fi
202238

@@ -205,6 +241,7 @@ gpg --batch --yes --output "$PACKAGE_REPO_STAGE_DIR/${APTLY_PUBLIC_KEY_NAME}.gpg
205241

206242
if [ ${#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

Comments
 (0)