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:
co-authored by
Armen Zambrano G
parent
586b62368d
commit
455699b451
@@ -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>${{ github.sha }}</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`.
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
};
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user