Compare commits
11 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2e70a0cac6 | ||
|
|
e600fe266c | ||
|
|
52d663521a | ||
|
|
dceb603792 | ||
|
|
77b8d647eb | ||
|
|
630b180101 | ||
|
|
2e536e4a37 | ||
|
|
40f2a14d95 | ||
|
|
9853314413 | ||
|
|
f2e65ab473 | ||
|
|
e130c40c84 |
12
.github/docker-releases.json
vendored
12
.github/docker-releases.json
vendored
@@ -1,8 +1,14 @@
|
|||||||
{
|
{
|
||||||
"latest": {
|
"latest": {
|
||||||
"id": 159031384,
|
"id": 162009909,
|
||||||
"tag_name": "v26.1.4",
|
"tag_name": "v27.0.1",
|
||||||
"html_url": "https://github.com/moby/moby/releases/tag/v26.1.4",
|
"html_url": "https://github.com/moby/moby/releases/tag/v27.0.1",
|
||||||
|
"assets": []
|
||||||
|
},
|
||||||
|
"v27.0.1": {
|
||||||
|
"id": 162009909,
|
||||||
|
"tag_name": "v27.0.1",
|
||||||
|
"html_url": "https://github.com/moby/moby/releases/tag/v27.0.1",
|
||||||
"assets": []
|
"assets": []
|
||||||
},
|
},
|
||||||
"v27.0.1-rc.1": {
|
"v27.0.1-rc.1": {
|
||||||
|
|||||||
2
.github/workflows/test.yml
vendored
2
.github/workflows/test.yml
vendored
@@ -16,6 +16,7 @@ on:
|
|||||||
env:
|
env:
|
||||||
NODE_VERSION: "20"
|
NODE_VERSION: "20"
|
||||||
BUILDX_VERSION: "v0.15.1"
|
BUILDX_VERSION: "v0.15.1"
|
||||||
|
BUILDKIT_IMAGE: "moby/buildkit:v0.14.1"
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
test:
|
test:
|
||||||
@@ -138,6 +139,7 @@ jobs:
|
|||||||
uses: docker/setup-buildx-action@v3
|
uses: docker/setup-buildx-action@v3
|
||||||
with:
|
with:
|
||||||
version: ${{ env.BUILDX_VERSION }}
|
version: ${{ env.BUILDX_VERSION }}
|
||||||
|
driver-opts: image=${{ env.BUILDKIT_IMAGE }}
|
||||||
use: false
|
use: false
|
||||||
-
|
-
|
||||||
name: Install
|
name: Install
|
||||||
|
|||||||
@@ -80,6 +80,16 @@ describe('resolveProvenance', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('resolveWarnings', () => {
|
||||||
|
it('matches', async () => {
|
||||||
|
const build = new Build();
|
||||||
|
fs.writeFileSync(build.getMetadataFilePath(), JSON.stringify(metadata));
|
||||||
|
const warnings = build.resolveWarnings();
|
||||||
|
expect(warnings).toBeDefined();
|
||||||
|
expect(warnings?.length).toEqual(3);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
describe('resolveDigest', () => {
|
describe('resolveDigest', () => {
|
||||||
it('matches', async () => {
|
it('matches', async () => {
|
||||||
const build = new Build();
|
const build = new Build();
|
||||||
|
|||||||
@@ -40,6 +40,189 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"buildx.build.ref": "default/default/n6ibcp9b2pw108rrz7ywdznvo",
|
"buildx.build.ref": "default/default/n6ibcp9b2pw108rrz7ywdznvo",
|
||||||
|
"buildx.build.warnings": [
|
||||||
|
{
|
||||||
|
"vertex": "sha256:7b477ac5dd3a4c4d2523f7f7f20406b626395de082f44fd5ff996323ec8257d0",
|
||||||
|
"level": 1,
|
||||||
|
"short": "Q29uc2lzdGVudEluc3RydWN0aW9uQ2FzaW5nOiBDb21tYW5kICdmck9NJyBzaG91bGQgYmUgY29uc2lzdGVudGx5IGNhc2VkIChsaW5lIDIp",
|
||||||
|
"detail": [
|
||||||
|
"SW5zdHJ1Y3Rpb25zIHNob3VsZCBiZSBpbiBjb25zaXN0ZW50IGNhc2luZyAoYWxsIGxvd2VyIG9yIGFsbCB1cHBlcik="
|
||||||
|
],
|
||||||
|
"url": "https://docs.docker.com/go/dockerfile/rule/consistent-instruction-casing/",
|
||||||
|
"sourceInfo": {
|
||||||
|
"filename": "Dockerfile",
|
||||||
|
"data": "IyBzeW50YXg9ZG9ja2VyL2RvY2tlcmZpbGUtdXBzdHJlYW06bWFzdGVyCmZyT00gYnVzeWJveCBhcyBiYXNlCmNPcHkgRG9ja2VyZmlsZSAuCgpmcm9tIHNjcmF0Y2gKQ09QeSAtLWZyb209YmFzZSBcCiAgL0RvY2tlcmZpbGUgXAogIC8K",
|
||||||
|
"definition": {
|
||||||
|
"def": [
|
||||||
|
"GsUBChJsb2NhbDovL2RvY2tlcmZpbGUSFAoMbG9jYWwuZGlmZmVyEgRub25lEkoKEWxvY2FsLmZvbGxvd3BhdGhzEjVbIkRvY2tlcmZpbGUiLCJEb2NrZXJmaWxlLmRvY2tlcmlnbm9yZSIsImRvY2tlcmZpbGUiXRIqCg1sb2NhbC5zZXNzaW9uEhkwN3A3MzJ6aGR4NXV1NnVsZDNzOGpteWo2EiEKE2xvY2FsLnNoYXJlZGtleWhpbnQSCmRvY2tlcmZpbGVaAA==",
|
||||||
|
"CkkKR3NoYTI1Njo3YjQ3N2FjNWRkM2E0YzRkMjUyM2Y3ZjdmMjA0MDZiNjI2Mzk1ZGUwODJmNDRmZDVmZjk5NjMyM2VjODI1N2Qw"
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"sha256:7b477ac5dd3a4c4d2523f7f7f20406b626395de082f44fd5ff996323ec8257d0": {
|
||||||
|
"description": {
|
||||||
|
"llb.customname": "[internal] load build definition from Dockerfile"
|
||||||
|
},
|
||||||
|
"caps": {
|
||||||
|
"source.local": true,
|
||||||
|
"source.local.followpaths": true,
|
||||||
|
"source.local.sessionid": true,
|
||||||
|
"source.local.sharedkeyhint": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sha256:a06279dbe062a3b181c9b918abfaf37ca8106f1f9745b9d42356b3195b205cd1": {
|
||||||
|
"caps": {
|
||||||
|
"constraints": true,
|
||||||
|
"meta.description": true,
|
||||||
|
"platform": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Source": {
|
||||||
|
"locations": {
|
||||||
|
"sha256:7b477ac5dd3a4c4d2523f7f7f20406b626395de082f44fd5ff996323ec8257d0": {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"language": "Dockerfile"
|
||||||
|
},
|
||||||
|
"range": [
|
||||||
|
{
|
||||||
|
"start": {
|
||||||
|
"line": 2
|
||||||
|
},
|
||||||
|
"end": {
|
||||||
|
"line": 2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"vertex": "sha256:7b477ac5dd3a4c4d2523f7f7f20406b626395de082f44fd5ff996323ec8257d0",
|
||||||
|
"level": 1,
|
||||||
|
"short": "Q29uc2lzdGVudEluc3RydWN0aW9uQ2FzaW5nOiBDb21tYW5kICdjT3B5JyBzaG91bGQgYmUgY29uc2lzdGVudGx5IGNhc2VkIChsaW5lIDMp",
|
||||||
|
"detail": [
|
||||||
|
"SW5zdHJ1Y3Rpb25zIHNob3VsZCBiZSBpbiBjb25zaXN0ZW50IGNhc2luZyAoYWxsIGxvd2VyIG9yIGFsbCB1cHBlcik="
|
||||||
|
],
|
||||||
|
"url": "https://docs.docker.com/go/dockerfile/rule/consistent-instruction-casing/",
|
||||||
|
"sourceInfo": {
|
||||||
|
"filename": "Dockerfile",
|
||||||
|
"data": "IyBzeW50YXg9ZG9ja2VyL2RvY2tlcmZpbGUtdXBzdHJlYW06bWFzdGVyCmZyT00gYnVzeWJveCBhcyBiYXNlCmNPcHkgRG9ja2VyZmlsZSAuCgpmcm9tIHNjcmF0Y2gKQ09QeSAtLWZyb209YmFzZSBcCiAgL0RvY2tlcmZpbGUgXAogIC8K",
|
||||||
|
"definition": {
|
||||||
|
"def": [
|
||||||
|
"GsUBChJsb2NhbDovL2RvY2tlcmZpbGUSFAoMbG9jYWwuZGlmZmVyEgRub25lEkoKEWxvY2FsLmZvbGxvd3BhdGhzEjVbIkRvY2tlcmZpbGUiLCJEb2NrZXJmaWxlLmRvY2tlcmlnbm9yZSIsImRvY2tlcmZpbGUiXRIqCg1sb2NhbC5zZXNzaW9uEhkwN3A3MzJ6aGR4NXV1NnVsZDNzOGpteWo2EiEKE2xvY2FsLnNoYXJlZGtleWhpbnQSCmRvY2tlcmZpbGVaAA==",
|
||||||
|
"CkkKR3NoYTI1Njo3YjQ3N2FjNWRkM2E0YzRkMjUyM2Y3ZjdmMjA0MDZiNjI2Mzk1ZGUwODJmNDRmZDVmZjk5NjMyM2VjODI1N2Qw"
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"sha256:7b477ac5dd3a4c4d2523f7f7f20406b626395de082f44fd5ff996323ec8257d0": {
|
||||||
|
"description": {
|
||||||
|
"llb.customname": "[internal] load build definition from Dockerfile"
|
||||||
|
},
|
||||||
|
"caps": {
|
||||||
|
"source.local": true,
|
||||||
|
"source.local.followpaths": true,
|
||||||
|
"source.local.sessionid": true,
|
||||||
|
"source.local.sharedkeyhint": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sha256:a06279dbe062a3b181c9b918abfaf37ca8106f1f9745b9d42356b3195b205cd1": {
|
||||||
|
"caps": {
|
||||||
|
"constraints": true,
|
||||||
|
"meta.description": true,
|
||||||
|
"platform": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Source": {
|
||||||
|
"locations": {
|
||||||
|
"sha256:7b477ac5dd3a4c4d2523f7f7f20406b626395de082f44fd5ff996323ec8257d0": {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"language": "Dockerfile"
|
||||||
|
},
|
||||||
|
"range": [
|
||||||
|
{
|
||||||
|
"start": {
|
||||||
|
"line": 3
|
||||||
|
},
|
||||||
|
"end": {
|
||||||
|
"line": 3
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"vertex": "sha256:7b477ac5dd3a4c4d2523f7f7f20406b626395de082f44fd5ff996323ec8257d0",
|
||||||
|
"level": 1,
|
||||||
|
"short": "Q29uc2lzdGVudEluc3RydWN0aW9uQ2FzaW5nOiBDb21tYW5kICdDT1B5JyBzaG91bGQgYmUgY29uc2lzdGVudGx5IGNhc2VkIChsaW5lIDYp",
|
||||||
|
"detail": [
|
||||||
|
"SW5zdHJ1Y3Rpb25zIHNob3VsZCBiZSBpbiBjb25zaXN0ZW50IGNhc2luZyAoYWxsIGxvd2VyIG9yIGFsbCB1cHBlcik="
|
||||||
|
],
|
||||||
|
"url": "https://docs.docker.com/go/dockerfile/rule/consistent-instruction-casing/",
|
||||||
|
"sourceInfo": {
|
||||||
|
"filename": "Dockerfile",
|
||||||
|
"data": "IyBzeW50YXg9ZG9ja2VyL2RvY2tlcmZpbGUtdXBzdHJlYW06bWFzdGVyCmZyT00gYnVzeWJveCBhcyBiYXNlCmNPcHkgRG9ja2VyZmlsZSAuCgpmcm9tIHNjcmF0Y2gKQ09QeSAtLWZyb209YmFzZSBcCiAgL0RvY2tlcmZpbGUgXAogIC8K",
|
||||||
|
"definition": {
|
||||||
|
"def": [
|
||||||
|
"GsUBChJsb2NhbDovL2RvY2tlcmZpbGUSFAoMbG9jYWwuZGlmZmVyEgRub25lEkoKEWxvY2FsLmZvbGxvd3BhdGhzEjVbIkRvY2tlcmZpbGUiLCJEb2NrZXJmaWxlLmRvY2tlcmlnbm9yZSIsImRvY2tlcmZpbGUiXRIqCg1sb2NhbC5zZXNzaW9uEhkwN3A3MzJ6aGR4NXV1NnVsZDNzOGpteWo2EiEKE2xvY2FsLnNoYXJlZGtleWhpbnQSCmRvY2tlcmZpbGVaAA==",
|
||||||
|
"CkkKR3NoYTI1Njo3YjQ3N2FjNWRkM2E0YzRkMjUyM2Y3ZjdmMjA0MDZiNjI2Mzk1ZGUwODJmNDRmZDVmZjk5NjMyM2VjODI1N2Qw"
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"sha256:7b477ac5dd3a4c4d2523f7f7f20406b626395de082f44fd5ff996323ec8257d0": {
|
||||||
|
"description": {
|
||||||
|
"llb.customname": "[internal] load build definition from Dockerfile"
|
||||||
|
},
|
||||||
|
"caps": {
|
||||||
|
"source.local": true,
|
||||||
|
"source.local.followpaths": true,
|
||||||
|
"source.local.sessionid": true,
|
||||||
|
"source.local.sharedkeyhint": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sha256:a06279dbe062a3b181c9b918abfaf37ca8106f1f9745b9d42356b3195b205cd1": {
|
||||||
|
"caps": {
|
||||||
|
"constraints": true,
|
||||||
|
"meta.description": true,
|
||||||
|
"platform": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Source": {
|
||||||
|
"locations": {
|
||||||
|
"sha256:7b477ac5dd3a4c4d2523f7f7f20406b626395de082f44fd5ff996323ec8257d0": {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"language": "Dockerfile"
|
||||||
|
},
|
||||||
|
"range": [
|
||||||
|
{
|
||||||
|
"start": {
|
||||||
|
"line": 6
|
||||||
|
},
|
||||||
|
"end": {
|
||||||
|
"line": 6
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"start": {
|
||||||
|
"line": 7
|
||||||
|
},
|
||||||
|
"end": {
|
||||||
|
"line": 7
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"start": {
|
||||||
|
"line": 8
|
||||||
|
},
|
||||||
|
"end": {
|
||||||
|
"line": 8
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
"containerimage.config.digest": "sha256:059b68a595b22564a1cbc167f369349fdc2ecc1f7bc092c2235cbf601a795fd",
|
"containerimage.config.digest": "sha256:059b68a595b22564a1cbc167f369349fdc2ecc1f7bc092c2235cbf601a795fd",
|
||||||
"containerimage.digest": "sha256:b09b9482c72371486bb2c1d2c2a2633ed1d0b8389e12c8d52b9e052725c0c83c"
|
"containerimage.digest": "sha256:b09b9482c72371486bb2c1d2c2a2633ed1d0b8389e12c8d52b9e052725c0c83c"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ import {GitHub} from '../github';
|
|||||||
import {Util} from '../util';
|
import {Util} from '../util';
|
||||||
|
|
||||||
import {BuildMetadata} from '../types/buildx/build';
|
import {BuildMetadata} from '../types/buildx/build';
|
||||||
|
import {VertexWarning} from '../types/buildkit/client';
|
||||||
import {ProvenancePredicate} from '../types/intoto/slsa_provenance/v0.2/provenance';
|
import {ProvenancePredicate} from '../types/intoto/slsa_provenance/v0.2/provenance';
|
||||||
|
|
||||||
export interface BuildOpts {
|
export interface BuildOpts {
|
||||||
@@ -96,6 +97,19 @@ export class Build {
|
|||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public resolveWarnings(metadata?: BuildMetadata): Array<VertexWarning> | undefined {
|
||||||
|
if (!metadata) {
|
||||||
|
metadata = this.resolveMetadata();
|
||||||
|
if (!metadata) {
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ('buildx.build.warnings' in metadata) {
|
||||||
|
return metadata['buildx.build.warnings'] as Array<VertexWarning>;
|
||||||
|
}
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
|
||||||
public resolveDigest(metadata?: BuildMetadata): string | undefined {
|
public resolveDigest(metadata?: BuildMetadata): string | undefined {
|
||||||
if (!metadata) {
|
if (!metadata) {
|
||||||
metadata = this.resolveMetadata();
|
metadata = this.resolveMetadata();
|
||||||
|
|||||||
@@ -240,12 +240,10 @@ export class GitHub {
|
|||||||
.addRaw(`For a detailed look at the build, download the following build record archive and import it into Docker Desktop's Builds view. `)
|
.addRaw(`For a detailed look at the build, download the following build record archive and import it into Docker Desktop's Builds view. `)
|
||||||
.addBreak()
|
.addBreak()
|
||||||
.addRaw(`Build records include details such as timing, dependencies, results, logs, traces, and other information about a build. `)
|
.addRaw(`Build records include details such as timing, dependencies, results, logs, traces, and other information about a build. `)
|
||||||
.addRaw(addLink('Learn more', 'https://docs.docker.com/go/build-summary/'))
|
.addRaw(addLink('Learn more', 'https://www.docker.com/blog/new-beta-feature-deep-dive-into-github-actions-docker-builds-with-docker-desktop/?utm_source=github&utm_medium=actions'))
|
||||||
.addRaw('</p>')
|
.addRaw('</p>')
|
||||||
.addRaw(`<p>`)
|
.addRaw(`<p>`)
|
||||||
.addRaw(`:arrow_down: ${addLink(`<strong>${Util.stringToUnicodeEntities(opts.uploadRes.filename)}</strong>`, artifactRelativeURL)} (${Util.formatFileSize(opts.uploadRes.size)})`)
|
.addRaw(`:arrow_down: ${addLink(`<strong>${Util.stringToUnicodeEntities(opts.uploadRes.filename)}</strong>`, artifactRelativeURL)} (${Util.formatFileSize(opts.uploadRes.size)} - includes <strong>${refsSize} build record${refsSize > 1 ? 's' : ''}</strong>)`)
|
||||||
.addBreak()
|
|
||||||
.addRaw(`This file includes <strong>${refsSize} build record${refsSize > 1 ? 's' : ''}</strong>.`)
|
|
||||||
.addRaw(`</p>`)
|
.addRaw(`</p>`)
|
||||||
.addRaw(`<p>`)
|
.addRaw(`<p>`)
|
||||||
.addRaw(`Find this useful? `)
|
.addRaw(`Find this useful? `)
|
||||||
@@ -253,7 +251,7 @@ export class GitHub {
|
|||||||
.addRaw('</p>');
|
.addRaw('</p>');
|
||||||
|
|
||||||
// Preview
|
// Preview
|
||||||
sum.addRaw(`<strong>Preview</strong>`).addBreak().addRaw('<p>');
|
sum.addRaw('<p>');
|
||||||
const summaryTableData: Array<Array<SummaryTableCell>> = [
|
const summaryTableData: Array<Array<SummaryTableCell>> = [
|
||||||
[
|
[
|
||||||
{header: true, data: 'ID'},
|
{header: true, data: 'ID'},
|
||||||
|
|||||||
Reference in New Issue
Block a user