Compare commits
	
		
			63 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 5cd11c3a4c | ||
|   | 0aba704831 | ||
|   | 23c657a01f | ||
|   | 16ebe778df | ||
|   | 646a62b4f2 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | d92ab1347f | ||
|   | 4f7cdeb0f0 | ||
|   | ad3cd774a4 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 3efbc13366 | ||
|   | 2dbe91db48 | ||
|   | 7de3854c4c | ||
|   | 175aa53a3f | ||
|   | 806a2a461f | ||
|   | a8d35412fb | ||
|   | 1672e74297 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | a04f51d3b4 | ||
|   | 5176d81f87 | ||
|   | ec10ae8f96 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 597e8fc414 | ||
|   | e050dfa622 | ||
|   | d1fcdb6ee0 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | a6067b9a1a | ||
|   | 1ca370b3a9 | ||
|   | 2c95ebed5c | ||
|   | d189d0ef33 | ||
|   | a254f8ca60 | ||
|   | 94dae62c78 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 267a69d6cc | ||
|   | f23fb2a7cb | ||
|   | ef76d100ee | ||
|   | 522345f555 | ||
|   | 1a162644f9 | ||
|   | 9eea548195 | ||
|   | 11c2faaa9e | ||
|   | de2365af33 | ||
|   | bca5082da7 | ||
|   | e7aab408d9 | ||
|   | 63eb7590c6 | ||
|   | 53ec48606f | ||
|   | fe9d9f1d0c | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | ad37ba1ad0 | ||
|   | aabbd3f4d7 | ||
|   | 9c7c277413 | ||
|   | 987902144c | ||
|   | 709dde20a7 | ||
|   | ec2d640ea6 | ||
|   | 3dc0757c66 | ||
|   | dcb0699155 | ||
|   | a3c06e8698 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | e75138d857 | ||
|   | 9552610e81 | ||
|   | 99c83871c1 | ||
|   | af64c4e18f | ||
|   | 6fdff4fb09 | ||
|   | 9e59c61762 | ||
|   | 49351df2b7 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 723ff6ffad | ||
|   | 15560696de | ||
|   | 57e1d34ac3 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 309982ebc9 | ||
|   | 9476c25b2a | ||
|   | 97be5a4928 | ||
|   | 9cac6c8ea0 | 
							
								
								
									
										
											BIN
										
									
								
								.github/build-push-summary.png
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.github/build-push-summary.png
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 81 KiB | 
							
								
								
									
										146
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										146
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							| @@ -1345,7 +1345,30 @@ jobs: | ||||
|         run: | | ||||
|           docker image inspect localhost:5000/name/app:latest | ||||
|  | ||||
|   disable-summary: | ||||
|   summary-disable: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|       - | ||||
|         name: Checkout | ||||
|         uses: actions/checkout@v4 | ||||
|         with: | ||||
|           path: action | ||||
|       - | ||||
|         name: Set up Docker Buildx | ||||
|         uses: docker/setup-buildx-action@v3 | ||||
|         with: | ||||
|           version: ${{ inputs.buildx-version || env.BUILDX_VERSION }} | ||||
|           driver-opts: | | ||||
|             image=${{ inputs.buildkit-image || env.BUILDKIT_IMAGE }} | ||||
|       - | ||||
|         name: Build | ||||
|         uses: ./action | ||||
|         with: | ||||
|           file: ./test/Dockerfile | ||||
|         env: | ||||
|           DOCKER_BUILD_SUMMARY: false | ||||
|  | ||||
|   summary-disable-deprecated: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|       - | ||||
| @@ -1367,3 +1390,124 @@ jobs: | ||||
|           file: ./test/Dockerfile | ||||
|         env: | ||||
|           DOCKER_BUILD_NO_SUMMARY: true | ||||
|  | ||||
|   summary-not-supported: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|       - | ||||
|         name: Checkout | ||||
|         uses: actions/checkout@v4 | ||||
|         with: | ||||
|           path: action | ||||
|       - | ||||
|         name: Set up Docker Buildx | ||||
|         uses: docker/setup-buildx-action@v3 | ||||
|         with: | ||||
|           version: v0.12.1 | ||||
|           driver-opts: | | ||||
|             image=${{ inputs.buildkit-image || env.BUILDKIT_IMAGE }} | ||||
|       - | ||||
|         name: Build | ||||
|         uses: ./action | ||||
|         with: | ||||
|           file: ./test/Dockerfile | ||||
|  | ||||
|   record-upload-disable: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|       - | ||||
|         name: Checkout | ||||
|         uses: actions/checkout@v4 | ||||
|         with: | ||||
|           path: action | ||||
|       - | ||||
|         name: Set up Docker Buildx | ||||
|         uses: docker/setup-buildx-action@v3 | ||||
|         with: | ||||
|           version: ${{ inputs.buildx-version || env.BUILDX_VERSION }} | ||||
|           driver-opts: | | ||||
|             image=${{ inputs.buildkit-image || env.BUILDKIT_IMAGE }} | ||||
|       - | ||||
|         name: Build | ||||
|         uses: ./action | ||||
|         with: | ||||
|           file: ./test/Dockerfile | ||||
|         env: | ||||
|           DOCKER_BUILD_RECORD_UPLOAD: false | ||||
|  | ||||
|   record-retention-days: | ||||
|     runs-on: ubuntu-latest | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         days: | ||||
|           - 2 | ||||
|           - 0 | ||||
|     steps: | ||||
|       - | ||||
|         name: Checkout | ||||
|         uses: actions/checkout@v4 | ||||
|         with: | ||||
|           path: action | ||||
|       - | ||||
|         name: Set up Docker Buildx | ||||
|         uses: docker/setup-buildx-action@v3 | ||||
|         with: | ||||
|           version: ${{ inputs.buildx-version || env.BUILDX_VERSION }} | ||||
|           driver-opts: | | ||||
|             image=${{ inputs.buildkit-image || env.BUILDKIT_IMAGE }} | ||||
|       - | ||||
|         name: Build | ||||
|         uses: ./action | ||||
|         with: | ||||
|           file: ./test/Dockerfile | ||||
|         env: | ||||
|           DOCKER_BUILD_RECORD_RETENTION_DAYS: ${{ matrix.days }} | ||||
|  | ||||
|   checks: | ||||
|     runs-on: ubuntu-latest | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         buildx-version: | ||||
|           - latest | ||||
|           - v0.14.1 | ||||
|     steps: | ||||
|       - | ||||
|         name: Checkout | ||||
|         uses: actions/checkout@v4 | ||||
|       - | ||||
|         name: Set up Docker Buildx | ||||
|         uses: docker/setup-buildx-action@v3 | ||||
|         with: | ||||
|           version: ${{ matrix.buildx-version }} | ||||
|           driver-opts: | | ||||
|             image=${{ inputs.buildkit-image || env.BUILDKIT_IMAGE }} | ||||
|       - | ||||
|         name: Build | ||||
|         uses: ./ | ||||
|         with: | ||||
|           context: ./test | ||||
|           file: ./test/lint.Dockerfile | ||||
|  | ||||
|   annotations-disabled: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|       - | ||||
|         name: Checkout | ||||
|         uses: actions/checkout@v4 | ||||
|       - | ||||
|         name: Set up Docker Buildx | ||||
|         uses: docker/setup-buildx-action@v3 | ||||
|         with: | ||||
|           version: ${{ inputs.buildx-version || env.BUILDX_VERSION }} | ||||
|           driver-opts: | | ||||
|             image=${{ inputs.buildkit-image || env.BUILDKIT_IMAGE }} | ||||
|       - | ||||
|         name: Build | ||||
|         uses: ./ | ||||
|         with: | ||||
|           context: ./test | ||||
|           file: ./test/lint.Dockerfile | ||||
|         env: | ||||
|           DOCKER_BUILD_CHECKS_ANNOTATIONS: false | ||||
|   | ||||
							
								
								
									
										56
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										56
									
								
								README.md
									
									
									
									
									
								
							| @@ -19,21 +19,7 @@ ___ | ||||
