diff --git a/.travis/sentry-release.sh b/.github/sentry-release.sh similarity index 64% rename from .travis/sentry-release.sh rename to .github/sentry-release.sh index 6ea62267..8d19ee42 100755 --- a/.travis/sentry-release.sh +++ b/.github/sentry-release.sh @@ -6,16 +6,15 @@ if [ "${SENTRY_AUTH_TOKEN}" != "" ]; then SENTRY_AUTH_TOKEN_PUBLIC="" fi -if [ -z "${TRAVIS_COMMIT}" ]; then - TRAVIS_COMMIT=`git rev-parse HEAD` +if [ -z "${GITHUB_SHA}" ]; then + GITHUB_SHA=$(git rev-parse HEAD) fi echo "SENTRY_ORG: ${SENTRY_ORG}" echo "SENTRY_AUTH_TOKEN: ${SENTRY_AUTH_TOKEN_PUBLIC}" -echo "SENTRY_SERVER_PROJECT: ${SENTRY_SERVER_PROJECT}" echo "SENTRY_CLIENT_PROJECT: ${SENTRY_CLIENT_PROJECT}" echo "SOURCEMAPSIO_REPO: ${SOURCEMAPSIO_REPO}" -echo "TRAVIS_COMMIT: ${TRAVIS_COMMIT}" +echo "GITHUB_SHA: ${GITHUB_SHA}" curl https://sentry.io/api/0/organizations/${SENTRY_ORG}/releases/ \ -X POST \ @@ -23,10 +22,10 @@ curl https://sentry.io/api/0/organizations/${SENTRY_ORG}/releases/ \ -H 'Content-Type: application/json' \ -d " { - \"version\": \"${TRAVIS_COMMIT}\", + \"version\": \"${GITHUB_SHA}\", \"refs\": [{ \"repository\":\"${SOURCEMAPSIO_REPO}\", - \"commit\":\"${TRAVIS_COMMIT}\" + \"commit\":\"${GITHUB_SHA}\" }], - \"projects\":[\"${SENTRY_SERVER_PROJECT}\", \"${SENTRY_CLIENT_PROJECT}\"] -}" \ No newline at end of file + \"projects\":[\"${SENTRY_CLIENT_PROJECT}\"] +}" diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 00000000..6eb137ae --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,57 @@ +name: deploy & test + +on: + push: + branches: + - master + pull_request: + +env: + NODE_OPTIONS: '--max-old-space-size=4096 --openssl-legacy-provider' + +jobs: + test: + runs-on: 'ubuntu-latest' + steps: + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - run: make test + + deploy: + # needs: test + # if: github.ref == 'refs/heads/master' + runs-on: 'ubuntu-latest' + environment: 'gcp - project=sourcemapsio' + steps: + - id: setup-gcloud + name: 'Setup gcloud' + uses: 'google-github-actions/setup-gcloud@v2' + with: + version: '>= 400.0.0' + + - id: auth-gcloud + name: 'Auth gcloud' + env: + SERVICE_KEY_BASE64: ${{ secrets.GCLOUD_SERVICE_KEY }} + run: | + echo $SERVICE_KEY_BASE64 | base64 --decode > service-key.json + gcloud auth activate-service-account --key-file service-key.json + + - id: checkout + name: Checkout + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + + - id: deploy + name: 'Deploy to GCP Cloud Functions' + env: + GCLOUD_APP_BUCKET: ${{ secrets.GCLOUD_APP_BUCKET }} + GCLOUD_DATA_BUCKET: ${{ secrets.GCLOUD_DATA_BUCKET }} + GCLOUD_PROJECT: ${{ secrets.GCLOUD_PROJECT }} + GCLOUD_WWW_BUCKET: ${{ secrets.GCLOUD_WWW_BUCKET }} + REACT_APP_SENTRY_DSN: ${{ vars.REACT_APP_SENTRY_DSN }} + SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} + SENTRY_CLIENT_PROJECT: ${{ secrets.SENTRY_CLIENT_PROJECT }} + SENTRY_DSN: ${{ secrets.SENTRY_DSN }} + SENTRY_ORG: ${{ secrets.SENTRY_ORG }} + run: | + make deploy + .github/sentry-release.sh diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 86af1ffd..00000000 --- a/.travis.yml +++ /dev/null @@ -1,33 +0,0 @@ -sudo: false -cache: - directories: - - node_modules - - "$HOME/google-cloud-sdk/" -jobs: - include: - - stage: test - language: node_js - script: - - make test - - stage: deploy - language: python - python: - - "3.8" - env: - - PATH=$PATH:${HOME}/google-cloud-sdk/bin - PYTHONPATH=${PYTHONPATH}:${GAE_PYTHONPATH} CLOUDSDK_CORE_DISABLE_PROMPTS=1 - before_install: - - pip uninstall crcmod - - pip install --no-cache-dir -U crcmod - - pip install httplib2 - - if [ "$TRAVIS_BRANCH" != "master" -o "$TRAVIS_PULL_REQUEST" != "false" ]; then travis_terminate 0; fi - - openssl aes-256-cbc -K $encrypted_3108ac7e9a1f_key -iv $encrypted_3108ac7e9a1f_iv - -in .travis/credentials.tar.gz.enc -out credentials.tar.gz -d - - gcloud version || true - - if [ ! -d "$HOME/google-cloud-sdk/bin" ]; then rm -rf $HOME/google-cloud-sdk; curl https://sdk.cloud.google.com | bash; fi - - source /home/travis/google-cloud-sdk/path.bash.inc - - tar -xzf credentials.tar.gz - - gcloud auth activate-service-account --key-file client-secret.json - script: - - make deploy - - .travis/sentry-release.sh diff --git a/.travis/credentials.tar.gz.enc b/.travis/credentials.tar.gz.enc deleted file mode 100644 index 5ff1923b..00000000 Binary files a/.travis/credentials.tar.gz.enc and /dev/null differ diff --git a/Makefile b/Makefile index 9c742d5f..b9d8133c 100644 --- a/Makefile +++ b/Makefile @@ -22,9 +22,9 @@ test: test-install npm test test-install: echo-exports - npm install - npm install --prefix ./server - npm install --prefix ./client + npm install --legacy-peer-deps + npm install --legacy-peer-deps --prefix ./server + npm install --legacy-peer-deps --prefix ./client # Launch a local development server for working on the # React www app (points at deployed/production validation fn) @@ -73,8 +73,12 @@ deploy-data: deploy-config deploy-server: deploy-config npm install --prefix ./server npm run build - gcloud functions deploy ${GCLOUD_FN_NAME} --source server \ - --stage-bucket ${GCLOUD_APP_BUCKET} --trigger-http --verbosity debug + gcloud functions deploy ${GCLOUD_FN_NAME} \ + --source server \ + --stage-bucket ${GCLOUD_APP_BUCKET} \ + --trigger-http \ + --verbosity debug \ + --runtime nodejs18 # Deploy all deploy: build-www deploy-config deploy-server deploy-data deploy-www diff --git a/README.md b/README.md index 862f328e..fe60918e 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# sourcemaps.io [![Build Status](https://travis-ci.org/getsentry/sourcemaps.io.svg?branch=master)](https://travis-ci.org/getsentry/sourcemaps.io) +# sourcemaps.io [![deploy & test](https://github.com/getsentry/sourcemaps.io/actions/workflows/deploy.yml/badge.svg)](https://github.com/getsentry/sourcemaps.io/actions/workflows/deploy.yml) _A re-write of [sourcemap-validator](https://github.com/mattrobenolt/sourcemap-validator) using React, Node, and Google Cloud Functions._ @@ -73,10 +73,22 @@ gcloud auth login Then initiate the deploy: ```bash +# Used for deploy export GCLOUD_PROJECT=myproject export GCLOUD_APP_BUCKET=myproject-server export GCLOUD_DATA_BUCKET=myproject-reports export GCLOUD_WWW_BUCKET=myproject-web +export GCLOUD_SERVICE_KEY= + +# Used for reporting errors back to your sentry instance: +export REACT_APP_SENTRY_DSN=https://public@sentry.example.com/1 +export SENTRY_DSN=https://public@sentry.example.com/1 + +# Used for creating a new release in your sentry instance: +export SENTRY_AUTH_TOKEN=sntrys_abcxyz +export SENTRY_CLIENT_PROJECT=MY-PROJECT +export SENTRY_ORG=MY-ORG + make deploy ``` diff --git a/client/package-lock.json b/client/package-lock.json index 17bcb063..502bd7c8 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -22,7 +22,8 @@ "react-test-renderer": "^15.6.1" }, "engines": { - "node": "16.14.2" + "node": "18.19.1", + "npm": "10.2.4" } }, "node_modules/@babel/code-frame": { diff --git a/client/package.json b/client/package.json index c43d3ae0..77491974 100644 --- a/client/package.json +++ b/client/package.json @@ -36,7 +36,8 @@ ] }, "engines": { - "node": "16.14.2" + "node": "18.19.1", + "npm": "10.2.4" }, "volta": { "node": "16.14.2", diff --git a/package-lock.json b/package-lock.json index 7a789130..63f3ba39 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,7 +16,8 @@ "typescript": "^4.8.4" }, "engines": { - "node": "16.14.2" + "node": "18.19.1", + "npm": "10.2.4" } }, "node_modules/@ampproject/remapping": { diff --git a/package.json b/package.json index 16757aa4..e251c0f1 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,8 @@ "singleQuote": true }, "engines": { - "node": "16.14.2" + "node": "18.19.1", + "npm": "10.2.4" }, "volta": { "node": "16.14.2", diff --git a/server/package-lock.json b/server/package-lock.json index 0eb82c7f..9d925bd6 100644 --- a/server/package-lock.json +++ b/server/package-lock.json @@ -29,7 +29,8 @@ "uglify-js": "^3.7.2" }, "engines": { - "node": "16.14.2" + "node": "18.19.1", + "npm": "10.2.4" } }, "node_modules/@google-cloud/common": { diff --git a/server/package.json b/server/package.json index 462a0f6a..8cd827dd 100644 --- a/server/package.json +++ b/server/package.json @@ -30,7 +30,8 @@ "start": "npm run build && node dist/dev.js" }, "engines": { - "node": "16.14.2" + "node": "18.19.1", + "npm": "10.2.4" }, "volta": { "node": "16.14.2",