diff --git a/RELEASES.md b/RELEASES.md index dc3901f..201b1a8 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -36,4 +36,7 @@ ### 1.0.6 - Make caching more verbose [#650](https://github.com/actions/toolkit/pull/650) -- Use GNU tar on macOS if available [#701](https://github.com/actions/toolkit/pull/701) \ No newline at end of file +- Use GNU tar on macOS if available [#701](https://github.com/actions/toolkit/pull/701) + +### 1.0.7 +- Fixes permissions issue extracting archives with GNU tar on macOS ([issue](https://github.com/actions/cache/issues/527)) diff --git a/__tests__/tar.test.ts b/__tests__/tar.test.ts index 3f7a1b3..fa81af9 100644 --- a/__tests__/tar.test.ts +++ b/__tests__/tar.test.ts @@ -11,6 +11,7 @@ jest.mock('@actions/exec') jest.mock('@actions/io') const IS_WINDOWS = process.platform === 'win32' +const IS_MAC = process.platform === 'darwin' const defaultTarPath = process.platform === 'darwin' ? 'gtar' : 'tar' @@ -55,7 +56,9 @@ test('zstd extract tar', async () => { '-P', '-C', IS_WINDOWS ? workspace?.replace(/\\/g, '/') : workspace - ].concat(IS_WINDOWS ? ['--force-local'] : []), + ] + .concat(IS_WINDOWS ? ['--force-local'] : []) + .concat(IS_MAC ? ['--delay-directory-restore'] : []), {cwd: undefined} ) }) @@ -84,7 +87,7 @@ test('gzip extract tar', async () => { '-P', '-C', IS_WINDOWS ? workspace?.replace(/\\/g, '/') : workspace - ], + ].concat(IS_MAC ? ['--delay-directory-restore'] : []), {cwd: undefined} ) }) @@ -145,7 +148,9 @@ test('zstd create tar', async () => { IS_WINDOWS ? workspace?.replace(/\\/g, '/') : workspace, '--files-from', 'manifest.txt' - ].concat(IS_WINDOWS ? ['--force-local'] : []), + ] + .concat(IS_WINDOWS ? ['--force-local'] : []) + .concat(IS_MAC ? ['--delay-directory-restore'] : []), { cwd: archiveFolder } @@ -180,7 +185,7 @@ test('gzip create tar', async () => { IS_WINDOWS ? workspace?.replace(/\\/g, '/') : workspace, '--files-from', 'manifest.txt' - ], + ].concat(IS_MAC ? ['--delay-directory-restore'] : []), { cwd: archiveFolder } @@ -205,7 +210,9 @@ test('zstd list tar', async () => { '-tf', IS_WINDOWS ? archivePath.replace(/\\/g, '/') : archivePath, '-P' - ].concat(IS_WINDOWS ? ['--force-local'] : []), + ] + .concat(IS_WINDOWS ? ['--force-local'] : []) + .concat(IS_MAC ? ['--delay-directory-restore'] : []), {cwd: undefined} ) }) @@ -228,7 +235,9 @@ test('zstdWithoutLong list tar', async () => { '-tf', IS_WINDOWS ? archivePath.replace(/\\/g, '/') : archivePath, '-P' - ].concat(IS_WINDOWS ? ['--force-local'] : []), + ] + .concat(IS_WINDOWS ? ['--force-local'] : []) + .concat(IS_MAC ? ['--delay-directory-restore'] : []), {cwd: undefined} ) }) @@ -252,7 +261,7 @@ test('gzip list tar', async () => { '-tf', IS_WINDOWS ? archivePath.replace(/\\/g, '/') : archivePath, '-P' - ], + ].concat(IS_MAC ? ['--delay-directory-restore'] : []), {cwd: undefined} ) }) diff --git a/package-lock.json b/package-lock.json index ab00414..a1a9f8d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "@actions/cache", - "version": "1.0.6", + "version": "1.0.7", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 62dd2be..7b03e2f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@actions/cache", - "version": "1.0.6", + "version": "1.0.7", "preview": true, "description": "Actions cache lib", "keywords": [ diff --git a/src/internal/tar.ts b/src/internal/tar.ts index 1b70dac..fbea7c2 100644 --- a/src/internal/tar.ts +++ b/src/internal/tar.ts @@ -26,6 +26,8 @@ async function getTarPath( case 'darwin': { const gnuTar = await io.which('gtar', false) if (gnuTar) { + // fix permission denied errors when extracting BSD tar archive with GNU tar - https://github.com/actions/cache/issues/527 + args.push('--delay-directory-restore') return gnuTar } break