feat: Add option to set dist on sourcemaps (#125)

Adds support for `dist` as input value for GitHub Action:

```yaml
    - uses: getsentry/action-release@v1
      with:
        environment: 'production'
        sourcemaps: './lib'
        dist: ${{ github.sha }}
```

Note that this repo uses `@sentry/cli@^1.67.2` and there is a related fix in `2.3.1`:

> fix: move dist option to SentryCliUploadSourceMapsOptions (#1269) by @ikenfin
> [changelog](https://github.com/getsentry/sentry-cli/blob/master/CHANGELOG.md#231)

The fix was to move the `dist` option from being under `SentryCliOptions` (incorrect) to be under `SentryCliUploadSourceMapsOptions` (correct)

This does not affect the GH action as those types are not referenced directly by the action.

Resolves getsentry/action-release#74

---------

Co-authored-by: Armen Zambrano G <[email protected]>
This commit is contained in:
Tanya Gray
2023-04-04 12:57:46 -04:00
committed by GitHub
co-authored by Armen Zambrano G
parent 586b62368d
commit 455699b451
5 changed files with 36 additions and 0 deletions
+2
View File
@@ -62,6 +62,7 @@ Adding the following to your workflow will create a new Sentry release and tell
|`ignore_missing`|When the flag is set and the previous release commit was not found in the repository, will create a release with the default commits count instead of failing the command.|`false`|
|`ignore_empty`|When the flag is set, command will not fail and just exit silently if no new commits for a given release have been found.|`false`|
|`sourcemaps`|Space-separated list of paths to JavaScript sourcemaps. Omit to skip uploading sourcemaps.|-|
|`dist`|Unique identifier for the distribution, used to further segment your release. Usually your build number. _Note: Required when uploading sourcemaps._|-|
|`started_at`|Unix timestamp of the release start date. Omit for current time.|-|
|`version`|Identifier that uniquely identifies the releases. _Note: the `refs/tags/` prefix is automatically stripped when `version` is `github.ref`._|<code>${{&nbsp;github.sha&nbsp;}}</code>|
|`version_prefix`|Value prepended to auto-generated version. For example "v".|-|
@@ -80,6 +81,7 @@ Adding the following to your workflow will create a new Sentry release and tell
with:
environment: 'production'
sourcemaps: './lib'
dist: ${{ github.sha }}
```
- Create a new Sentry release for the `production` environment of your project at version `v1.0.1`.
+16
View File
@@ -3,6 +3,7 @@ import * as path from 'path';
import * as process from 'process';
import {
getBooleanOption,
getDist,
getSourcemaps,
getStartedAt,
getVersion,
@@ -66,6 +67,21 @@ describe('options', () => {
});
});
describe('getDist', () => {
afterEach(() => {
delete process.env['INPUT_DIST'];
});
test('should return null when dist is omitted', async () => {
expect(getDist()).toBeNull();
});
test('should return a string when dist is provided', () => {
process.env['INPUT_DIST'] = 'foo-dist';
expect(getDist()).toEqual('foo-dist');
});
});
describe('getStartedAt', () => {
const errorMessage =
'started_at not in valid format. Unix timestamp or ISO 8601 date expected';
+3
View File
@@ -8,6 +8,9 @@ inputs:
sourcemaps:
description: 'Space-separated list of paths to JavaScript sourcemaps. Omit to skip uploading sourcemaps.'
required: false
dist:
description: 'Unique identifier for the distribution, used to further segment your release. Usually your build number.'
required: false
finalize:
description: 'When false, omit marking the release as finalized and released.'
default: true
+2
View File
@@ -12,6 +12,7 @@ import * as process from 'process';
const environment = options.getEnvironment();
const sourcemaps = options.getSourcemaps();
const dist = options.getDist();
const shouldFinalize = options.getBooleanOption('finalize', true);
const ignoreMissing = options.getBooleanOption('ignore_missing', false);
const ignoreEmpty = options.getBooleanOption('ignore_empty', false);
@@ -52,6 +53,7 @@ import * as process from 'process';
const sourceMapOptions = {
include: sourcemaps,
projects: localProjects,
dist,
urlPrefix,
stripCommonPrefix,
};
+13
View File
@@ -81,6 +81,19 @@ export const getSourcemaps = (): string[] => {
return sourcemapsOption.split(' ');
};
/**
* Dist is optional, but should be a string when provided.
* @returns string
*/
export const getDist = (): string | null => {
const distOption: string = core.getInput('dist');
if (!distOption) {
return null;
}
return distOption;
};
/**
* Fetch boolean option from input. Throws error if option value is not a boolean.
* @param input string