Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,8 @@ Add plugin config to your `config/deploy.js`:
'sentry-cli': {
appName: 'sentry-app-name',
orgName: 'sentry-org-name',
authToken: process.env.SENTRY_AUTH_TOKEN
authToken: process.env.SENTRY_AUTH_TOKEN,
urlPrefix: '', // if you need prefix for Sentry to catch like ~/assets
// url: 'https://your-custom-sentry-server.test/` // in case of self-hosted server
}
}
Expand Down
3 changes: 2 additions & 1 deletion index.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ module.exports = {
didPrepare() {
const releaseName = `${this.readConfig('appName')}@${this.readConfig('revisionKey')}`;
const assetsDir = this.readConfig('assetsDir');
const urlPrefix = this.readConfig('urlPrefix') ? `--url-prefix ${this.readConfig('urlPrefix')}` : '';

this.log('SENTRY: Creating release...');
this.sentryCliExec('releases', `new ${releaseName}`);
Expand All @@ -41,7 +42,7 @@ module.exports = {
this.sentryCliExec('releases', `set-commits --auto ${releaseName}`);

this.log('SENTRY: Uploading source maps...');
this.sentryCliExec('releases', `files ${releaseName} upload-sourcemaps --rewrite ${assetsDir}`);
this.sentryCliExec('releases', `files ${releaseName} upload-sourcemaps --rewrite ${assetsDir} ${urlPrefix}`);

this.log('SENTRY: Finalizing release...');
this.sentryCliExec('releases', `finalize ${releaseName}`);
Expand Down
16 changes: 15 additions & 1 deletion tests/unit/index-nodetest.js
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,21 @@ describe('sentry-cli', function() {
plugin.didPrepare();

this.sinon.assert.calledWithExactly(stub,
`${path.join('node_modules', '.bin', 'sentry-cli')} --auth-token my-auth-token releases --org my-org --project my-project files my-project@v1.0.0@1234567 upload-sourcemaps --rewrite ${path.join('my-dest-dir', 'assets')}`);
`${path.join('node_modules', '.bin', 'sentry-cli')} --auth-token my-auth-token releases --org my-org --project my-project files my-project@v1.0.0@1234567 upload-sourcemaps --rewrite ${path.join('my-dest-dir', 'assets')} `);
});

it('uploads source maps with --url-prefix', function() {
const plugin = Plugin.createDeployPlugin({ name: 'sentry-cli' });
const stub = this.sinon.stub(plugin, '_exec');

this.context.config['sentry-cli'].urlPrefix = '~/assets';

plugin.beforeHook(this.context);
plugin.configure(this.context);
plugin.didPrepare();

this.sinon.assert.calledWithExactly(stub,
`${path.join('node_modules', '.bin', 'sentry-cli')} --auth-token my-auth-token releases --org my-org --project my-project files my-project@v1.0.0@1234567 upload-sourcemaps --rewrite ${path.join('my-dest-dir', 'assets')} --url-prefix ~/assets`);
});

it('saves release', function() {
Expand Down