项目作者: getsentry

项目描述 :
Web-based Source Map validator
高级语言: TypeScript
项目地址: git://github.com/getsentry/sourcemaps.io.git
创建时间: 2017-07-11T06:33:38Z
项目社区:https://github.com/getsentry/sourcemaps.io

开源协议:Apache License 2.0

下载


sourcemaps.io deploy & test

A re-write of sourcemap-validator using React, Node, and Google Cloud Functions.

image

sourcemaps.io is a web application that takes a URL for a target transpiled/minified JavaScript file (e.g. https://example.com/js/app.min.js), and verifies:

  • sourceMappingURL or [X-]SourceMap header is present
  • Both the transpiled/minified file and source map file are reachable via HTTP
  • The resolved source map is valid JSON, and parses using Mozilla’s source-map library
  • Lines and columns line up as expected
  • … and more, see tests

Development

Run tests

  1. make test

Run a local server for client (React) development

  1. make client-server

Run a local server for backend development

A local development server will serve the validation function for development.

  1. make backend-server

NOTE: Right now the local server still writes JSON reports to a production Google Cloud Storage bucket. You must have the following shell variables exported (see Deploy to Google Cloud Platform below).

  1. export GCLOUD_PROJECT=myproject-server
  2. export GCLOUD_DATA_BUCKET=myproject-reports
  3. make backend-server

Deploy to Google Cloud Platform

This repository is already configured to automatically deploy to https://sourcemaps.io. But for posterity, this documents how to configure your own Google Cloud deployment environment and how to use the deploy scripts.

Configure your Project

  1. Create a new project in Google Cloud Platform, e.g. myproject
  2. Enable Cloud Functions
  3. Create 3 buckets in Cloud Storage, for:
    1. staging the cloud function (e.g. myproject-server)
    2. storing report data (e.g. myproject-reports)
    3. storing static web content (e.g. myproject-web)

NOTE: Your deployed cloud function must be configured to use Cloud Functions Node 10 runtime (or newer).

Install the gcloud CLI

Follow Google Cloud’s instructions for installing the gcloud CLI.

Deploying

First authenticate with Google Cloud Platform:

  1. gcloud auth login

Then initiate the deploy:

  1. # Used for deploy
  2. export GCLOUD_PROJECT=myproject
  3. export GCLOUD_APP_BUCKET=myproject-server
  4. export GCLOUD_DATA_BUCKET=myproject-reports
  5. export GCLOUD_WWW_BUCKET=myproject-web
  6. export GCLOUD_SERVICE_KEY=<base64 encoded service-key json object>
  7. # Used for creating a new release in your sentry instance:
  8. export SENTRY_AUTH_TOKEN=sntrys_abcxyz
  9. export SENTRY_CLIENT_PROJECT=MY-PROJECT
  10. export SENTRY_ORG=MY-ORG
  11. make deploy

NOTE: The deploy script will set READ permissions on GCLOUD_DATA_BUCKET and GCLOUD_WWW_BUCKET.

Invoking the Serverless Function

The deployed serverless function is publicly accessible over HTTP. To trigger the function manually, do:

  1. $ curl -X GET "https://${region}-${GCLOUD_PROJECT}.cloudfunctions.net/validateSourceFile?url=http://example.org/static/app.js"