Skip to content

Commit

Permalink
chore: migrate workflow to delete old Cloudsmith artifacts to GitHub …
Browse files Browse the repository at this point in the history
…Actions (#32146)
  • Loading branch information
glebashnik authored Aug 15, 2024
1 parent dbfb2cf commit d6a74d4
Show file tree
Hide file tree
Showing 2 changed files with 80 additions and 0 deletions.
42 changes: 42 additions & 0 deletions .github/scripts/delete-old-cloudsmith-artifacts.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
#!/bin/bash
# Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
dnf install -y 'dnf-command(config-manager)' jq

set -euo pipefail
MAX_NUMBER_OF_RELEASES=40

# Cloudsmith repo
rpm --import 'https://dl.cloudsmith.io/public/vespa/open-source-rpms/gpg.0F3DA3C70D35DA7B.key'
curl -1sLf 'https://dl.cloudsmith.io/public/vespa/open-source-rpms/config.rpm.txt?distro=el&codename=8' > /tmp/vespa-open-source-rpms.repo
dnf config-manager --add-repo '/tmp/vespa-open-source-rpms.repo'
rm -f /tmp/vespa-open-source-rpms.repo

# Allow the last Vespa 7 release to remain in the repo
VERSIONS_TO_DELETE=$(dnf list -y --quiet --showduplicates --disablerepo='*' --enablerepo=vespa-open-source-rpms vespa | awk '/[0-9].*\.[0-9].*\.[0-9].*/{print $2}' | sort -V | grep -v "7.594.36" | head -n -$MAX_NUMBER_OF_RELEASES)

if [[ -z "$VERSIONS_TO_DELETE" ]]; then
echo "No old RPM versions to delete found. Exiting."
exit 0
fi

RPMS_TO_DELETE=$(mktemp)
trap "rm -f $RPMS_TO_DELETE" EXIT

for VERSION in $VERSIONS_TO_DELETE; do
curl -sLf --header 'accept: application/json' \
"https://api.cloudsmith.io/v1/packages/vespa/open-source-rpms/?query=version:${VERSION}" | jq -re '.[] | .slug' >> $RPMS_TO_DELETE
done

echo "Deleting the following RPMs:"
cat $RPMS_TO_DELETE

if [ "$GITHUB_EVENT_NAME" == "schedule" ]; then
for RPMID in $(cat $RPMS_TO_DELETE); do
curl -sLf -X DELETE \
--header "X-Api-Key: $CLOUDSMITH_API_TOKEN" \
--header 'accept: application/json' \
"https://api.cloudsmith.io/v1/packages/vespa/open-source-rpms/$RPMID/"
done
fi


38 changes: 38 additions & 0 deletions .github/workflows/delete-old-versions-in-archive.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
name: Delete old Cloudsmith artifacts

on:
workflow_dispatch:

pull_request:
paths:
- .github/workflows/delete-old-versions-in-archive.yml
- .github/scripts/delete-old-cloudsmith-artifacts.sh
branches:
- master

schedule:
- cron: '0 6 * * *'

jobs:
delete-old-cloudsmith-artifacts:
runs-on: ubuntu-latest

container:
image: fedora:latest
env:
GITHUB_EVENT_NAME: ${{ github.event_name }}
CLOUDSMITH_API_TOKEN: ${{ secrets.CLOUDSMITH_API_TOKEN }}
volumes:
- ${{ github.workspace }}:/workspace

defaults:
run:
working-directory: /workspace

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Delete old artifacts
run: |
.github/scripts/delete-old-cloudsmith-artifacts.sh

0 comments on commit d6a74d4

Please sign in to comment.