mirror of
				https://gitee.com/actions-mirror/upload-artifact.git
				synced 2025-11-04 04:01:20 +08:00 
			
		
		
		
	add new artifact-digest output
Signed-off-by: Brian DeHamer <bdehamer@github.com>
This commit is contained in:
		
							parent
							
								
									735efb4a0a
								
							
						
					
					
						commit
						c40c16d999
					
				@ -122,6 +122,7 @@ For assistance with breaking changes, see [MIGRATION.md](docs/MIGRATION.md).
 | 
			
		||||
| - | - | - |
 | 
			
		||||
| `artifact-id` | GitHub ID of an Artifact, can be used by the REST API | `1234` |
 | 
			
		||||
| `artifact-url` | URL to download an Artifact. Can be used in many scenarios such as linking to artifacts in issues or pull requests. Users must be logged-in in order for this URL to work. This URL is valid as long as the artifact has not expired or the artifact, run or repository have not been deleted | `https://github.com/example-org/example-repo/actions/runs/1/artifacts/1234` |
 | 
			
		||||
| `artifact-digest` | SHA-256 digest of an Artifact | 0fde654d4c6e659b45783a725dc92f1bfb0baa6c2de64b34e814dc206ff4aaaf |
 | 
			
		||||
 | 
			
		||||
## Examples
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -60,7 +60,8 @@ describe('upload', () => {
 | 
			
		||||
 | 
			
		||||
    jest.spyOn(artifact, 'uploadArtifact').mockResolvedValue({
 | 
			
		||||
      size: 123,
 | 
			
		||||
      id: 1337
 | 
			
		||||
      id: 1337,
 | 
			
		||||
      digest: 'facefeed'
 | 
			
		||||
    })
 | 
			
		||||
  })
 | 
			
		||||
 | 
			
		||||
