Compare commits
	
		
			54 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 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 | ||
|   | 31159d49c0 | ||
|   | 07e1c3e148 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | f7febd621d | ||
|   | f6010ea701 | ||
|   | c0a6b9680f | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 0dfe9c3d41 | ||
|   | 94f8f8c2ee | ||
|   | 22f4433c58 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 6721c56015 | ||
|   | 4367da978b | ||
|   | 0883ebe52d | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 76e5c2d6ea | ||
|   | 29d67824d8 | 
							
								
								
									
										
											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 | 
							
								
								
									
										98
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										98
									
								
								.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,76 @@ 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 }} | ||||
|   | ||||
							
								
								
									
										2
									
								
								.github/workflows/test.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/test.yml
									
									
									
									
										vendored
									
									
								
							| @@ -20,7 +20,7 @@ jobs: | ||||
|         uses: actions/checkout@v4 | ||||
|       - | ||||
|         name: Test | ||||
|         uses: docker/bake-action@v4 | ||||
|         uses: docker/bake-action@v5 | ||||
|         with: | ||||
|           targets: test | ||||
|       - | ||||
|   | ||||
							
								
								
									
										2
									
								
								.github/workflows/validate.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/validate.yml
									
									
									
									
										vendored
									
									
								
							| @@ -40,6 +40,6 @@ jobs: | ||||
|         uses: actions/checkout@v4 | ||||
|       - | ||||
|         name: Validate | ||||
|         uses: docker/bake-action@v4 | ||||
|         uses: docker/bake-action@v5 | ||||
|         with: | ||||
|           targets: ${{ matrix.target }} | ||||
|   | ||||
							
								
								
									
										63
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										63
									
								
								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: | ||||