|   * [Git context](#git-context) | ||||
|   * [Path context](#path-context) | ||||
| * [Examples](#examples) | ||||
|   * [Multi-platform image](https://docs.docker.com/build/ci/github-actions/multi-platform/) | ||||
|   * [Secrets](https://docs.docker.com/build/ci/github-actions/secrets/) | ||||
|   * [Push to multi-registries](https://docs.docker.com/build/ci/github-actions/push-multi-registries/) | ||||
|   * [Manage tags and labels](https://docs.docker.com/build/ci/github-actions/manage-tags-labels/) | ||||
|   * [Cache management](https://docs.docker.com/build/ci/github-actions/cache/) | ||||
|   * [Export to Docker](https://docs.docker.com/build/ci/github-actions/export-docker/) | ||||
|   * [Test before push](https://docs.docker.com/build/ci/github-actions/test-before-push/) | ||||
|   * [Local registry](https://docs.docker.com/build/ci/github-actions/local-registry/) | ||||
|   * [Share built image between jobs](https://docs.docker.com/build/ci/github-actions/share-image-jobs/) | ||||
|   * [Named contexts](https://docs.docker.com/build/ci/github-actions/named-contexts/) | ||||
|   * [Copy image between registries](https://docs.docker.com/build/ci/github-actions/copy-image-registries/) | ||||
|   * [Update Docker Hub repo description](https://docs.docker.com/build/ci/github-actions/update-dockerhub-desc/) | ||||
|   * [SBOM and provenance attestations](https://docs.docker.com/build/ci/github-actions/attestations/) | ||||
|   * [Annotations](https://docs.docker.com/build/ci/github-actions/annotations/) | ||||
|   * [Reproducible builds](https://docs.docker.com/build/ci/github-actions/reproducible-builds/) | ||||
| * [Summaries](#summaries) | ||||
| * [Customizing](#customizing) | ||||
|   * [inputs](#inputs) | ||||
|   * [outputs](#outputs) | ||||
| @@ -69,8 +55,6 @@ name: ci | ||||
|  | ||||
| on: | ||||
|   push: | ||||
|     branches: | ||||
|       - 'main' | ||||
|  | ||||
| jobs: | ||||
|   docker: | ||||
| @@ -108,11 +92,6 @@ expression `{{defaultContext}}`. Here we can use it to provide a subdirectory | ||||
| to the default Git context: | ||||
|  | ||||
| ```yaml | ||||
|       - | ||||
|         # Setting up Docker Buildx with docker-container driver is required | ||||
|         # at the moment to be able to use a subdirectory with Git context | ||||
|         name: Set up Docker Buildx | ||||
|         uses: docker/setup-buildx-action@v3 | ||||
|       - | ||||
|         name: Build and push | ||||
|         uses: docker/build-push-action@v6 | ||||
| @@ -145,8 +124,6 @@ name: ci | ||||
|  | ||||
| on: | ||||
|   push: | ||||
|     branches: | ||||
|       - 'main' | ||||
|  | ||||
| jobs: | ||||
|   docker: | ||||
| @@ -194,11 +171,31 @@ jobs: | ||||
| * [Annotations](https://docs.docker.com/build/ci/github-actions/annotations/) | ||||
| * [Reproducible builds](https://docs.docker.com/build/ci/github-actions/reproducible-builds/) | ||||
|  | ||||
| ## Summaries | ||||
|  | ||||
| This action generates a [job summary](https://github.blog/2022-05-09-supercharging-github-actions-with-job-summaries/) | ||||
| that provides a detailed overview of the build execution. The summary shows an | ||||
| overview of all the steps executed during the build, including the build inputs | ||||
| and eventual errors. | ||||
|  | ||||
|  | ||||
|  | ||||
| The summary also includes a link for downloading the build record with | ||||
| additional details about the build, including build stats, logs, outputs, and | ||||
| more. The build record can be imported to Docker Desktop for inspecting the | ||||
| build in greater detail. | ||||
|  | ||||
| Summaries are enabled by default, but can be disabled with the | ||||
| `DOCKER_BUILD_SUMMARY` [environment variable](#environment-variables). | ||||
|  | ||||
| For more information about summaries, refer to the | ||||
| [documentation](https://docs.docker.com/go/build-summary/). | ||||
|  | ||||
| ## Customizing | ||||
|  | ||||
| ### inputs | ||||
|  | ||||
| Following inputs can be used as `step.with` keys | ||||
| The following inputs can be used as `step.with` keys: | ||||
|  | ||||
| > `List` type is a newline-delimited string | ||||
| > ```yaml | ||||
| @@ -259,9 +256,12 @@ The following outputs are available: | ||||
|  | ||||
| ### environment variables | ||||
|  | ||||
| | Name                      | Type | Description                                                                                                       | | ||||
| |---------------------------|------|-------------------------------------------------------------------------------------------------------------------| | ||||
| | `DOCKER_BUILD_NO_SUMMARY` | Bool | If `true`, [build summary](https://docs.docker.com/build/ci/github-actions/build-summary/) generation is disabled | | ||||
| | Name                                 | Type   | Default | Description                                                                                                                                                                                                                                                        | | ||||
| |--------------------------------------|--------|---------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | ||||
| | `DOCKER_BUILD_CHECKS_ANNOTATIONS`    | Bool   | `true`  | If `false`, GitHub annotations are not generated for [build checks](https://docs.docker.com/build/checks/)                                                                                                                                                         | | ||||
| | `DOCKER_BUILD_SUMMARY`               | Bool   | `true`  | If `false`, [build summary](https://docs.docker.com/build/ci/github-actions/build-summary/) generation is disabled                                                                                                                                                 | | ||||
| | `DOCKER_BUILD_RECORD_UPLOAD`         | Bool   | `true`  | If `false`, build record upload as [GitHub artifact](https://docs.github.com/en/actions/using-workflows/storing-workflow-data-as-artifacts) is disabled                                                                                                            | | ||||
| | `DOCKER_BUILD_RECORD_RETENTION_DAYS` | Number |         | Duration after which build record artifact will expire in days. Defaults to repository/org [retention settings](https://docs.github.com/en/actions/learn-github-actions/usage-limits-billing-and-administration#artifact-and-log-retention-policy) if unset or `0` | | ||||
|  | ||||
| ## Troubleshooting | ||||
|  | ||||
|   | ||||
							
								
								
									
										4
									
								
								dist/index.js
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								dist/index.js
									
									
									
										generated
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										2
									
								
								dist/index.js.map
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								dist/index.js.map
									
									
									
										generated
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| @@ -27,7 +27,7 @@ | ||||
|   "packageManager": "yarn@3.6.3", | ||||
|   "dependencies": { | ||||
|     "@actions/core": "^1.10.1", | ||||
|     "@docker/actions-toolkit": "0.27.0", | ||||
|     "@docker/actions-toolkit": "0.37.1", | ||||
|     "handlebars": "^4.7.7" | ||||
|   }, | ||||
|   "devDependencies": { | ||||
|   | ||||
							
								
								
									
										131
									
								
								src/main.ts
									
									
									
									
									
								
							
							
						
						
									
										131
									
								
								src/main.ts
									
									
									
									
									
								
							| @@ -13,7 +13,9 @@ import {GitHub} from '@docker/actions-toolkit/lib/github'; | ||||
| import {Toolkit} from '@docker/actions-toolkit/lib/toolkit'; | ||||
| import {Util} from '@docker/actions-toolkit/lib/util'; | ||||
|  | ||||
| import {BuilderInfo} from '@docker/actions-toolkit/lib/types/buildx/builder'; | ||||
| import {ConfigFile} from '@docker/actions-toolkit/lib/types/docker/docker'; | ||||
| import {UploadArtifactResponse} from '@docker/actions-toolkit/lib/types/github'; | ||||
|  | ||||
| import * as context from './context'; | ||||
|  | ||||
| @@ -80,10 +82,10 @@ actionsToolkit.run( | ||||
|       await toolkit.buildx.printVersion(); | ||||
|     }); | ||||
|  | ||||
|     let builder: BuilderInfo; | ||||
|     await core.group(`Builder info`, async () => { | ||||
|       const builder = await toolkit.builder.inspect(inputs.builder); | ||||
|       builder = await toolkit.builder.inspect(inputs.builder); | ||||
|       core.info(JSON.stringify(builder, null, 2)); | ||||
|       stateHelper.setBuilder(builder); | ||||
|     }); | ||||
|  | ||||
|     const args: string[] = await context.getArgs(inputs, toolkit); | ||||
| @@ -95,7 +97,12 @@ actionsToolkit.run( | ||||
|  | ||||
|     let err: Error | undefined; | ||||
|     await Exec.getExecOutput(buildCmd.command, buildCmd.args, { | ||||
|       ignoreReturnCode: true | ||||
|       ignoreReturnCode: true, | ||||
|       env: Object.assign({}, process.env, { | ||||
|         BUILDX_METADATA_WARNINGS: 'true' | ||||
|       }) as { | ||||
|         [key: string]: string; | ||||
|       } | ||||
|     }).then(res => { | ||||
|       if (res.stderr.length > 0 && res.exitCode != 0) { | ||||
|         err = Error(`buildx failed with: ${res.stderr.match(/(.*)\s*$/)?.[0]?.trim() ?? 'unknown error'}`); | ||||
| @@ -104,8 +111,7 @@ actionsToolkit.run( | ||||
|  | ||||
|     const imageID = toolkit.buildxBuild.resolveImageID(); | ||||
|     const metadata = toolkit.buildxBuild.resolveMetadata(); | ||||
|     const digest = toolkit.buildxBuild.resolveDigest(); | ||||
|  | ||||
|     const digest = toolkit.buildxBuild.resolveDigest(metadata); | ||||
|     if (imageID) { | ||||
|       await core.group(`ImageID`, async () => { | ||||
|         core.info(imageID); | ||||
| @@ -125,42 +131,80 @@ actionsToolkit.run( | ||||
|         core.setOutput('metadata', metadatadt); | ||||
|       }); | ||||
|     } | ||||
|  | ||||
|     let ref: string | undefined; | ||||
|     await core.group(`Reference`, async () => { | ||||
|       const ref = await buildRef(toolkit, startedTime, inputs.builder); | ||||
|       ref = await buildRef(toolkit, startedTime, inputs.builder); | ||||
|       if (ref) { | ||||
|         core.info(ref); | ||||
|         stateHelper.setBuildRef(ref); | ||||
|       } else { | ||||
|         core.warning('No build ref found'); | ||||
|         core.info('No build reference found'); | ||||
|       } | ||||
|     }); | ||||
|  | ||||
|     if (buildChecksAnnotationsEnabled()) { | ||||
|       const warnings = toolkit.buildxBuild.resolveWarnings(metadata); | ||||
|       if (ref && warnings && warnings.length > 0) { | ||||
|         const annotations = await Buildx.convertWarningsToGitHubAnnotations(warnings, [ref]); | ||||
|         core.debug(`annotations: ${JSON.stringify(annotations, null, 2)}`); | ||||
|         if (annotations && annotations.length > 0) { | ||||
|           await core.group(`Generating GitHub annotations (${annotations.length} build checks found)`, async () => { | ||||
|             for (const annotation of annotations) { | ||||
|               core.warning(annotation.message, annotation); | ||||
|             } | ||||
|           }); | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|  | ||||
|     await core.group(`Check build summary support`, async () => { | ||||
|       if (!buildSummaryEnabled()) { | ||||
|         core.info('Build summary disabled'); | ||||
|       } else if (GitHub.isGHES) { | ||||
|         core.info('Build summary is not yet supported on GHES'); | ||||
|       } else if (!(await toolkit.buildx.versionSatisfies('>=0.13.0'))) { | ||||
|         core.info('Build summary requires Buildx >= 0.13.0'); | ||||
|       } else if (builder && builder.driver === 'cloud') { | ||||
|         core.info('Build summary is not yet supported with Docker Build Cloud'); | ||||
|       } else if (!ref) { | ||||
|         core.info('Build summary requires a build reference'); | ||||
|       } else { | ||||
|         core.info('Build summary supported!'); | ||||
|         stateHelper.setSummarySupported(); | ||||
|       } | ||||
|     }); | ||||
|  | ||||
|     if (err) { | ||||
|       throw err; | ||||
|     } | ||||
|   }, | ||||
|   // post | ||||
|   async () => { | ||||
|     if (stateHelper.buildRef.length > 0) { | ||||
|     if (stateHelper.isSummarySupported) { | ||||
|       await core.group(`Generating build summary`, async () => { | ||||
|         if (process.env.DOCKER_BUILD_NO_SUMMARY && Util.parseBool(process.env.DOCKER_BUILD_NO_SUMMARY)) { | ||||
|           core.info('Summary disabled'); | ||||
|           return; | ||||
|         } | ||||
|         if (stateHelper.builder && stateHelper.builder.driver === 'cloud') { | ||||
|           core.info('Summary is not yet supported with Docker Build Cloud'); | ||||
|           return; | ||||
|         } | ||||
|         try { | ||||
|           const recordUploadEnabled = buildRecordUploadEnabled(); | ||||
|           let recordRetentionDays: number | undefined; | ||||
|           if (recordUploadEnabled) { | ||||
|             recordRetentionDays = buildRecordRetentionDays(); | ||||
|           } | ||||
|  | ||||
|           const buildxHistory = new BuildxHistory(); | ||||
|           const exportRes = await buildxHistory.export({ | ||||
|             refs: [stateHelper.buildRef] | ||||
|           }); | ||||
|           core.info(`Build record exported to ${exportRes.dockerbuildFilename} (${Util.formatFileSize(exportRes.dockerbuildSize)})`); | ||||
|           const uploadRes = await GitHub.uploadArtifact({ | ||||
|             filename: exportRes.dockerbuildFilename, | ||||
|             mimeType: 'application/gzip', | ||||
|             retentionDays: 90 | ||||
|             refs: stateHelper.buildRef ? [stateHelper.buildRef] : [] | ||||
|           }); | ||||
|           core.info(`Build record written to ${exportRes.dockerbuildFilename} (${Util.formatFileSize(exportRes.dockerbuildSize)})`); | ||||
|  | ||||
|           let uploadRes: UploadArtifactResponse | undefined; | ||||
|           if (recordUploadEnabled) { | ||||
|             uploadRes = await GitHub.uploadArtifact({ | ||||
|               filename: exportRes.dockerbuildFilename, | ||||
|               mimeType: 'application/gzip', | ||||
|               retentionDays: recordRetentionDays | ||||
|             }); | ||||
|           } | ||||
|  | ||||
|           await GitHub.writeBuildSummary({ | ||||
|             exportRes: exportRes, | ||||
|             uploadRes: uploadRes, | ||||
| @@ -197,3 +241,44 @@ async function buildRef(toolkit: Toolkit, since: Date, builder?: string): Promis | ||||
|   }); | ||||
|   return Object.keys(refs).length > 0 ? Object.keys(refs)[0] : ''; | ||||
| } | ||||
|  | ||||
| function buildChecksAnnotationsEnabled(): boolean { | ||||
|   if (process.env.DOCKER_BUILD_CHECKS_ANNOTATIONS) { | ||||
|     return Util.parseBool(process.env.DOCKER_BUILD_CHECKS_ANNOTATIONS); | ||||
|   } | ||||
|   return true; | ||||
| } | ||||
|  | ||||
| function buildSummaryEnabled(): boolean { | ||||
|   if (process.env.DOCKER_BUILD_NO_SUMMARY) { | ||||
|     core.warning('DOCKER_BUILD_NO_SUMMARY is deprecated. Set DOCKER_BUILD_SUMMARY to false instead.'); | ||||
|     return !Util.parseBool(process.env.DOCKER_BUILD_NO_SUMMARY); | ||||
|   } else if (process.env.DOCKER_BUILD_SUMMARY) { | ||||
|     return Util.parseBool(process.env.DOCKER_BUILD_SUMMARY); | ||||
|   } | ||||
|   return true; | ||||
| } | ||||
|  | ||||
| function buildRecordUploadEnabled(): boolean { | ||||
|   if (process.env.DOCKER_BUILD_RECORD_UPLOAD) { | ||||
|     return Util.parseBool(process.env.DOCKER_BUILD_RECORD_UPLOAD); | ||||
|   } | ||||
|   return true; | ||||
| } | ||||
|  | ||||
| function buildRecordRetentionDays(): number | undefined { | ||||
|   let val: string | undefined; | ||||
|   if (process.env.DOCKER_BUILD_EXPORT_RETENTION_DAYS) { | ||||
|     core.warning('DOCKER_BUILD_EXPORT_RETENTION_DAYS is deprecated. Use DOCKER_BUILD_RECORD_RETENTION_DAYS instead.'); | ||||
|     val = process.env.DOCKER_BUILD_EXPORT_RETENTION_DAYS; | ||||
|   } else if (process.env.DOCKER_BUILD_RECORD_RETENTION_DAYS) { | ||||
|     val = process.env.DOCKER_BUILD_RECORD_RETENTION_DAYS; | ||||
|   } | ||||
|   if (val) { | ||||
|     const res = parseInt(val); | ||||
|     if (isNaN(res)) { | ||||
|       throw Error(`Invalid build record retention days: ${val}`); | ||||
|     } | ||||
|     return res; | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -1,13 +1,11 @@ | ||||
| import * as core from '@actions/core'; | ||||
|  | ||||
| import {BuilderInfo} from '@docker/actions-toolkit/lib/types/buildx/builder'; | ||||
|  | ||||
| import {Inputs, sanitizeInputs} from './context'; | ||||
|  | ||||
| export const tmpDir = process.env['STATE_tmpDir'] || ''; | ||||
| export const inputs = process.env['STATE_inputs'] ? JSON.parse(process.env['STATE_inputs']) : undefined; | ||||
| export const builder = process.env['STATE_builder'] ? <BuilderInfo>JSON.parse(process.env['STATE_builder']) : undefined; | ||||
| export const buildRef = process.env['STATE_buildRef'] || ''; | ||||
| export const isSummarySupported = !!process.env['STATE_isSummarySupported']; | ||||
|  | ||||
| export function setTmpDir(tmpDir: string) { | ||||
|   core.saveState('tmpDir', tmpDir); | ||||
| @@ -17,10 +15,10 @@ export function setInputs(inputs: Inputs) { | ||||
|   core.saveState('inputs', JSON.stringify(sanitizeInputs(inputs))); | ||||
| } | ||||
|  | ||||
| export function setBuilder(builder: BuilderInfo) { | ||||
|   core.saveState('builder', JSON.stringify(builder)); | ||||
| } | ||||
|  | ||||
| export function setBuildRef(buildRef: string) { | ||||
|   core.saveState('buildRef', buildRef); | ||||
| } | ||||
|  | ||||
| export function setSummarySupported() { | ||||
|   core.saveState('isSummarySupported', 'true'); | ||||
| } | ||||
|   | ||||
							
								
								
									
										12
									
								
								test/lint.Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								test/lint.Dockerfile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | ||||
| frOM busybox as base | ||||
| cOpy lint.Dockerfile . | ||||
|  | ||||
| from scratch | ||||
| MAINTAINER moby@example.com | ||||
| COPy --from=base \ | ||||
|   /lint.Dockerfile \ | ||||
|   / | ||||
|  | ||||
| CMD [ "echo", "Hello, Norway!" ] | ||||
| CMD [ "echo", "Hello, Sweden!" ] | ||||
| ENTRYPOINT my-program start | ||||
							
								
								
									
										33
									
								
								yarn.lock
									
									
									
									
									
								
							
							
						
						
									
										33
									
								
								yarn.lock
									
									
									
									
									
								
							| @@ -12,9 +12,9 @@ __metadata: | ||||
|   languageName: node | ||||
|   linkType: hard | ||||
|  | ||||
| "@actions/artifact@npm:^2.1.7": | ||||
|   version: 2.1.7 | ||||
|   resolution: "@actions/artifact@npm:2.1.7" | ||||
| "@actions/artifact@npm:^2.1.9": | ||||
|   version: 2.1.9 | ||||
|   resolution: "@actions/artifact@npm:2.1.9" | ||||
|   dependencies: | ||||
|     "@actions/core": ^1.10.0 | ||||
|     "@actions/github": ^5.1.1 | ||||
| @@ -30,7 +30,7 @@ __metadata: | ||||
|     jwt-decode: ^3.1.2 | ||||
|     twirp-ts: ^2.5.0 | ||||
|     unzip-stream: ^0.3.1 | ||||
|   checksum: 346c7caf43bdeb4a96c044ca3a6a005d82b977178b1a6be2c6954dfd59fef3344d2576bdd07c6cac9b54207cc88d7b1161cabd08c7cc15a1db86bf82463b36c7 | ||||
|   checksum: b01404aa6b4d47186e04a64c0002100ff68a8473eafb811a3d49275a7e1135d1981ccaf527b81c4856f6da764beabe7489fd296bb287906fd7c1964dfaeef3df | ||||
|   languageName: node | ||||
|   linkType: hard | ||||
|  | ||||
| @@ -1055,11 +1055,11 @@ __metadata: | ||||
|   languageName: node | ||||
|   linkType: hard | ||||
|  | ||||
| "@docker/actions-toolkit@npm:0.27.0": | ||||
|   version: 0.27.0 | ||||
|   resolution: "@docker/actions-toolkit@npm:0.27.0" | ||||
| "@docker/actions-toolkit@npm:0.37.1": | ||||
|   version: 0.37.1 | ||||
|   resolution: "@docker/actions-toolkit@npm:0.37.1" | ||||
|   dependencies: | ||||
|     "@actions/artifact": ^2.1.7 | ||||
|     "@actions/artifact": ^2.1.9 | ||||
|     "@actions/cache": ^3.2.4 | ||||
|     "@actions/core": ^1.10.1 | ||||
|     "@actions/exec": ^1.1.1 | ||||
| @@ -1077,10 +1077,10 @@ __metadata: | ||||
|     he: ^1.2.0 | ||||
|     js-yaml: ^4.1.0 | ||||
|     jwt-decode: ^4.0.0 | ||||
|     semver: ^7.6.2 | ||||
|     semver: ^7.6.3 | ||||
|     tar-stream: ^3.1.7 | ||||
|     tmp: ^0.2.3 | ||||
|   checksum: 8014c5f04006b19d635dbc9e28df493afa5839f782ee00849a0d2aa86a95201a95e4602dd96311c00bd00bec92a9719df2a18148296438a79785a4af8840af69 | ||||
|   checksum: 7024fb86cc72e95df681ccdfdd44f3828f447e759138d5b70bff4f29cb4cb83fc487674adcff3c0c31cdf2e5fa5f1ee55bb6fbd01981fa053b8809e2639580a3 | ||||
|   languageName: node | ||||
|   linkType: hard | ||||
|  | ||||
| @@ -3150,7 +3150,7 @@ __metadata: | ||||
|   resolution: "docker-build-push@workspace:." | ||||
|   dependencies: | ||||
|     "@actions/core": ^1.10.1 | ||||
|     "@docker/actions-toolkit": 0.27.0 | ||||
|     "@docker/actions-toolkit": 0.37.1 | ||||
|     "@types/node": ^20.12.12 | ||||
|     "@typescript-eslint/eslint-plugin": ^7.9.0 | ||||
|     "@typescript-eslint/parser": ^7.9.0 | ||||
| @@ -5894,7 +5894,7 @@ __metadata: | ||||
|   languageName: node | ||||
|   linkType: hard | ||||
|  | ||||
| "semver@npm:^7.6.0, semver@npm:^7.6.2": | ||||
| "semver@npm:^7.6.0": | ||||
|   version: 7.6.2 | ||||
|   resolution: "semver@npm:7.6.2" | ||||
|   bin: | ||||
| @@ -5903,6 +5903,15 @@ __metadata: | ||||
|   languageName: node | ||||
|   linkType: hard | ||||
|  | ||||
| "semver@npm:^7.6.3": | ||||
|   version: 7.6.3 | ||||
|   resolution: "semver@npm:7.6.3" | ||||
|   bin: | ||||
|     semver: bin/semver.js | ||||
|   checksum: 4110ec5d015c9438f322257b1c51fe30276e5f766a3f64c09edd1d7ea7118ecbc3f379f3b69032bacf13116dc7abc4ad8ce0d7e2bd642e26b0d271b56b61a7d8 | ||||
|   languageName: node | ||||
|   linkType: hard | ||||
|  | ||||
| "shebang-command@npm:^2.0.0": | ||||
|   version: 2.0.0 | ||||
|   resolution: "shebang-command@npm:2.0.0" | ||||
|   | ||||
		Reference in New Issue
	
	Block a user