Merge pull request #358 from crazy-max/empty-images

feat: allow images input to be empty to output bare tags
This commit is contained in:
CrazyMax authored and GitHub committed 2023-11-30 02:04:19 -08:00
commit f19c3691d5
8 files changed
+153 -12

No files matched your search

+20
View File
@@ -427,3 +427,23 @@ jobs:
${{ steps.docker_meta.outputs.bake-file-annotations }}
targets: |
release
no-images:
runs-on: ubuntu-latest
steps:
-
name: Checkout
uses: actions/checkout@v4
-
name: Docker meta
uses: ./
with:
tags: |
type=schedule
type=ref,event=branch
type=ref,event=tag
type=ref,event=pr
type=sha
-
name: Print envs
run: env|sort
+2
View File
@@ -383,6 +383,8 @@ images: |
* `name=<string>` image base name
* `enable=<true|false>` enable this entry (default `true`)
If `images` is empty, tags will be generated without base name.
## `flavor` input
`flavor` defines a global behavior for [`tags`](#tags-input):
+110
View File
@@ -733,6 +733,50 @@ describe('push', () => {
"org.opencontainers.image.url=https://github.com/octocat/Hello-World",
"org.opencontainers.image.version=sha-860c1904a1ce19322e91ac35af1ab07466440c37"
]
],
[
'push21',
'event_push_master.env',
{
images: [] as string[],
tags: [
`type=raw,value=mytag-{{branch}}`,
`type=raw,value=mytag-{{date 'YYYYMMDD'}}`,
`type=raw,value=mytag-{{date 'YYYYMMDD-HHmmss' tz='Asia/Tokyo'}}`,
`type=raw,value=mytag-tag-{{tag}}`,
`type=raw,value=mytag-baseref-{{base_ref}}`,
`type=raw,value=mytag-defbranch,enable={{is_default_branch}}`
],
} as Inputs,
{
main: 'mytag-master',
partial: [
'mytag-20200110',
'mytag-20200110-093000',
'mytag-tag-',
'mytag-baseref-',
'mytag-defbranch'
],
latest: false
} as Version,
[
'mytag-master',
'mytag-20200110',
'mytag-20200110-093000',
'mytag-tag-',
'mytag-baseref-',
'mytag-defbranch'
],
[
"org.opencontainers.image.created=2020-01-10T00:30:00.000Z",
"org.opencontainers.image.description=This your first repo!",
"org.opencontainers.image.licenses=MIT",
"org.opencontainers.image.revision=266574110acf203503badf966df2ea24b5d732d7",
"org.opencontainers.image.source=https://github.com/octocat/Hello-World",
"org.opencontainers.image.title=Hello-World",
"org.opencontainers.image.url=https://github.com/octocat/Hello-World",
"org.opencontainers.image.version=mytag-master"
]
]
])('given %p with %p event', tagsLabelsTest);
});
@@ -1780,6 +1824,43 @@ describe('tag', () => {
"org.opencontainers.image.version=v1.2.3rc2"
]
],
[
'tag33',
'event_tag_v1.1.1.env',
{
images: [] as string[],
tags: [
`type=pep440,pattern={{version}}`,
`type=pep440,pattern={{major}}.{{minor}}.{{patch}}`,
`type=pep440,pattern={{major}}.{{minor}}`,
`type=pep440,pattern={{major}}`
]
} as Inputs,
{
main: '1.1.1',
partial: [
"1.1",
"1"
],
latest: true
} as Version,
[
'1.1.1',
'1.1',
'1',
'latest'
],
[
"org.opencontainers.image.created=2020-01-10T00:30:00.000Z",
"org.opencontainers.image.description=This your first repo!",
"org.opencontainers.image.licenses=MIT",
"org.opencontainers.image.revision=860c1904a1ce19322e91ac35af1ab07466440c37",
"org.opencontainers.image.source=https://github.com/octocat/Hello-World",
"org.opencontainers.image.title=Hello-World",
"org.opencontainers.image.url=https://github.com/octocat/Hello-World",
"org.opencontainers.image.version=1.1.1"
]
]
])('given %p with %p event', tagsLabelsTest);
});
@@ -2066,6 +2147,35 @@ describe('latest', () => {
"org.opencontainers.image.version=v1.1.1"
]
],
[
'latest10',
'event_tag_v2.0.8-beta.67.env',
{
images: [] as string[],
tags: [
`type=match,"pattern=\\d.\\d.\\d"`
]
} as Inputs,
{
main: '2.0.8',
partial: [],
latest: true
} as Version,
[
'2.0.8',
'latest',
],
[
"org.opencontainers.image.created=2020-01-10T00:30:00.000Z",
"org.opencontainers.image.description=This your first repo!",
"org.opencontainers.image.licenses=MIT",
"org.opencontainers.image.revision=860c1904a1ce19322e91ac35af1ab07466440c37",
"org.opencontainers.image.source=https://github.com/octocat/Hello-World",
"org.opencontainers.image.title=Hello-World",
"org.opencontainers.image.url=https://github.com/octocat/Hello-World",
"org.opencontainers.image.version=2.0.8"
]
]
])('given %p with %p event', tagsLabelsTest);
});
+1 -1
View File
@@ -13,7 +13,7 @@ inputs:
required: true
images:
description: 'List of Docker images to use as base name for tags'
required: true
required: false
tags:
description: 'List of tags as key-value pair attributes'
required: false
Generated Vendored
+1 -1
View File
@@ -86,5 +86,5 @@ const a=o(57147);const i=o(22037);const p=o(71017);const c=o(6113);const d={fs:a
* XRegExp 4.4.1
* <xregexp.com>
* Steven Levithan (c) 2007-present MIT License
*/var y="xregexp";var C={astral:false,namespacing:false};var B={exec:RegExp.prototype.exec,test:RegExp.prototype.test,match:String.prototype.match,replace:String.prototype.replace,split:String.prototype.split};var v={};var R={};var I={};var N=[];var W="default";var w="class";var S={default:/\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9]\d*|x[\dA-Fa-f]{2}|u(?:[\dA-Fa-f]{4}|{[\dA-Fa-f]+})|c[A-Za-z]|[\s\S])|\(\?(?:[:=!]|<[=!])|[?*+]\?|{\d+(?:,\d*)?}\??|[\s\S]/,class:/\\(?:[0-3][0-7]{0,2}|[4-7][0-7]?|x[\dA-Fa-f]{2}|u(?:[\dA-Fa-f]{4}|{[\dA-Fa-f]+})|c[A-Za-z]|[\s\S])|[\s\S]/};var Q=/\$(?:{([\w$]+)}|<([\w$]+)>|(\d\d?|[\s\S]))/g;var x=B.exec.call(/()??/,"")[1]===undefined;var L=(0,q["default"])(/x/)!==undefined;var T={},_=T.toString;function hasNativeFlag(t){var r=true;try{new RegExp("",t);if(t==="y"){var o=function(){return"gy"}();var a=".a".replace(new RegExp("a",o),".")==="..";if(a){r=false}}}catch(t){r=false}return r}var D=hasNativeFlag("u");var k=hasNativeFlag("y");var P={g:true,i:true,m:true,u:D,y:k};function augment(t,r,o,a,i){var p;t[y]={captureNames:r};if(i){return t}if(t.__proto__){t.__proto__=XRegExp.prototype}else{for(var c in XRegExp.prototype){t[c]=XRegExp.prototype[c]}}t[y].source=o;t[y].flags=a?(0,E["default"])(p=a.split("")).call(p).join(""):a;return t}function clipDuplicates(t){return B.replace.call(t,/([\s\S])(?=[\s\S]*\1)/g,"")}function copyRegex(t,r){var o;if(!XRegExp.isRegExp(t)){throw new TypeError("Type RegExp expected")}var a=t[y]||{};var i=getNativeFlags(t);var p="";var c="";var d=null;var A=null;r=r||{};if(r.removeG){c+="g"}if(r.removeY){c+="y"}if(c){i=B.replace.call(i,new RegExp("[".concat(c,"]+"),"g"),"")}if(r.addG){p+="g"}if(r.addY){p+="y"}if(p){i=clipDuplicates(i+p)}if(!r.isInternalOnly){if(a.source!==undefined){d=a.source}if((0,q["default"])(a)!=null){A=p?clipDuplicates((0,q["default"])(a)+p):(0,q["default"])(a)}}t=augment(new RegExp(r.source||t.source,i),hasNamedCapture(t)?(0,g["default"])(o=a.captureNames).call(o,0):null,d,A,r.isInternalOnly);return t}function dec(t){return(0,h["default"])(t,16)}function getContextualTokenSeparator(t,r,o){if(t.input[t.index-1]==="("||t.input[t.index+t[0].length]===")"||t.input[t.index-1]==="|"||t.input[t.index+t[0].length]==="|"||t.index<1||t.index+t[0].length>=t.input.length||B.test.call(/^\(\?[:=!]/,t.input.substr(t.index-3,3))||isQuantifierNext(t.input,t.index+t[0].length,o)){return""}return"(?:)"}function getNativeFlags(t){return L?(0,q["default"])(t):B.exec.call(/\/([a-z]*)$/i,RegExp.prototype.toString.call(t))[1]}function hasNamedCapture(t){return!!(t[y]&&t[y].captureNames)}function hex(t){return(0,h["default"])(t,10).toString(16)}function isQuantifierNext(t,r,o){var a="\\(\\?#[^)]*\\)";var i="#[^#\\n]*";var p="[?*+]|{\\d+(?:,\\d*)?}";return B.test.call((0,O["default"])(o).call(o,"x")?/^(?:\s|#[^#\n]*|\(\?#[^)]*\))*(?:[?*+]|{\d+(?:,\d*)?})/:/^(?:\(\?#[^)]*\))*(?:[?*+]|{\d+(?:,\d*)?})/,(0,g["default"])(t).call(t,r))}function isType(t,r){return _.call(t)==="[object ".concat(r,"]")}function pad4(t){while(t.length<4){t="0".concat(t)}return t}function prepareFlags(t,r){if(clipDuplicates(r)!==r){throw new SyntaxError("Invalid duplicate regex flag ".concat(r))}t=B.replace.call(t,/^\(\?([\w$]+)\)/,(function(t,o){if(B.test.call(/[gy]/,o)){throw new SyntaxError("Cannot use flag g or y in mode modifier ".concat(t))}r=clipDuplicates(r+o);return""}));var o=_createForOfIteratorHelper(r),a;try{for(o.s();!(a=o.n()).done;){var i=a.value;if(!P[i]){throw new SyntaxError("Unknown regex flag ".concat(i))}}}catch(t){o.e(t)}finally{o.f()}return{pattern:t,flags:r}}function prepareOptions(t){var r={};if(isType(t,"String")){(0,z["default"])(XRegExp).call(XRegExp,t,/[^\s,]+/,(function(t){r[t]=true}));return r}return t}function registerFlag(t){if(!/^[\w$]$/.test(t)){throw new Error("Flag must be a single character A-Za-z0-9_$")}P[t]=true}function runTokens(t,r,o,a,i){var p=N.length;var c=t[o];var d=null;var A;var l;while(p--){l=N[p];if(l.leadChar&&l.leadChar!==c||l.scope!==a&&l.scope!=="all"||l.flag&&!(0,O["default"])(r).call(r,l.flag)){continue}A=XRegExp.exec(t,l.regex,o,"sticky");if(A){d={matchLength:A[0].length,output:l.handler.call(i,A,a,r),reparse:l.reparse};break}}return d}function setAstral(t){C.astral=t}function setNamespacing(t){C.namespacing=t}function toObject(t){if(t==null){throw new TypeError("Cannot convert null or undefined to object")}return t}function XRegExp(t,r){if(XRegExp.isRegExp(t)){if(r!==undefined){throw new TypeError("Cannot supply flags when copying a RegExp")}return copyRegex(t)}t=t===undefined?"":String(t);r=r===undefined?"":String(r);if(XRegExp.isInstalled("astral")&&!(0,O["default"])(r).call(r,"A")){r+="A"}if(!I[t]){I[t]={}}if(!I[t][r]){var o={hasNamedCapture:false,captureNames:[]};var a=W;var i="";var p=0;var c;var d=prepareFlags(t,r);var A=d.pattern;var l=(0,q["default"])(d);while(p<A.length){do{c=runTokens(A,l,p,a,o);if(c&&c.reparse){A=(0,g["default"])(A).call(A,0,p)+c.output+(0,g["default"])(A).call(A,p+c.matchLength)}}while(c&&c.reparsLine truncated
*/var y="xregexp";var C={astral:false,namespacing:false};var B={exec:RegExp.prototype.exec,test:RegExp.prototype.test,match:String.prototype.match,replace:String.prototype.replace,split:String.prototype.split};var v={};var R={};var I={};var N=[];var W="default";var w="class";var S={default:/\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9]\d*|x[\dA-Fa-f]{2}|u(?:[\dA-Fa-f]{4}|{[\dA-Fa-f]+})|c[A-Za-z]|[\s\S])|\(\?(?:[:=!]|<[=!])|[?*+]\?|{\d+(?:,\d*)?}\??|[\s\S]/,class:/\\(?:[0-3][0-7]{0,2}|[4-7][0-7]?|x[\dA-Fa-f]{2}|u(?:[\dA-Fa-f]{4}|{[\dA-Fa-f]+})|c[A-Za-z]|[\s\S])|[\s\S]/};var Q=/\$(?:{([\w$]+)}|<([\w$]+)>|(\d\d?|[\s\S]))/g;var x=B.exec.call(/()??/,"")[1]===undefined;var L=(0,q["default"])(/x/)!==undefined;var T={},_=T.toString;function hasNativeFlag(t){var r=true;try{new RegExp("",t);if(t==="y"){var o=function(){return"gy"}();var a=".a".replace(new RegExp("a",o),".")==="..";if(a){r=false}}}catch(t){r=false}return r}var D=hasNativeFlag("u");var k=hasNativeFlag("y");var P={g:true,i:true,m:true,u:D,y:k};function augment(t,r,o,a,i){var p;t[y]={captureNames:r};if(i){return t}if(t.__proto__){t.__proto__=XRegExp.prototype}else{for(var c in XRegExp.prototype){t[c]=XRegExp.prototype[c]}}t[y].source=o;t[y].flags=a?(0,E["default"])(p=a.split("")).call(p).join(""):a;return t}function clipDuplicates(t){return B.replace.call(t,/([\s\S])(?=[\s\S]*\1)/g,"")}function copyRegex(t,r){var o;if(!XRegExp.isRegExp(t)){throw new TypeError("Type RegExp expected")}var a=t[y]||{};var i=getNativeFlags(t);var p="";var c="";var d=null;var A=null;r=r||{};if(r.removeG){c+="g"}if(r.removeY){c+="y"}if(c){i=B.replace.call(i,new RegExp("[".concat(c,"]+"),"g"),"")}if(r.addG){p+="g"}if(r.addY){p+="y"}if(p){i=clipDuplicates(i+p)}if(!r.isInternalOnly){if(a.source!==undefined){d=a.source}if((0,q["default"])(a)!=null){A=p?clipDuplicates((0,q["default"])(a)+p):(0,q["default"])(a)}}t=augment(new RegExp(r.source||t.source,i),hasNamedCapture(t)?(0,g["default"])(o=a.captureNames).call(o,0):null,d,A,r.isInternalOnly);return t}function dec(t){return(0,h["default"])(t,16)}function getContextualTokenSeparator(t,r,o){if(t.input[t.index-1]==="("||t.input[t.index+t[0].length]===")"||t.input[t.index-1]==="|"||t.input[t.index+t[0].length]==="|"||t.index<1||t.index+t[0].length>=t.input.length||B.test.call(/^\(\?[:=!]/,t.input.substr(t.index-3,3))||isQuantifierNext(t.input,t.index+t[0].length,o)){return""}return"(?:)"}function getNativeFlags(t){return L?(0,q["default"])(t):B.exec.call(/\/([a-z]*)$/i,RegExp.prototype.toString.call(t))[1]}function hasNamedCapture(t){return!!(t[y]&&t[y].captureNames)}function hex(t){return(0,h["default"])(t,10).toString(16)}function isQuantifierNext(t,r,o){var a="\\(\\?#[^)]*\\)";var i="#[^#\\n]*";var p="[?*+]|{\\d+(?:,\\d*)?}";return B.test.call((0,O["default"])(o).call(o,"x")?/^(?:\s|#[^#\n]*|\(\?#[^)]*\))*(?:[?*+]|{\d+(?:,\d*)?})/:/^(?:\(\?#[^)]*\))*(?:[?*+]|{\d+(?:,\d*)?})/,(0,g["default"])(t).call(t,r))}function isType(t,r){return _.call(t)==="[object ".concat(r,"]")}function pad4(t){while(t.length<4){t="0".concat(t)}return t}function prepareFlags(t,r){if(clipDuplicates(r)!==r){throw new SyntaxError("Invalid duplicate regex flag ".concat(r))}t=B.replace.call(t,/^\(\?([\w$]+)\)/,(function(t,o){if(B.test.call(/[gy]/,o)){throw new SyntaxError("Cannot use flag g or y in mode modifier ".concat(t))}r=clipDuplicates(r+o);return""}));var o=_createForOfIteratorHelper(r),a;try{for(o.s();!(a=o.n()).done;){var i=a.value;if(!P[i]){throw new SyntaxError("Unknown regex flag ".concat(i))}}}catch(t){o.e(t)}finally{o.f()}return{pattern:t,flags:r}}function prepareOptions(t){var r={};if(isType(t,"String")){(0,z["default"])(XRegExp).call(XRegExp,t,/[^\s,]+/,(function(t){r[t]=true}));return r}return t}function registerFlag(t){if(!/^[\w$]$/.test(t)){throw new Error("Flag must be a single character A-Za-z0-9_$")}P[t]=true}function runTokens(t,r,o,a,i){var p=N.length;var c=t[o];var d=null;var A;var l;while(p--){l=N[p];if(l.leadChar&&l.leadChar!==c||l.scope!==a&&l.scope!=="all"||l.flag&&!(0,O["default"])(r).call(r,l.flag)){continue}A=XRegExp.exec(t,l.regex,o,"sticky");if(A){d={matchLength:A[0].length,output:l.handler.call(i,A,a,r),reparse:l.reparse};break}}return d}function setAstral(t){C.astral=t}function setNamespacing(t){C.namespacing=t}function toObject(t){if(t==null){throw new TypeError("Cannot convert null or undefined to object")}return t}function XRegExp(t,r){if(XRegExp.isRegExp(t)){if(r!==undefined){throw new TypeError("Cannot supply flags when copying a RegExp")}return copyRegex(t)}t=t===undefined?"":String(t);r=r===undefined?"":String(r);if(XRegExp.isInstalled("astral")&&!(0,O["default"])(r).call(r,"A")){r+="A"}if(!I[t]){I[t]={}}if(!I[t][r]){var o={hasNamedCapture:false,captureNames:[]};var a=W;var i="";var p=0;var c;var d=prepareFlags(t,r);var A=d.pattern;var l=(0,q["default"])(d);while(p<A.length){do{c=runTokens(A,l,p,a,o);if(c&&c.reparse){A=(0,g["default"])(A).call(A,0,p)+c.output+(0,g["default"])(A).call(A,p+c.matchLength)}}while(c&&c.reparsLine truncated
//# sourceMappingURL=index.js.map
Generated Vendored
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"index.js","names":["__createBinding","this","Object","create","o","m","k","k2","undefined","desc","getOwnPropertyDescriptor","__esModule","writable","configurable","enumerable","get","defineProperty","__setModuleDefault","v","value","__importStar","mod","result","prototype","hasOwnProperty","call","__awaiter","thisArg","_arguments","P","generator","adopt","resolve","Promise","reject","fulfilled","step","next","e","rejected","done","then","apply","exports","saveCache","restoreCache","isFeatureAvailable","ReserveCacheError","ValidationError","core","__webpack_require__","path","utils","cacheHttpClient","tar_1","Error","constructor","message","super","name","setPrototypeOf","checkPaths","paths","length","checkKey","key","regex","test","process","env","primaryKey","restoreKeys","options","enableCrossOsArchive","keys","debug","JSON","stringify","compressionMethod","getCompressionMethod","archivePath","cacheEntry","getCacheEntry","archiveLocation","lookupOnly","info","cacheKey","join","createTempDirectory","getCacheFileName","downloadCache","isDebug","listTar","archiveFileSize","getArchiveFileSizeInBytes","Math","round","extractTar","error","typedError","warning","unlinkFile","_a","_b","_c","_d","_e","cacheId","cachePaths","resolvePaths","archiveFolder","createTar","fileSizeLimit","isGhes","reserveCacheResponse","reserveCache","cacheSize","statusCode","getCacheVersion","http_client_1","auth_1","crypto","fs","url_1","downloadUtils_1","options_1","requestUtils_1","versionSalt","getCacheApiUrl","resource","baseUrl","url","createAcceptHeader","type","apiVersion","getRequestOptions","requestOptions","headers","Accept","createHttpClient","token","bearerCredentialHandler","BearerCredentialHandler","HttpClient","components","push","platform","createHash","update","digest","httpClient","version","encodeURIComponent","response","retryTypedResponse","getJson","printCachesListForDiagnostics","isSuccessStatusCode","cacheResult","cacheDownloadUrl","setSecret","cacheListResult","totalCount","artifactCaches","cacheVersion","scope","creationTime","archiveUrl","URL","downloadOptions","getDownloadOptions","hostname","endsWith","useAzureSdk","downloadCacheStorageSDK","concurrentBlobDownloads","downloadCacheHttpClientConcurrent","downloadCacheHttpClient","reserveCacheRequest","postJson","getContentRange","start","end","uploadChunk","resourceUrl","openStream","additionalHeaders","uploadChunkResponse","retryHttpClientResponse","sendStream","uploadFile","fileSize","toString","fd","openSync","uploadOptions","getUploadOptions","concurrency","assertDefined","uploadConcurrency","maxChunkSize","uploadChunkSize","parallelUploads","Array","offset","all","map","chunkSize","min","createReadStream","autoClose","on","closeSync","commitCache","filesize","commitCacheRequest","size","commitCacheResponse","__asyncValues","Symbol","asyncIterator","TypeError","i","__values","iterator","verb","n","settle","d","getGnuTarPathOnWindows","exec","glob","io","semver","util","uuid_1","constants_1","IS_WINDOWS","tempDirectory","baseLocation","dest","v4","mkdirP","filePath","statSync","patterns","e_1","workspace","cwd","globber","implicitDescendants","_f","globGenerator","_g","file","relativeFile","relative","replace","RegExp","sep","e_1_1","return","promisify","unlink","getVersion","app","additionalArgs","versionOutput","ignoreReturnCode","silent","listeners","stdout","data","stderr","err","trim","clean","CompressionMethod","Gzip","ZstdWithoutLong","CacheFilename","Zstd","existsSync","GnuTarPathOnWindows","toLowerCase","includes","which","ghUrl","toUpperCase","ManifestFilename","TarFilename","SystemTarPathOnWindows","SocketTimeout","DefaultRetryDelay","DefaultRetryAttempts","ArchiveToolType","DownloadProgress","storage_blob_1","buffer","stream","abort_controller_1","pipeResponseToStream","output","pipeline","contentLength","segmentIndex","segmentSize","segmentOffset","receivedBytes","displayedComplete","startTime","Date","now","nextSegment","setReceivedBytes","getTransferredBytes","isDone","display","transferredBytes","percentage","toFixed","elapsedTime","downloadSpeed","onProgress","progress","loadedBytes","startDisplayTimer","delayInMs","displayCallback","timeoutHandle","setTimeout","stopDisplayTimer","clearTimeout","writeStream","createWriteStream","downloadResponse","socket","destroy","contentLengthHeader","expectedLength","parseInt","actualLength","archiveDescriptor","promises","open","socketTimeout","timeoutInMs","keepAlive","res","request","lengthHeader","Number","isNaN","downloads","blockSize","count","promiseGetter","downloadSegmentRetry","reverse","actives","bytesDownloaded","progressFn","activeDownloads","nextDownload","waitAndWrite","segment","race","values","write","pop","downloadConcurrency","dispose","close","retries","failures","timeout","promiseWithTimeout","downloadSegment","partRes","Range","readBodyBuffer","client","BlockBlobClient","retryOptions","tryTimeoutInMs","properties","getProperties","maxSegmentSize","constants"Line truncated
{"version":3,"file":"index.js","names":["__createBinding","this","Object","create","o","m","k","k2","undefined","desc","getOwnPropertyDescriptor","__esModule","writable","configurable","enumerable","get","defineProperty","__setModuleDefault","v","value","__importStar","mod","result","prototype","hasOwnProperty","call","__awaiter","thisArg","_arguments","P","generator","adopt","resolve","Promise","reject","fulfilled","step","next","e","rejected","done","then","apply","exports","saveCache","restoreCache","isFeatureAvailable","ReserveCacheError","ValidationError","core","__webpack_require__","path","utils","cacheHttpClient","tar_1","Error","constructor","message","super","name","setPrototypeOf","checkPaths","paths","length","checkKey","key","regex","test","process","env","primaryKey","restoreKeys","options","enableCrossOsArchive","keys","debug","JSON","stringify","compressionMethod","getCompressionMethod","archivePath","cacheEntry","getCacheEntry","archiveLocation","lookupOnly","info","cacheKey","join","createTempDirectory","getCacheFileName","downloadCache","isDebug","listTar","archiveFileSize","getArchiveFileSizeInBytes","Math","round","extractTar","error","typedError","warning","unlinkFile","_a","_b","_c","_d","_e","cacheId","cachePaths","resolvePaths","archiveFolder","createTar","fileSizeLimit","isGhes","reserveCacheResponse","reserveCache","cacheSize","statusCode","getCacheVersion","http_client_1","auth_1","crypto","fs","url_1","downloadUtils_1","options_1","requestUtils_1","versionSalt","getCacheApiUrl","resource","baseUrl","url","createAcceptHeader","type","apiVersion","getRequestOptions","requestOptions","headers","Accept","createHttpClient","token","bearerCredentialHandler","BearerCredentialHandler","HttpClient","components","push","platform","createHash","update","digest","httpClient","version","encodeURIComponent","response","retryTypedResponse","getJson","printCachesListForDiagnostics","isSuccessStatusCode","cacheResult","cacheDownloadUrl","setSecret","cacheListResult","totalCount","artifactCaches","cacheVersion","scope","creationTime","archiveUrl","URL","downloadOptions","getDownloadOptions","hostname","endsWith","useAzureSdk","downloadCacheStorageSDK","concurrentBlobDownloads","downloadCacheHttpClientConcurrent","downloadCacheHttpClient","reserveCacheRequest","postJson","getContentRange","start","end","uploadChunk","resourceUrl","openStream","additionalHeaders","uploadChunkResponse","retryHttpClientResponse","sendStream","uploadFile","fileSize","toString","fd","openSync","uploadOptions","getUploadOptions","concurrency","assertDefined","uploadConcurrency","maxChunkSize","uploadChunkSize","parallelUploads","Array","offset","all","map","chunkSize","min","createReadStream","autoClose","on","closeSync","commitCache","filesize","commitCacheRequest","size","commitCacheResponse","__asyncValues","Symbol","asyncIterator","TypeError","i","__values","iterator","verb","n","settle","d","getGnuTarPathOnWindows","exec","glob","io","semver","util","uuid_1","constants_1","IS_WINDOWS","tempDirectory","baseLocation","dest","v4","mkdirP","filePath","statSync","patterns","e_1","workspace","cwd","globber","implicitDescendants","_f","globGenerator","_g","file","relativeFile","relative","replace","RegExp","sep","e_1_1","return","promisify","unlink","getVersion","app","additionalArgs","versionOutput","ignoreReturnCode","silent","listeners","stdout","data","stderr","err","trim","clean","CompressionMethod","Gzip","ZstdWithoutLong","CacheFilename","Zstd","existsSync","GnuTarPathOnWindows","toLowerCase","includes","which","ghUrl","toUpperCase","ManifestFilename","TarFilename","SystemTarPathOnWindows","SocketTimeout","DefaultRetryDelay","DefaultRetryAttempts","ArchiveToolType","DownloadProgress","storage_blob_1","buffer","stream","abort_controller_1","pipeResponseToStream","output","pipeline","contentLength","segmentIndex","segmentSize","segmentOffset","receivedBytes","displayedComplete","startTime","Date","now","nextSegment","setReceivedBytes","getTransferredBytes","isDone","display","transferredBytes","percentage","toFixed","elapsedTime","downloadSpeed","onProgress","progress","loadedBytes","startDisplayTimer","delayInMs","displayCallback","timeoutHandle","setTimeout","stopDisplayTimer","clearTimeout","writeStream","createWriteStream","downloadResponse","socket","destroy","contentLengthHeader","expectedLength","parseInt","actualLength","archiveDescriptor","promises","open","socketTimeout","timeoutInMs","keepAlive","res","request","lengthHeader","Number","isNaN","downloads","blockSize","count","promiseGetter","downloadSegmentRetry","reverse","actives","bytesDownloaded","progressFn","activeDownloads","nextDownload","waitAndWrite","segment","race","values","write","pop","downloadConcurrency","dispose","close","retries","failures","timeout","promiseWithTimeout","downloadSegment","partRes","Range","readBodyBuffer","client","BlockBlobClient","retryOptions","tryTimeoutInMs","properties","getProperties","maxSegmentSize","constants"Line truncated
-4
View File
@@ -15,10 +15,6 @@ actionsToolkit.run(
// main
async () => {
const inputs: Inputs = getInputs();
if (inputs.images.length == 0) {
throw new Error(`images input required`);
}
const toolkit = new Toolkit({githubToken: inputs.githubToken});
const context = await getContext(inputs.context);
const repo = await toolkit.github.repoData();
+18 -5
View File
@@ -440,16 +440,29 @@ export class Meta {
if (!this.version.main) {
return [];
}
const tags: Array<string> = [];
for (const imageName of this.getImageNames()) {
tags.push(`${imageName}:${this.version.main}`);
const generateTags = (imageName: string, version: string): Array<string> => {
const tags: Array<string> = [];
const prefix = imageName !== '' ? `${imageName}:` : '';
tags.push(`${prefix}${version}`);
for (const partial of this.version.partial) {
tags.push(`${imageName}:${partial}`);
tags.push(`${prefix}${partial}`);
}
if (this.version.latest) {
const latestTag = `${this.flavor.prefixLatest ? this.flavor.prefix : ''}latest${this.flavor.suffixLatest ? this.flavor.suffix : ''}`;
tags.push(`${imageName}:${Meta.sanitizeTag(latestTag)}`);
tags.push(`${prefix}${Meta.sanitizeTag(latestTag)}`);
}
return tags;
};
const tags: Array<string> = [];
const images = this.getImageNames();
if (images.length > 0) {
for (const imageName of images) {
tags.push(...generateTags(imageName, this.version.main));
}
} else {
tags.push(...generateTags('', this.version.main));
}
return tags;
}