| @@ -90,7 +74,7 @@ jobs: | ||||
|           password: ${{ secrets.DOCKERHUB_TOKEN }} | ||||
|       - | ||||
|         name: Build and push | ||||
|         uses: docker/build-push-action@v5 | ||||
|         uses: docker/build-push-action@v6 | ||||
|         with: | ||||
|           push: true | ||||
|           tags: user/app:latest | ||||
| @@ -108,14 +92,9 @@ 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@v5 | ||||
|         uses: docker/build-push-action@v6 | ||||
|         with: | ||||
|           context: "{{defaultContext}}:mysubdir" | ||||
|           push: true | ||||
| @@ -130,7 +109,7 @@ named `GIT_AUTH_TOKEN` to be able to authenticate against it with Buildx: | ||||
| ```yaml | ||||
|       - | ||||
|         name: Build and push | ||||
|         uses: docker/build-push-action@v5 | ||||
|         uses: docker/build-push-action@v6 | ||||
|         with: | ||||
|           push: true | ||||
|           tags: user/app:latest | ||||
| @@ -145,8 +124,6 @@ name: ci | ||||
|  | ||||
| on: | ||||
|   push: | ||||
|     branches: | ||||
|       - 'main' | ||||
|  | ||||
| jobs: | ||||
|   docker: | ||||
| @@ -169,7 +146,7 @@ jobs: | ||||
|           password: ${{ secrets.DOCKERHUB_TOKEN }} | ||||
|       - | ||||
|         name: Build and push | ||||
|         uses: docker/build-push-action@v5 | ||||
|         uses: docker/build-push-action@v6 | ||||
|         with: | ||||
|           context: . | ||||
|           push: true | ||||
| @@ -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,11 @@ 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_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 | ||||
|  | ||||
|   | ||||
| @@ -59,7 +59,7 @@ jobs: | ||||
|         uses: crazy-max/ghaction-setup-containerd@v2 | ||||
|       - | ||||
|         name: Build Docker image | ||||
|         uses: docker/build-push-action@v5 | ||||
|         uses: docker/build-push-action@v6 | ||||
|         with: | ||||
|           context: . | ||||
|           platforms: linux/amd64,linux/arm64 | ||||
| @@ -112,7 +112,7 @@ to generate sanitized tags: | ||||
|     tags: latest | ||||
|  | ||||
| - name: Build and push | ||||
|   uses: docker/build-push-action@v5 | ||||
|   uses: docker/build-push-action@v6 | ||||
|   with: | ||||
|     context: . | ||||
|     push: true | ||||
| @@ -130,7 +130,7 @@ Or a dedicated step to sanitize the slug: | ||||
|     script: return 'ghcr.io/${{ github.repository }}'.toLowerCase() | ||||
|  | ||||
| - name: Build and push | ||||
|   uses: docker/build-push-action@v5 | ||||
|   uses: docker/build-push-action@v6 | ||||
|   with: | ||||
|     context: . | ||||
|     push: true | ||||
|   | ||||
							
								
								
									
										23
									
								
								dist/index.js
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										23
									
								
								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
											
										
									
								
							
							
								
								
									
										24
									
								
								dist/licenses.txt
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										24
									
								
								dist/licenses.txt
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -2516,6 +2516,30 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||||
| THE SOFTWARE. | ||||
|  | ||||
|  | ||||
| he | ||||
| MIT | ||||
| Copyright Mathias Bynens <https://mathiasbynens.be/> | ||||
|  | ||||
| Permission is hereby granted, free of charge, to any person obtaining | ||||
| a copy of this software and associated documentation files (the | ||||
| "Software"), to deal in the Software without restriction, including | ||||
| without limitation the rights to use, copy, modify, merge, publish, | ||||
| distribute, sublicense, and/or sell copies of the Software, and to | ||||
| permit persons to whom the Software is furnished to do so, subject to | ||||
| the following conditions: | ||||
|  | ||||
| The above copyright notice and this permission notice shall be | ||||
| included in all copies or substantial portions of the Software. | ||||
|  | ||||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | ||||
| EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | ||||
| MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||||
| NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE | ||||
| LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION | ||||
| OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION | ||||
| WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||||
|  | ||||
|  | ||||
| iconv-lite | ||||
| MIT | ||||
| Copyright (c) 2011 Alexander Shtuchkin | ||||
|   | ||||
| @@ -27,7 +27,7 @@ | ||||
|   "packageManager": "yarn@3.6.3", | ||||
|   "dependencies": { | ||||
|     "@actions/core": "^1.10.1", | ||||
|     "@docker/actions-toolkit": "0.26.0", | ||||
|     "@docker/actions-toolkit": "0.33.0", | ||||
|     "handlebars": "^4.7.7" | ||||
|   }, | ||||
|   "devDependencies": { | ||||
|   | ||||
							
								
								
									
										94
									
								
								src/main.ts
									
									
									
									
									
								
							
							
						
						
									
										94
									
								
								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); | ||||
| @@ -105,7 +107,6 @@ actionsToolkit.run( | ||||
|     const imageID = toolkit.buildxBuild.resolveImageID(); | ||||
|     const metadata = toolkit.buildxBuild.resolveMetadata(); | ||||
|     const digest = toolkit.buildxBuild.resolveDigest(); | ||||
|  | ||||
|     if (imageID) { | ||||
|       await core.group(`ImageID`, async () => { | ||||
|         core.info(imageID); | ||||
| @@ -125,42 +126,65 @@ actionsToolkit.run( | ||||
|         core.setOutput('metadata', metadatadt); | ||||
|       }); | ||||
|     } | ||||
|  | ||||
|     let ref: string; | ||||
|     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'); | ||||
|       } | ||||
|     }); | ||||
|  | ||||
|     await core.group(`Check build summary support`, async () => { | ||||
|       if (!buildSummaryEnabled()) { | ||||
|         core.info('Build summary disabled'); | ||||
|       } else if (GitHub.isGHES) { | ||||
|         core.warning('Build summary is not yet supported on GHES'); | ||||
|       } else if (!(await toolkit.buildx.versionSatisfies('>=0.13.0'))) { | ||||
|         core.warning('Build summary requires Buildx >= 0.13.0'); | ||||
|       } else if (builder && builder.driver === 'cloud') { | ||||
|         core.warning('Build summary is not yet supported with Docker Build Cloud'); | ||||
|       } else if (!ref) { | ||||
|         core.warning('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] | ||||
|             refs: stateHelper.buildRef ? [stateHelper.buildRef] : [] | ||||
|           }); | ||||
|           core.info(`Build record exported to ${exportRes.dockerbuildFilename} (${Util.formatFileSize(exportRes.dockerbuildSize)})`); | ||||
|           const uploadRes = await GitHub.uploadArtifact({ | ||||
|           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: 90 | ||||
|               retentionDays: recordRetentionDays | ||||
|             }); | ||||
|           } | ||||
|  | ||||
|           await GitHub.writeBuildSummary({ | ||||
|             exportRes: exportRes, | ||||
|             uploadRes: uploadRes, | ||||
| @@ -197,3 +221,37 @@ async function buildRef(toolkit: Toolkit, since: Date, builder?: string): Promis | ||||
|   }); | ||||
|   return Object.keys(refs).length > 0 ? Object.keys(refs)[0] : ''; | ||||
| } | ||||
|  | ||||
| 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'); | ||||
| } | ||||
|   | ||||
							
								
								
									
										30
									
								
								yarn.lock
									
									
									
									
									
								
							
							
						
						
									
										30
									
								
								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.8": | ||||
|   version: 2.1.8 | ||||
|   resolution: "@actions/artifact@npm:2.1.8" | ||||
|   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: 51a47c21bcdac705abb61dbaef923f2760354c39bcad44a31b129e18bf31f646e5148f92ee7e1198275d1dba7bebfd1d1500ad7f62f6de1e65b57b2d092d5341 | ||||
|   languageName: node | ||||
|   linkType: hard | ||||
|  | ||||
| @@ -1055,11 +1055,11 @@ __metadata: | ||||
|   languageName: node | ||||
|   linkType: hard | ||||
|  | ||||
| "@docker/actions-toolkit@npm:0.26.0": | ||||
|   version: 0.26.0 | ||||
|   resolution: "@docker/actions-toolkit@npm:0.26.0" | ||||
| "@docker/actions-toolkit@npm:0.33.0": | ||||
|   version: 0.33.0 | ||||
|   resolution: "@docker/actions-toolkit@npm:0.33.0" | ||||
|   dependencies: | ||||
|     "@actions/artifact": ^2.1.7 | ||||
|     "@actions/artifact": ^2.1.8 | ||||
|     "@actions/cache": ^3.2.4 | ||||
|     "@actions/core": ^1.10.1 | ||||
|     "@actions/exec": ^1.1.1 | ||||
| @@ -1074,12 +1074,13 @@ __metadata: | ||||
|     csv-parse: ^5.5.6 | ||||
|     gunzip-maybe: ^1.4.2 | ||||
|     handlebars: ^4.7.8 | ||||
|     he: ^1.2.0 | ||||
|     js-yaml: ^4.1.0 | ||||
|     jwt-decode: ^4.0.0 | ||||
|     semver: ^7.6.2 | ||||
|     tar-stream: ^3.1.7 | ||||
|     tmp: ^0.2.3 | ||||
|   checksum: bc5b8311758a6cfed9e9f575cc18f70bd9b39316d7604e9b57ba7500e7a1c5b2034e29e9ada18187a7dac50f02f60f8fa257e30440b458417628efa4b7f254bb | ||||
|   checksum: 510273d28bcf0c8a6acd4ffffa0b52cf98f46018f7f3f0772026b8fdb9422cf1dc851558140a0e95e8af3c584eb087ecb2dc48bdab0bc4f8dd9994959b052a22 | ||||
|   languageName: node | ||||
|   linkType: hard | ||||
|  | ||||
| @@ -3149,7 +3150,7 @@ __metadata: | ||||
|   resolution: "docker-build-push@workspace:." | ||||
|   dependencies: | ||||
|     "@actions/core": ^1.10.1 | ||||
|     "@docker/actions-toolkit": 0.26.0 | ||||
|     "@docker/actions-toolkit": 0.33.0 | ||||
|     "@types/node": ^20.12.12 | ||||
|     "@typescript-eslint/eslint-plugin": ^7.9.0 | ||||
|     "@typescript-eslint/parser": ^7.9.0 | ||||
| @@ -3962,6 +3963,15 @@ __metadata: | ||||
|   languageName: node | ||||
|   linkType: hard | ||||
|  | ||||
| "he@npm:^1.2.0": | ||||
|   version: 1.2.0 | ||||
|   resolution: "he@npm:1.2.0" | ||||
|   bin: | ||||
|     he: bin/he | ||||
|   checksum: 3d4d6babccccd79c5c5a3f929a68af33360d6445587d628087f39a965079d84f18ce9c3d3f917ee1e3978916fc833bb8b29377c3b403f919426f91bc6965e7a7 | ||||
|   languageName: node | ||||
|   linkType: hard | ||||
|  | ||||
| "html-escaper@npm:^2.0.0": | ||||
|   version: 2.0.2 | ||||
|   resolution: "html-escaper@npm:2.0.2" | ||||
|   | ||||
		Reference in New Issue
	
	Block a user