Настройка автоматического удаления пакетов

Info

Для автоматического удаления пакетов предназначен action. Это идеальное решение для управления хранением пакетов и очистки старых версий прямо из вашего CI/CD-воркфлоу.

Описание

Данный экшен является форком smartsquaregmbh/delete-old-packages.

Экшен получает список пакетов из последних 100 версий с применением фильтров (см. таблицу параметров ниже) и удаляет соответствующие версии.

Warning

Если у вас более 100 версий и ни одна из 100 последних не совпадает с фильтром, ни одна версия не будет удалена!

Входные параметры

НазваниеОписаниеОбязательное полеПо умолчанию
userПользователь, владеющий пакетом(пакетами)
organizationОрганизация, владеющая пакетом(пакетами)
namesНазвания пакетовДа
typeТип пакета (например, npm)Да
semver-patternSemVer диапазон версий
version-patternРегулярное выражение для версий^.+$
keepКоличество версий, которые следует исключить из удаления2
tokenТокен с необходимыми для удаления пакетов правамиЗависит от пакетаBy GitVerse
dry-runУстанавливается только для печати логов, без удаления. Если true - безопасный запуск для поиска пакетов по заданным условиям без удаления пакетов, но с логированиемfalse

Warning

Некоторые опции нельзя совмещать друг с другом, это приведет к ошибкам:

  • user и organization;
  • semver-pattern и version-pattern.

Поддерживаемые типы пакетов

container, maven, npm, pypi, helm, generic, nuget, go*, rpm, debian.

Аутентификация

В зависимости от удаляемого пакета, параметр token может быть необходим. Токен можно сгенерировать в настройках токенов, а также его необходимо добавить в секреты репозитория (Репозиторий Настройки Секреты и переменные Добавить секрет).

Примеры использования

Удаление устаревших версий нескольких пакетов

Удаление устаревших версий пакетов package-1 и package-2 для организации my-organization:

uses: actions/delete-old-packages@v1
with:
  organization: my-organization
  type: npm
  names: |
    package-1
    package-2

Удаление по регулярному выражению

Удаление устаревших версий формата 1.0.0-rc1 пакета package:

uses: actions/delete-old-packages@v1
with:
  organization: my-organization
  type: npm
  version-pattern: "^\\d+\\.\\d+\\.\\d+-rc\\d+$" # Регулярное выражение необходимо экранировать!
  names: |
    package

Удаление по SemVer диапазону

Удаление устаревших версий со значением ниже 2.x пакета package:

uses: actions/delete-old-packages@v1
with:
  organization: my-organization
  type: npm
  semver-pattern: "<2.x"
  names: |
    package

Удаление с сохранением последних N версий

Удаление устаревших версий пакета package с сохранением 5 последних версий:

uses: actions/delete-old-packages@v1
with:
  organization: my-organization
  type: npm
  keep: 5
  names: |
    package

Удаление с использованием токена

Удаление устаревших версий пакета package с токеном GV_ACCESS_TOKEN:

uses: actions/delete-old-packages@v1
with:
  token: ${{ secrets.GV_ACCESS_TOKEN }}
  organization: my-organization
  type: npm
  names: |
    package

Ограничение частоты запросов

Данный экшн для выполнения поиска и удаления пакетов работает с публичным API GitVerse, частота запросов к которому регулируется общими правилами платформы. Если число попыток превысит допустимое количество, работа экшена завершится с ошибкой.