2020 required : false
2121 default : ' false'
2222
23- image :
24- description : ' set IMAGE'
25- required : false
26-
2723 uid :
2824 description : ' set IMAGE_UID'
2925 required : false
4036 description : ' suffix for semver tags'
4137 required : false
4238
39+ dockerfile :
40+ description : ' dockerfile to build from'
41+ required : false
42+ default : ' arch.dockerfile'
43+
44+ tag :
45+ description : ' single tag'
46+ required : false
47+
48+ version :
49+ description : ' single version'
50+ required : false
51+
4352jobs :
4453 docker :
4554 runs-on : ubuntu-22.04
97106
98107 const docker = {
99108 image:{
100- name:( opt.input?.image || opt. dot.image) ,
109+ name:opt.dot.image,
101110 arch:(opt.dot.arch || 'linux/amd64,linux/arm64'),
102111 prefix:((opt.input?.semverprefix) ? `${opt.input?.semverprefix}-` : ''),
103112 suffix:((opt.input?.semversuffix) ? `-${opt.input?.semversuffix}` : ''),
@@ -107,7 +116,7 @@ jobs:
107116 app:{
108117 image:opt.dot.image,
109118 name:opt.dot.name,
110- version:opt.dot.semver.version,
119+ version:( opt.input?.version || opt. dot.semver.version) ,
111120 root:opt.dot.root,
112121 UID:(opt.input?.uid || 1000),
113122 GID:(opt.input?.gid || 1000),
@@ -124,15 +133,22 @@ jobs:
124133 docker.app.suffix = docker.image.suffix;
125134
126135 // setup tags
127- const semver = opt.dot.semver.version.split('.');
128- docker.image.tags.push(`${context.sha.substring(0,7)}`);
129- if(Array.isArray(semver)){
130- if(semver.length >= 1) docker.image.tags.push(`${semver[0]}`);
131- if(semver.length >= 2) docker.image.tags.push(`${semver[0]}.${semver[1]}`);
132- if(semver.length >= 3) docker.image.tags.push(`${semver[0]}.${semver[1]}.${semver[2]}`);
136+ if(opt.input?.dockerfile !== 'arch.dockerfile' && opt.input?.tag){
137+ docker.image.tags.push(`${context.sha.substring(0,7)}`);
138+ docker.image.tags.push(opt.input.tag);
139+ docker.image.tags.push(`${opt.input.tag}-${docker.app.version}`);
140+ docker.cache.name = `${docker.image.name}:buildcache-${opt.input.tag}`;
141+ }else{
142+ const semver = opt.dot.semver.version.split('.');
143+ docker.image.tags.push(`${context.sha.substring(0,7)}`);
144+ if(Array.isArray(semver)){
145+ if(semver.length >= 1) docker.image.tags.push(`${semver[0]}`);
146+ if(semver.length >= 2) docker.image.tags.push(`${semver[0]}.${semver[1]}`);
147+ if(semver.length >= 3) docker.image.tags.push(`${semver[0]}.${semver[1]}.${semver[2]}`);
148+ }
149+ if(opt.dot.semver?.stable && new RegExp(opt.dot.semver.stable, 'ig').test(docker.image.tags.join(','))) docker.image.tags.push('stable');
150+ if(opt.dot.semver?.latest && new RegExp(opt.dot.semver.latest, 'ig').test(docker.image.tags.join(','))) docker.image.tags.push('latest');
133151 }
134- if(opt.dot.semver?.stable && new RegExp(opt.dot.semver.stable, 'ig').test(docker.image.tags.join(','))) docker.image.tags.push('stable');
135- if(opt.dot.semver?.latest && new RegExp(opt.dot.semver.latest, 'ig').test(docker.image.tags.join(','))) docker.image.tags.push('latest');
136152
137153 for(let i=0; i<docker.image.tags.length; i++){
138154 docker.image.tags[i] = `${docker.image.name}:${docker.image.prefix}${docker.image.tags[i]}${docker.image.suffix}`;
@@ -154,6 +170,7 @@ jobs:
154170 core.exportVariable('DOCKER_IMAGE_TAGS', docker.image.tags.join(','));
155171 core.exportVariable('DOCKER_IMAGE_DESCRIPTION', docker.image.description);
156172 core.exportVariable('DOCKER_IMAGE_ARGUMENTS', arguments.join("\r\n"));
173+ core.exportVariable('DOCKER_IMAGE_DOCKERFILE', opt.input?.dockerfile || 'arch.dockerfile');
157174
158175 core.exportVariable('WORKFLOW_CREATE_RELEASE', (opt.input?.release || true));
159176 core.exportVariable('WORKFLOW_CREATE_README', (opt.input?.readme || true));
@@ -182,7 +199,7 @@ jobs:
182199 uses : docker/build-push-action@67a2d409c0a876cbe6b11854e3e25193efe4e62d
183200 with :
184201 context : .
185- file : arch.dockerfile
202+ file : ${{ env.DOCKER_IMAGE_DOCKERFILE }}
186203 push : true
187204 platforms : ${{ env.DOCKER_IMAGE_ARCH }}
188205 cache-from : type=registry,ref=${{ env.DOCKER_CACHE_NAME }}
@@ -218,7 +235,7 @@ jobs:
218235 uses : docker/build-push-action@67a2d409c0a876cbe6b11854e3e25193efe4e62d
219236 with :
220237 context : .
221- file : arch.dockerfile
238+ file : ${{ env.DOCKER_IMAGE_DOCKERFILE }}
222239 push : true
223240 sbom : true
224241 provenance : mode=max
0 commit comments