From 020712e29845bc8fd2d77e5626ca68f9140c1da3 Mon Sep 17 00:00:00 2001 From: Namrata Jha Date: Tue, 23 Nov 2021 10:28:51 +0000 Subject: [PATCH] Update README.md --- README.md | 392 ++++++++++++++++++++++++++++++------------------------ 1 file changed, 215 insertions(+), 177 deletions(-) diff --git a/README.md b/README.md index d1dd6039..3a0167d4 100644 --- a/README.md +++ b/README.md @@ -4,15 +4,17 @@ This action deletes versions of a package from [GitHub Packages](https://github. ### What It Can Do -* Delete a single version -* Delete multiple versions -* Delete specific version(s) +* Create a retention policy (delete all except n most recent pre-release versions) +* Delete all package versions except n most recent versions. * Delete oldest version(s) +* Ignore version(s) from deletion through regex. * Delete version(s) of a package that is hosted in the same repo that is executing the workflow * Delete version(s) of a package that is hosted in a different repo than the one executing the workflow -* Delete maximum possible package versions except n latest versions -* Ignore some versions based on name from deletion -* Delete only pre-release versions +* Delete a single version +* Delete multiple versions + + +* Delete specific version(s) # Usage @@ -40,18 +42,19 @@ This action deletes versions of a package from [GitHub Packages](https://github. # The number of old versions to delete starting from the oldest version. # Defaults to 1. - # Cannot be more than 100 + # Cannot be more than 100. num-old-versions-to-delete: # The number of latest versions to not delete. # Defaults to 0. # When this is set greater than 0 it will delete all deletable package versions except the specified no. - # `num-old-versions-to-delete` will not be taken into account. - # Cannot be more than 100 + # `num-old-versions-to-delete` will not be taken into account with this option. + # Cannot be more than 100. min-versions-to-keep: - # The package versions to ignore exclude from deletion. - # By default nothing is ignored + # The package versions to exclude from deletion. + # Takes regex for the version name as input. + # By default nothing is ignored. ignore-versions: # If true it will delete only the pre-release versions. @@ -70,253 +73,288 @@ This action deletes versions of a package from [GitHub Packages](https://github. # Scenarios - - [Delete a specific version of a package hosted in the same repo as the workflow](#delete-a-specific-version-of-a-package-hosted-in-the-same-repo-as-the-workflow) - - [Delete a specific version of a package hosted in a different repo than the workflow](#delete-a-specific-version-of-a-package-hosted-in-a-different-repo-than-the-workflow) - - [Delete multiple specific versions of a package hosted in the same repo as the workflow](#delete-multiple-specific-versions-of-a-package-hosted-in-the-same-repo-as-the-workflow) - - [Delete multiple specific versions of a package hosted in a different repo than the workflow](#delete-multiple-specific-versions-of-a-package-hosted-in-a-different-repo-than-the-workflow) - - [Delete oldest version of a package hosted in the same repo as the workflow](#delete-oldest-version-of-a-package-hosted-in-the-same-repo-as-the-workflow) - - [Delete oldest version of a package hosted in a different repo than the workflow](#delete-oldest-version-of-a-package-hosted-in-a-different-repo-than-the-workflow) - - [Delete oldest x number of versions of a package hosted in the same repo as the workflow](#delete-oldest-x-number-of-versions-of-a-package-hosted-in-the-same-repo-as-the-workflow) - - [Delete oldest x number of versions of a package hosted in a different repo than the workflow](#delete-oldest-x-number-of-versions-of-a-package-hosted-in-a-different-repo-than-the-workflow) - - [Delete all except y latest versions of a package hosted in the same repo as the workflow](#delete-all-except-y-latest-versions-of-a-package-hosted-in-the-same-repo-as-the-workflow) - - [Delete all except y latest versions of a package hosted in a different repo than the workflow](#delete-all-except-y-latest-versions-of-a-package-hosted-in-a-different-repo-than-the-workflow) - - [Delete oldest x number of versions while ignoring particular package versions in the same repo as the workflow](#delete-oldest-x-number-of-versions-while-ignoring-particular-package-versions-in-the-same-repo-as-the-workflow) - - [Delete all except y latest versions while ignoring particular package versions in the same repo as the workflow](#delete-all-except-y-latest-versions-while-ignoring-particular-package-versions-in-the-same-repo-as-the-workflow) - - [Delete only pre-release package versions except y no of pre-release package versions in the same repo as the workflow](#delete-only-pre-release-package-versions-except-y-no-of-pre-release-package-versions-in-the-same-repo-as-the-workflow) + - [Delete all pre-release versions except y latest pre-release package versions](#delete-all-pre-release-versions-except-y-latest-pre-release-package-versions) + - [Delete all except y latest versions while ignoring particular package versions](#delete-all-except-y-latest-versions-while-ignoring-particular-package-versions) + - [Delete oldest x number of versions while ignoring particular package versions](#delete-oldest-x-number-of-versions-while-ignoring-particular-package-versions) + - [Delete all except y latest versions of a package](#delete-all-except-y-latest-versions-of-a-package) + - [Delete oldest x number of versions of a package](#delete-oldest-x-number-of-versions-of-a-package) + - [Delete oldest version of a package](#delete-oldest-version-of-a-package) + - [Delete a specific version of a package](#delete-a-specific-version-of-a-package) + - [Delete multiple specific versions of a package](#delete-multiple-specific-versions-of-a-package) + + ### Delete all pre-release versions except y latest pre-release package versions -### Delete a specific version of a package hosted in the same repo as the workflow + To delete all pre release versions except y latest pre-release package versions in the same repo as the workflow the __package-name__, __min-versions-to-keep__ and __delete-only-pre-release-versions__ inputs are required. -To delete a specific version of a package that is hosted in the same repo as the one executing the workflow the __package-version-ids__ input is required. + __Example__ -Package version ids can be retrieved via the [GitHub GraphQL API][api] + Delete all pre-release package versions except latest 10 in the same repo as the workflow -__Example__ + ```yaml + - uses: actions/delete-package-versions@v1 + with: + package-name: 'test-package' + min-versions-to-keep: 10 + delete-only-pre-release-versions: "true" + ``` + To delete all pre release versions except y latest pre-release package versions in a different repo than the workflow the __owner__, __repo__, __package-name__, __token__, __min-versions-to-keep__ and __delete-only-pre-release-versions__ inputs are required. -```yaml -- uses: actions/delete-package-versions@v1 - with: - package-version-ids: 'MDE0OlBhY2thZ2VWZXJzaW9uOTcyMDY3' -``` + The [token][token] needs the delete packages and read packages scope. It is recommended [to store the token as a secret][secret]. In this example the [token][token] was stored as a secret named __GITHUB_PAT__. -
+ __Example__ -### Delete a specific version of a package hosted in a different repo than the workflow + Delete all pre-release package versions except latest 10 in a different repo than the workflow -To delete a specific version of a package that is hosted in a different repo than the one executing the workflow the __package-version-ids__, and __token__ inputs are required. + ```yaml + - uses: actions/delete-package-versions@v1 + with: + owner: 'github' + repo: 'packages' + package-name: 'test-package' + token: ${{ secrets.GITHUB_PAT }} + min-versions-to-keep: 10 + delete-only-pre-release-versions: "true" + ``` -Package version ids can be retrieved via the [GitHub GraphQL API][api]. +
-The [token][token] only needs the delete packages scope. It is recommended [to store the token as a secret][secret]. In this example the [token][token] was stored as a secret named __GITHUB_PAT__. + ### Delete all except y latest versions while ignoring particular package versions -__Example__ + To delete all except y latest versions while ignoring particular package versions in the same repo as the workflow the __package-name__, __min-versions-to-keep__ and __ignore-versions__ inputs are required. -```yaml -- uses: actions/delete-package-versions@v1 - with: - package-version-ids: 'MDE0OlBhY2thZ2VWZXJzaW9uOTcyMDY3' - token: ${{ secrets.GITHUB_PAT }} -``` + __Example__ -
+ Delete all except latest 3 package versions excluding major versions as per semver in the same repo as the workflow -### Delete multiple specific versions of a package hosted in the same repo as the workflow + ```yaml + - uses: actions/delete-package-versions@v1 + with: + package-name: 'test-packae' + min-versions-to-keep: 3 + ignore-versions: '^(0|[1-9]\\d*)\\.0\\.0$' + ``` -To delete multiple specifc versions of a package that is hosted in the same repo that is executing the workflow the __package-version-ids__ input is required. + To delete all except y latest versions while ignoring particular package versions in a different repo than the workflow the __owner__, __repo__, __package-name__, __token__, __min-versions-to-keep__ and __ignore-versions__ inputs are required. -The __package-version-ids__ input should be a comma separated string of package version ids. Package version ids can be retrieved via the [GitHub GraphQL API][api]. + The [token][token] needs the delete packages and read packages scope. It is recommended [to store the token as a secret][secret]. In this example the [token][token] was stored as a secret named __GITHUB_PAT__. -__Example__ + __Example__ -```yaml -- uses: actions/delete-package-versions@v1 - with: - package-version-ids: 'MDE0OlBhY2thZ2VWZXJzaW9uOTcyMDY3, MDE0OlBhY2thZ2VWZXJzaW9uOTcyMzQ5, MDE0OlBhY2thZ2VWZXJzaW9uOTcyMzUw' -``` + Delete all except latest 3 package versions excluding major versions as per semver in a different repo than the workflow -
+ ```yaml + - uses: actions/delete-package-versions@v1 + with: + owner: 'github' + repo: 'packages' + package-name: 'test-packae' + token: ${{ secrets.GITHUB_PAT }} + min-versions-to-keep: 3 + ignore-versions: '^(0|[1-9]\\d*)\\.0\\.0$' + ``` -### Delete multiple specific versions of a package hosted in a different repo than the workflow +
-To delete multiple specifc versions of a package that is hosted in a different repo than the one executing the workflow the __package-version-ids__, and __token__ inputs are required. + ### Delete oldest x number of versions while ignoring particular package versions -The __package-version-ids__ input should be a comma separated string of package version ids. Package version ids can be retrieved via the [GitHub GraphQL API][api]. + To delete oldest x number of versions while ignoring all the major package versions in the same repo as the workflow the __package-name__, __num-oldest-versions-to-delete__ and __ignore-versions__ inputs are required. -The [token][token] only needs the delete packages scope. It is recommended [to store the token as a secret][secret]. In this example the [token][token] was stored as a secret named __GITHUB_PAT__. + There is a possibility if the oldest x number of versions contain ignored package versions, actual package versions to get deleted will be less than x. -__Example__ + __Example__ -```yaml -- uses: actions/delete-package-versions@v1 - with: - package-version-ids: 'MDE0OlBhY2thZ2VWZXJzaW9uOTcyMDY3, MDE0OlBhY2thZ2VWZXJzaW9uOTcyMzQ5, MDE0OlBhY2thZ2VWZXJzaW9uOTcyMzUw' - token: ${{ secrets.GITHUB_PAT }} -``` + Delete 3 oldest versions excluding major versions as per semver is the same repo as the workflow -
+ ```yaml + - uses: actions/delete-package-versions@v1 + with: + package-name: 'test-packae' + num-old-versions-to-delete: 3 + ignore-versions: '^(0|[1-9]\\d*)\\.0\\.0$' + ``` -### Delete oldest version of a package hosted in the same repo as the workflow + To delete oldest x number of versions while ignoring all the major package versions in a different repo than the workflow the __owner__, __repo__, __package-name__, __token__, __num-oldest-versions-to-delete__ and __ignore-versions__ inputs are required. -To delete the oldest version of a package that is hosted in the same repo that is executing the workflow the __package-name__ input is required. + There is a possibility if the oldest x number of versions contain ignored package versions, actual package versions to get deleted will be less than x. -__Example__ + The [token][token] needs the delete packages and read packages scope. It is recommended [to store the token as a secret][secret]. In this example the [token][token] was stored as a secret named __GITHUB_PAT__. -```yaml -- uses: actions/delete-package-versions@v1 - with: - package-name: 'test-package' -``` + __Example__ -
+ Delete 3 oldest versions excluding major versions as per semver is a differernt repo than the workflow -### Delete oldest version of a package hosted in a different repo than the workflow + ```yaml + - uses: actions/delete-package-versions@v1 + with: + owner: 'github' + repo: 'packages' + package-name: 'test-packae' + token: ${{ secrets.PAT }} + num-old-versions-to-delete: 3 + ignore-versions: '^(0|[1-9]\\d*)\\.0\\.0$' + ``` -To delete the oldest version of a package that is hosted in a different repo than the one executing the workflow the __package-name__, __owner__, __repo__, and __token__ inputs are required. +
-The [token][token] needs the delete packages and read packages scope. It is recommended [to store the token as a secret][secret]. In this example the [token][token] was stored as a secret named __GITHUB_PAT__. + ### Delete all except y latest versions of a package -__Example__ + To delete all except y latest versions of a package hosted in the same repo as the workflow the __package-name__ and __min-versions-to-keep__ inputs are required. -```yaml -- uses: actions/delete-package-versions@v1 - with: - owner: 'github' - repo: 'packages' - package-name: 'test-package' - token: ${{ secrets.GITHUB_PAT }} -``` + __Example__ -
+ Delete all except latest 2 versions of a package hosted in the same repo as the workflow -### Delete oldest x number of versions of a package hosted in the same repo as the workflow + ```yaml + - uses: actions/delete-package-versions@v1 + with: + package-name: 'test-package' + min-versions-to-keep: 2 + ``` -To delete the oldest x number of versions of a package hosted in the same repo that is executing the workflow the __package-name__, and __num-old-versions-to-delete__ inputs are required. + To delete all except y latest versions of a package hosted in a repo other than the workflow the __owner__, __repo__, __package-name__, __token__ and __min-versions-to-keep__ inputs are required. -__Example__ + The [token][token] needs the delete packages and read packages scope. It is recommended [to store the token as a secret][secret]. In this example the [token][token] was stored as a secret named __GITHUB_PAT__. -Delete the oldest 3 version of a package hosted in the same repo as the workflow + __Example__ -```yaml -- uses: actions/delete-package-versions@v1 - with: - package-name: 'test-package' - num-old-versions-to-delete: 3 -``` + Delete all except latest 2 versions of a package hosted in a repo other than the workflow -
+ ```yaml + - uses: actions/delete-package-versions@v1 + with: + owner: 'github' + repo: 'packages' + package-name: 'test-package' + token: ${{ secrets.PAT }} + min-versions-to-keep: 2 + ``` -### Delete oldest x number of versions of a package hosted in a different repo than the workflow +
-To delete the oldest x number of versions of a package hosted in a different repo than the one executing the workflow the __package-name__, __num-old-versions-to-delete__, __owner__, __repo__, and __token__ inputs are required. + ### Delete oldest x number of versions of a package -The [token][token] needs the delete packages and read packages scope. It is recommended [to store the token as a secret][secret]. In this example the [token][token] was stored as a secret named __GITHUB_PAT__. + To delete the oldest x number of versions of a package hosted in the same repo as the workflow the __package-name__, and __num-old-versions-to-delete__ inputs are required. -__Example__ + __Example__ -Delete the oldest 3 version of a package hosted in a different repo than the one executing the workflow + Delete the oldest 3 version of a package hosted in the same repo as the workflow -```yaml -- uses: actions/delete-package-versions@v1 - with: - owner: 'github' - repo: 'packages' - package-name: 'test-package' - num-old-versions-to-delete: 3 - token: ${{ secrets.GITHUB_PAT }} -``` + ```yaml + - uses: actions/delete-package-versions@v1 + with: + package-name: 'test-package' + num-old-versions-to-delete: 3 + ``` -
+ To delete the oldest x number of versions of a package hosted in a different repo than the workflow the __owner__, __repo__, __package-name__, __token__ and __num-old-versions-to-delete__ inputs are required. -### Delete all except y latest versions of a package hosted in the same repo as the workflow + The [token][token] needs the delete packages and read packages scope. It is recommended [to store the token as a secret][secret]. In this example the [token][token] was stored as a secret named __GITHUB_PAT__. -To delete all except y latest versions of a package hosted in the same repo as the workflow the __package-name__ and __min-versions-to-keep__ inputs are required. + __Example__ -__Example__ + Delete the oldest 3 version of a package hosted in a different repo than the one executing the workflow -Delete all except latest 2 versions of a package hosted in the same repo as the workflow + ```yaml + - uses: actions/delete-package-versions@v1 + with: + owner: 'github' + repo: 'packages' + package-name: 'test-package' + num-old-versions-to-delete: 3 + token: ${{ secrets.GITHUB_PAT }} + ``` -```yaml -- uses: actions/delete-package-versions@v1 - with: - package-name: 'test-package' - min-versions-to-keep: 2 -``` +
-
+ ### Delete oldest version of a package -### Delete all except y latest versions of a package hosted in a different repo than the workflow + To delete the oldest version of a package that is hosted in the same repo as the workflow the __package-name__ input is required. -To delete oldest x number of versions while keeping minimum y latest versions of a package hosted in a different repo than the workflow the __package-name__, __min-versions-to-keep__, __owner__, __repo__, and __token__ inputs are required. + __Example__ -The [token][token] needs the delete packages and read packages scope. It is recommended [to store the token as a secret][secret]. In this example the [token][token] was stored as a secret named __GITHUB_PAT__. + ```yaml + - uses: actions/delete-package-versions@v1 + with: + package-name: 'test-package' + ``` -__Example__ + To delete the oldest version of a package that is hosted in a different repo than the workflow the __owner__, __repo__, __package-name__, __token__ inputs are required. -Delete all excpet latest 2 versions of a package hosted in a different repo than the workflow + The [token][token] needs the delete packages and read packages scope. It is recommended [to store the token as a secret][secret]. In this example the [token][token] was stored as a secret named __GITHUB_PAT__. -```yaml -- uses: actions/delete-package-versions@v1 - with: - owner: 'github' - repo: 'packages' - package-name: 'test-package' - min-versions-to-keep: 2 - token: ${{ secrets.GITHUB_PAT }} -``` + __Example__ -
+ ```yaml + - uses: actions/delete-package-versions@v1 + with: + owner: 'github' + repo: 'packages' + package-name: 'test-package' + token: ${{ secrets.PAT }} + ``` -### Delete oldest x number of versions while ignoring particular package versions in the same repo as the workflow +
-To delete oldest x number of versions while ignoring all the major package versions in the same repo as the workflow the __package-name__, __num-oldest-versions-to-delete__ and __ignore-versions__ inputs are required. + ### Delete a specific version of a package -There is a possibility if the oldest x number of versions contain ignored package versions, actual package versions to get deleted will be less than x. + To delete a specific version of a package that is hosted in the same repo as the workflow the __package-version-ids__ input is required. -__Example__ + Package version ids can be retrieved via the [GitHub GraphQL API][api] -Delete 3 oldest versions excluding major versions as per semver is the same repo as the workflow + __Example__ -```yaml -- uses: actions/delete-package-versions@v1 - with: - package-name: 'test-packae' - num-old-versions-to-delete: 3 - ignore-versions: '^(0|[1-9]\\d*)\\.0\\.0$' -``` + ```yaml + - uses: actions/delete-package-versions@v1 + with: + package-version-ids: 'MDE0OlBhY2thZ2VWZXJzaW9uOTcyMDY3' + ``` -
+ To delete a specific version of a package that is hosted in a different repo than the workflow the __package-version-ids__ and __token__ inputs are required. -### Delete all except y latest versions while ignoring particular package versions in the same repo as the workflow + The [token][token] needs the delete packages and read packages scope. It is recommended [to store the token as a secret][secret]. In this example the [token][token] was stored as a secret named __GITHUB_PAT__. -To delete all except y latest versions while ignoring all the major package versions in the same repo as the workflow the __package-name__, __min-versions-to-keep__ and __ignore-versions__ inputs are required. + Package version ids can be retrieved via the [GitHub GraphQL API][api] -__Example__ + __Example__ -Delete all except latest 3 package versions excluding major versions as per semver is the same repo as the workflow + ```yaml + - uses: actions/delete-package-versions@v1 + with: + package-version-ids: 'MDE0OlBhY2thZ2VWZXJzaW9uOTcyMDY3' + token: ${{ secrets.PAT }} + ``` -```yaml -- uses: actions/delete-package-versions@v1 - with: - package-name: 'test-packae' - min-versions-to-keep: 3 - ignore-versions: '^(0|[1-9]\\d*)\\.0\\.0$' -``` +
-### Delete only pre-release package versions except y no of pre-release package versions in the same repo as the workflow + ### Delete multiple specific versions of a package -To delete all pre release package versions except y no of pre-release package versions in the same repo as the workflow the __package-name__, __min-versions-to-keep__ and __delete-only-pre-release-versions__ inputs are required. + To delete multiple specifc versions of a package that is hosted in the same repo as the workflow the __package-version-ids__ input is required. -__Example__ + The __package-version-ids__ input should be a comma separated string of package version ids. Package version ids can be retrieved via the [GitHub GraphQL API][api]. -Delete all pre-release package versions except latest 10 in the same repo as the workflow + __Example__ -```yaml -- uses: actions/delete-package-versions@v1 - with: - package-name: 'test-package' - min-versions-to-keep: 10 - delete-only-pre-release-versions: "true" -``` + ```yaml + - uses: actions/delete-package-versions@v1 + with: + package-version-ids: 'MDE0OlBhY2thZ2VWZXJzaW9uOTcyMDY3, MDE0OlBhY2thZ2VWZXJzaW9uOTcyMzQ5, MDE0OlBhY2thZ2VWZXJzaW9uOTcyMzUw' + ``` + + To delete multiple specifc versions of a package that is hosted in a repo other than the workflow the __package-version-ids__, __token__ inputs are required. + + The __package-version-ids__ input should be a comma separated string of package version ids. Package version ids can be retrieved via the [GitHub GraphQL API][api]. + + The [token][token] needs the delete packages and read packages scope. It is recommended [to store the token as a secret][secret]. In this example the [token][token] was stored as a secret named __GITHUB_PAT__. + + __Example__ + + ```yaml + - uses: actions/delete-package-versions@v1 + with: + package-version-ids: 'MDE0OlBhY2thZ2VWZXJzaW9uOTcyMDY3, MDE0OlBhY2thZ2VWZXJzaW9uOTcyMzQ5, MDE0OlBhY2thZ2VWZXJzaW9uOTcyMzUw' + token: ${{ secrets.PAT }} + ``` # License