keep min package versions from deletion

This commit is contained in:
Namrata Jha
2021-11-08 07:25:16 +00:00
committed by GitHub
parent 0739f428e7
commit 18061036ba
10 changed files with 24178 additions and 21150 deletions

View File

@@ -30,4 +30,5 @@ jobs:
name: Smoke Test Delete Package Versions Action
with:
package-name: 'com.github.actions.test-package'
num-old-versions-to-delete: 0
num-old-versions-to-delete: 0
min-versions-to-keep: 0

View File

@@ -1,13 +1,13 @@
import {Input, InputParams} from '../src/input'
import {deleteVersions, getVersionIds} from '../src/delete'
describe.skip('index tests -- call graphql', () => {
describe('index tests -- call graphql', () => {
it('getVersionIds test -- get oldest version', done => {
const numVersions = 1
getVersionIds(getInput({numOldVersionsToDelete: numVersions})).subscribe(
ids => {
expect(ids.length).toBe(numVersions)
expect(ids.length).toBeLessThanOrEqual(numVersions)
done()
}
)
@@ -18,7 +18,7 @@ describe.skip('index tests -- call graphql', () => {
getVersionIds(getInput({numOldVersionsToDelete: numVersions})).subscribe(
ids => {
expect(ids.length).toBe(numVersions)
expect(ids.length).toBeLessThanOrEqual(numVersions)
done()
}
)
@@ -57,31 +57,39 @@ describe.skip('index tests -- call graphql', () => {
})
})
it('deleteVersions test -- delete oldest version', done => {
deleteVersions(getInput({numOldVersionsToDelete: 1})).subscribe(
isSuccess => {
expect(isSuccess).toBe(true)
done()
}
)
it.skip('deleteVersions test -- delete oldest version', done => {
deleteVersions(
getInput({numOldVersionsToDelete: 2, minVersionsToKeep: 1})
).subscribe(isSuccess => {
expect(isSuccess).toBe(true)
done()
})
})
it('deleteVersions test -- delete 3 oldest versions', done => {
deleteVersions(getInput({numOldVersionsToDelete: 3})).subscribe(
isSuccess => {
expect(isSuccess).toBe(true)
done()
}
)
it.skip('deleteVersions test -- delete 3 oldest versions', done => {
deleteVersions(
getInput({numOldVersionsToDelete: 3, minVersionsToKeep: 1})
).subscribe(isSuccess => {
expect(isSuccess).toBe(true)
done()
})
})
it('deleteVersions test -- keep 5 versions', done => {
deleteVersions(getInput({minVersionsToKeep: 5})).subscribe(isSuccess => {
expect(isSuccess).toBe(true)
done()
})
})
})
const defaultInput: InputParams = {
packageVersionIds: [],
owner: 'trent-j',
repo: 'actions-testing',
packageName: 'com.github.trent-j.actions-test',
owner: 'namratajha',
repo: 'only-pkg',
packageName: 'onlypkg.maven',
numOldVersionsToDelete: 1,
minVersionsToKeep: 1,
token: process.env.GITHUB_TOKEN as string
}

View File

@@ -7,7 +7,7 @@ import {
} from '../../src/version'
import {Observable} from 'rxjs'
describe.skip('get versions tests -- call graphql', () => {
describe('get versions tests -- call graphql', () => {
it('getOldestVersions -- succeeds', done => {
const numVersions = 1
@@ -49,9 +49,9 @@ interface Params {
}
const defaultParams = {
owner: 'trent-j',
repo: 'actions-testing',
packageName: 'com.github.trent-j.actions-test',
owner: 'namratajha',
repo: 'only-pkg',
packageName: 'onlypkg.maven',
numVersions: 3,
token: process.env.GITHUB_TOKEN as string
}

View File

@@ -34,6 +34,12 @@ inputs:
required: false
default: "1"
min-versions-to-keep:
description: >
Number of versions to keep starting with the latest version
required: false
default: "1"
token:
description: >
Token with the necessary scopes to delete package versions.

45237
dist/index.js vendored

File diff suppressed because one or more lines are too long

8
package-lock.json generated
View File

@@ -2735,10 +2735,10 @@
"tsutils": "^3.17.1"
}
},
"@zeit/ncc": {
"version": "0.20.5",
"resolved": "https://registry.npmjs.org/@zeit/ncc/-/ncc-0.20.5.tgz",
"integrity": "sha512-XU6uzwvv95DqxciQx+aOLhbyBx/13ky+RK1y88Age9Du3BlA4mMPCy13BGjayOrrumOzlq1XV3SD/BWiZENXlw==",
"@vercel/ncc": {
"version": "0.31.1",
"resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.31.1.tgz",
"integrity": "sha512-g0FAxwdViI6UzsiVz5HssIHqjcPa1EHL6h+2dcJD893SoCJaGdqqgUF09xnMW6goWnnhbLvgiKlgJWrJa+7qYA==",
"dev": true
},
"abab": {

View File

@@ -32,7 +32,7 @@
"@types/jest": "^24.0.23",
"@types/node": "^12.7.12",
"@typescript-eslint/parser": "^2.8.0",
"@zeit/ncc": "^0.20.5",
"@vercel/ncc": "^0.31.1",
"eslint": "^5.16.0",
"eslint-plugin-github": "^2.0.0",
"eslint-plugin-jest": "^22.21.0",

View File

@@ -15,7 +15,15 @@ export function getVersionIds(input: Input): Observable<string[]> {
input.packageName,
input.numOldVersionsToDelete,
input.token
).pipe(map(versionInfo => versionInfo.map(info => info.id)))
).pipe(
map(versionInfo => {
const numberVersionsToDelete =
versionInfo.length - input.minVersionsToKeep
return numberVersionsToDelete <= 0
? []
: versionInfo.slice(0, numberVersionsToDelete).map(info => info.id)
})
)
}
return throwError(

View File

@@ -4,6 +4,7 @@ export interface InputParams {
repo?: string
packageName?: string
numOldVersionsToDelete?: number
minVersionsToKeep?: number
token?: string
}
@@ -13,6 +14,7 @@ const defaultParams = {
repo: '',
packageName: '',
numOldVersionsToDelete: 0,
minVersionsToKeep: 0,
token: ''
}
@@ -22,6 +24,7 @@ export class Input {
repo: string
packageName: string
numOldVersionsToDelete: number
minVersionsToKeep: number
token: string
constructor(params?: InputParams) {
@@ -32,6 +35,7 @@ export class Input {
this.repo = validatedParams.repo
this.packageName = validatedParams.packageName
this.numOldVersionsToDelete = validatedParams.numOldVersionsToDelete
this.minVersionsToKeep = validatedParams.minVersionsToKeep
this.token = validatedParams.token
}
@@ -41,6 +45,7 @@ export class Input {
this.repo &&
this.packageName &&
this.numOldVersionsToDelete > 0 &&
this.minVersionsToKeep > 0 &&
this.token
)
}

View File

@@ -14,6 +14,7 @@ function getActionInput(): Input {
repo: getInput('repo') ? getInput('repo') : context.repo.repo,
packageName: getInput('package-name'),
numOldVersionsToDelete: Number(getInput('num-old-versions-to-delete')),
minVersionsToKeep: Number(getInput('min-versions-to-keep')),
token: getInput('token')
})
}