@ -95,6 +96,7 @@ describe('upload', () => {
 | 
			
		||||
    await run()
 | 
			
		||||
 | 
			
		||||
    expect(core.setOutput).toHaveBeenCalledWith('artifact-id', 1337)
 | 
			
		||||
    expect(core.setOutput).toHaveBeenCalledWith('artifact-digest', 'facefeed')
 | 
			
		||||
    expect(core.setOutput).toHaveBeenCalledWith(
 | 
			
		||||
      'artifact-url',
 | 
			
		||||
      `${github.context.serverUrl}/${github.context.repo.owner}/${
 | 
			
		||||
 | 
			
		||||
@ -61,6 +61,9 @@ outputs:
 | 
			
		||||
 | 
			
		||||
      This URL will be valid for as long as the artifact exists and the workflow run and repository exists. Once an artifact has expired this URL will no longer work.
 | 
			
		||||
      Common uses cases for such a download URL can be adding download links to artifacts in descriptions or comments on pull requests or issues.
 | 
			
		||||
  artifact-digest:
 | 
			
		||||
    description: >
 | 
			
		||||
      SHA-256 digest for the artifact that was just uploaded. Empty if the artifact upload failed.
 | 
			
		||||
runs:
 | 
			
		||||
  using: 'node20'
 | 
			
		||||
  main: 'dist/upload/index.js'
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										4
									
								
								dist/merge/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								dist/merge/index.js
									
									
									
									
										vendored
									
									
								
							@ -3606,6 +3606,7 @@ function uploadArtifact(name, files, rootDirectory, options) {
 | 
			
		||||
        core.info(`Artifact ${name}.zip successfully finalized. Artifact ID ${artifactId}`);
 | 
			
		||||
        return {
 | 
			
		||||
            size: uploadResult.uploadSize,
 | 
			
		||||
            digest: uploadResult.sha256Hash,
 | 
			
		||||
            id: Number(artifactId)
 | 
			
		||||
        };
 | 
			
		||||
    });
 | 
			
		||||
@ -127615,6 +127616,7 @@ function uploadArtifact(artifactName, filesToUpload, rootDirectory, options) {
 | 
			
		||||
        const uploadResponse = yield artifact_1.default.uploadArtifact(artifactName, filesToUpload, rootDirectory, options);
 | 
			
		||||
        core.info(`Artifact ${artifactName} has been successfully uploaded! Final size is ${uploadResponse.size} bytes. Artifact ID is ${uploadResponse.id}`);
 | 
			
		||||
        core.setOutput('artifact-id', uploadResponse.id);
 | 
			
		||||
        core.setOutput('artifact-digest', uploadResponse.digest);
 | 
			
		||||
        const repository = github.context.repo;
 | 
			
		||||
        const artifactURL = `${github.context.serverUrl}/${repository.owner}/${repository.repo}/actions/runs/${github.context.runId}/artifacts/${uploadResponse.id}`;
 | 
			
		||||
        core.info(`Artifact download URL: ${artifactURL}`);
 | 
			
		||||
@ -137604,7 +137606,7 @@ module.exports = index;
 | 
			
		||||
/***/ ((module) => {
 | 
			
		||||
 | 
			
		||||
"use strict";
 | 
			
		||||
module.exports = JSON.parse('{"name":"@actions/artifact","version":"2.1.11","preview":true,"description":"Actions artifact lib","keywords":["github","actions","artifact"],"homepage":"https://github.com/actions/toolkit/tree/main/packages/artifact","license":"MIT","main":"lib/artifact.js","types":"lib/artifact.d.ts","directories":{"lib":"lib","test":"__tests__"},"files":["lib","!.DS_Store"],"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/actions/toolkit.git","directory":"packages/artifact"},"scripts":{"audit-moderate":"npm install && npm audit --json --audit-level=moderate > audit.json","test":"cd ../../ && npm run test ./packages/artifact","bootstrap":"cd ../../ && npm run bootstrap","tsc-run":"tsc","tsc":"npm run bootstrap && npm run tsc-run","gen:docs":"typedoc --plugin typedoc-plugin-markdown --out docs/generated src/artifact.ts --githubPages false --readme none"},"bugs":{"url":"https://github.com/actions/toolkit/issues"},"dependencies":{"@actions/core":"^1.10.0","@actions/github":"^5.1.1","@actions/http-client":"^2.1.0","@azure/storage-blob":"^12.15.0","@octokit/core":"^3.5.1","@octokit/plugin-request-log":"^1.0.4","@octokit/plugin-retry":"^3.0.9","@octokit/request-error":"^5.0.0","@protobuf-ts/plugin":"^2.2.3-alpha.1","archiver":"^7.0.1","jwt-decode":"^3.1.2","twirp-ts":"^2.5.0","unzip-stream":"^0.3.1"},"devDependencies":{"@types/archiver":"^5.3.2","@types/unzip-stream":"^0.3.4","typedoc":"^0.25.4","typedoc-plugin-markdown":"^3.17.1","typescript":"^5.2.2"}}');
 | 
			
		||||
module.exports = JSON.parse('{"name":"@actions/artifact","version":"2.2.0","preview":true,"description":"Actions artifact lib","keywords":["github","actions","artifact"],"homepage":"https://github.com/actions/toolkit/tree/main/packages/artifact","license":"MIT","main":"lib/artifact.js","types":"lib/artifact.d.ts","directories":{"lib":"lib","test":"__tests__"},"files":["lib","!.DS_Store"],"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/actions/toolkit.git","directory":"packages/artifact"},"scripts":{"audit-moderate":"npm install && npm audit --json --audit-level=moderate > audit.json","test":"cd ../../ && npm run test ./packages/artifact","bootstrap":"cd ../../ && npm run bootstrap","tsc-run":"tsc","tsc":"npm run bootstrap && npm run tsc-run","gen:docs":"typedoc --plugin typedoc-plugin-markdown --out docs/generated src/artifact.ts --githubPages false --readme none"},"bugs":{"url":"https://github.com/actions/toolkit/issues"},"dependencies":{"@actions/core":"^1.10.0","@actions/github":"^5.1.1","@actions/http-client":"^2.1.0","@azure/storage-blob":"^12.15.0","@octokit/core":"^3.5.1","@octokit/plugin-request-log":"^1.0.4","@octokit/plugin-retry":"^3.0.9","@octokit/request-error":"^5.0.0","@protobuf-ts/plugin":"^2.2.3-alpha.1","archiver":"^7.0.1","jwt-decode":"^3.1.2","twirp-ts":"^2.5.0","unzip-stream":"^0.3.1"},"devDependencies":{"@types/archiver":"^5.3.2","@types/unzip-stream":"^0.3.4","typedoc":"^0.25.4","typedoc-plugin-markdown":"^3.17.1","typescript":"^5.2.2"}}');
 | 
			
		||||
 | 
			
		||||
/***/ }),
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										4
									
								
								dist/upload/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								dist/upload/index.js
									
									
									
									
										vendored
									
									
								
							@ -3606,6 +3606,7 @@ function uploadArtifact(name, files, rootDirectory, options) {
 | 
			
		||||
        core.info(`Artifact ${name}.zip successfully finalized. Artifact ID ${artifactId}`);
 | 
			
		||||
        return {
 | 
			
		||||
            size: uploadResult.uploadSize,
 | 
			
		||||
            digest: uploadResult.sha256Hash,
 | 
			
		||||
            id: Number(artifactId)
 | 
			
		||||
        };
 | 
			
		||||
    });
 | 
			
		||||
@ -127370,6 +127371,7 @@ function uploadArtifact(artifactName, filesToUpload, rootDirectory, options) {
 | 
			
		||||
        const uploadResponse = yield artifact_1.default.uploadArtifact(artifactName, filesToUpload, rootDirectory, options);
 | 
			
		||||
        core.info(`Artifact ${artifactName} has been successfully uploaded! Final size is ${uploadResponse.size} bytes. Artifact ID is ${uploadResponse.id}`);
 | 
			
		||||
        core.setOutput('artifact-id', uploadResponse.id);
 | 
			
		||||
        core.setOutput('artifact-digest', uploadResponse.digest);
 | 
			
		||||
        const repository = github.context.repo;
 | 
			
		||||
        const artifactURL = `${github.context.serverUrl}/${repository.owner}/${repository.repo}/actions/runs/${github.context.runId}/artifacts/${uploadResponse.id}`;
 | 
			
		||||
        core.info(`Artifact download URL: ${artifactURL}`);
 | 
			
		||||
@ -137614,7 +137616,7 @@ module.exports = index;
 | 
			
		||||
/***/ ((module) => {
 | 
			
		||||
 | 
			
		||||
"use strict";
 | 
			
		||||
module.exports = JSON.parse('{"name":"@actions/artifact","version":"2.1.11","preview":true,"description":"Actions artifact lib","keywords":["github","actions","artifact"],"homepage":"https://github.com/actions/toolkit/tree/main/packages/artifact","license":"MIT","main":"lib/artifact.js","types":"lib/artifact.d.ts","directories":{"lib":"lib","test":"__tests__"},"files":["lib","!.DS_Store"],"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/actions/toolkit.git","directory":"packages/artifact"},"scripts":{"audit-moderate":"npm install && npm audit --json --audit-level=moderate > audit.json","test":"cd ../../ && npm run test ./packages/artifact","bootstrap":"cd ../../ && npm run bootstrap","tsc-run":"tsc","tsc":"npm run bootstrap && npm run tsc-run","gen:docs":"typedoc --plugin typedoc-plugin-markdown --out docs/generated src/artifact.ts --githubPages false --readme none"},"bugs":{"url":"https://github.com/actions/toolkit/issues"},"dependencies":{"@actions/core":"^1.10.0","@actions/github":"^5.1.1","@actions/http-client":"^2.1.0","@azure/storage-blob":"^12.15.0","@octokit/core":"^3.5.1","@octokit/plugin-request-log":"^1.0.4","@octokit/plugin-retry":"^3.0.9","@octokit/request-error":"^5.0.0","@protobuf-ts/plugin":"^2.2.3-alpha.1","archiver":"^7.0.1","jwt-decode":"^3.1.2","twirp-ts":"^2.5.0","unzip-stream":"^0.3.1"},"devDependencies":{"@types/archiver":"^5.3.2","@types/unzip-stream":"^0.3.4","typedoc":"^0.25.4","typedoc-plugin-markdown":"^3.17.1","typescript":"^5.2.2"}}');
 | 
			
		||||
module.exports = JSON.parse('{"name":"@actions/artifact","version":"2.2.0","preview":true,"description":"Actions artifact lib","keywords":["github","actions","artifact"],"homepage":"https://github.com/actions/toolkit/tree/main/packages/artifact","license":"MIT","main":"lib/artifact.js","types":"lib/artifact.d.ts","directories":{"lib":"lib","test":"__tests__"},"files":["lib","!.DS_Store"],"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/actions/toolkit.git","directory":"packages/artifact"},"scripts":{"audit-moderate":"npm install && npm audit --json --audit-level=moderate > audit.json","test":"cd ../../ && npm run test ./packages/artifact","bootstrap":"cd ../../ && npm run bootstrap","tsc-run":"tsc","tsc":"npm run bootstrap && npm run tsc-run","gen:docs":"typedoc --plugin typedoc-plugin-markdown --out docs/generated src/artifact.ts --githubPages false --readme none"},"bugs":{"url":"https://github.com/actions/toolkit/issues"},"dependencies":{"@actions/core":"^1.10.0","@actions/github":"^5.1.1","@actions/http-client":"^2.1.0","@azure/storage-blob":"^12.15.0","@octokit/core":"^3.5.1","@octokit/plugin-request-log":"^1.0.4","@octokit/plugin-retry":"^3.0.9","@octokit/request-error":"^5.0.0","@protobuf-ts/plugin":"^2.2.3-alpha.1","archiver":"^7.0.1","jwt-decode":"^3.1.2","twirp-ts":"^2.5.0","unzip-stream":"^0.3.1"},"devDependencies":{"@types/archiver":"^5.3.2","@types/unzip-stream":"^0.3.4","typedoc":"^0.25.4","typedoc-plugin-markdown":"^3.17.1","typescript":"^5.2.2"}}');
 | 
			
		||||
 | 
			
		||||
/***/ }),
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -65,6 +65,7 @@ For most cases, this may not be the most efficient solution. See [the migration
 | 
			
		||||
| - | - | - |
 | 
			
		||||
| `artifact-id` | GitHub ID of an Artifact, can be used by the REST API | `1234` |
 | 
			
		||||
| `artifact-url` | URL to download an Artifact. Can be used in many scenarios such as linking to artifacts in issues or pull requests. Users must be logged-in in order for this URL to work. This URL is valid as long as the artifact has not expired or the artifact, run or repository have not been deleted | `https://github.com/example-org/example-repo/actions/runs/1/artifacts/1234` |
 | 
			
		||||
| `artifact-digest` | SHA-256 digest of an Artifact | 0fde654d4c6e659b45783a725dc92f1bfb0baa6c2de64b34e814dc206ff4aaaf |
 | 
			
		||||
 | 
			
		||||
## Examples
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -57,6 +57,9 @@ outputs:
 | 
			
		||||
 | 
			
		||||
      This URL will be valid for as long as the artifact exists and the workflow run and repository exists. Once an artifact has expired this URL will no longer work.
 | 
			
		||||
      Common uses cases for such a download URL can be adding download links to artifacts in descriptions or comments on pull requests or issues.
 | 
			
		||||
  artifact-digest:
 | 
			
		||||
    description: >
 | 
			
		||||
      SHA-256 digest for the artifact that was just uploaded. Empty if the artifact upload failed.
 | 
			
		||||
runs:
 | 
			
		||||
  using: 'node20'
 | 
			
		||||
  main: '../dist/merge/index.js'
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										4
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										4
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							@ -1,12 +1,12 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "upload-artifact",
 | 
			
		||||
  "version": "4.4.3",
 | 
			
		||||
  "version": "4.5.0",
 | 
			
		||||
  "lockfileVersion": 2,
 | 
			
		||||
  "requires": true,
 | 
			
		||||
  "packages": {
 | 
			
		||||
    "": {
 | 
			
		||||
      "name": "upload-artifact",
 | 
			
		||||
      "version": "4.4.3",
 | 
			
		||||
      "version": "4.5.0",
 | 
			
		||||
      "license": "MIT",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "@actions/artifact": "^2.2.0",
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "upload-artifact",
 | 
			
		||||
  "version": "4.4.3",
 | 
			
		||||
  "version": "4.5.0",
 | 
			
		||||
  "description": "Upload an Actions Artifact in a workflow run",
 | 
			
		||||
  "main": "dist/upload/index.js",
 | 
			
		||||
  "scripts": {
 | 
			
		||||
 | 
			
		||||
@ -19,6 +19,7 @@ export async function uploadArtifact(
 | 
			
		||||
    `Artifact ${artifactName} has been successfully uploaded! Final size is ${uploadResponse.size} bytes. Artifact ID is ${uploadResponse.id}`
 | 
			
		||||
  )
 | 
			
		||||
  core.setOutput('artifact-id', uploadResponse.id)
 | 
			
		||||
  core.setOutput('artifact-digest', uploadResponse.digest)
 | 
			
		||||
 | 
			
		||||
  const repository = github.context.repo
 | 
			
		||||
  const artifactURL = `${github.context.serverUrl}/${repository.owner}/${repository.repo}/actions/runs/${github.context.runId}/artifacts/${uploadResponse.id}`
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user