From 3d225d0def448c7c94d652e1484425048e3261b2 Mon Sep 17 00:00:00 2001 From: Ryan Albrecht Date: Thu, 14 Mar 2024 11:18:36 -0700 Subject: [PATCH 01/17] wip: Deploy with GH Actions --- {.travis => .github}/credentials.tar.gz.enc | Bin .github/sentry-release.sh | 32 ++++++++++++ .github/workflows/deploy.yml | 51 ++++++++++++++++++++ .travis/sentry-release.sh | 2 +- 4 files changed, 84 insertions(+), 1 deletion(-) rename {.travis => .github}/credentials.tar.gz.enc (100%) create mode 100755 .github/sentry-release.sh create mode 100644 .github/workflows/deploy.yml diff --git a/.travis/credentials.tar.gz.enc b/.github/credentials.tar.gz.enc similarity index 100% rename from .travis/credentials.tar.gz.enc rename to .github/credentials.tar.gz.enc diff --git a/.github/sentry-release.sh b/.github/sentry-release.sh new file mode 100755 index 00000000..a89ef50f --- /dev/null +++ b/.github/sentry-release.sh @@ -0,0 +1,32 @@ +#!/bin/bash + +SOURCEMAPSIO_REPO=getsentry/sourcemaps.io + +if [ "${SENTRY_AUTH_TOKEN}" != "" ]; then + SENTRY_AUTH_TOKEN_PUBLIC="" +fi + +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 "GITHUB_SHA: ${GITHUB_SHA}" + +curl https://sentry.io/api/0/organizations/${SENTRY_ORG}/releases/ \ + -X POST \ + -H "Authorization: Bearer ${SENTRY_AUTH_TOKEN}" \ + -H 'Content-Type: application/json' \ + -d " +{ + \"version\": \"${GITHUB_SHA}\", + \"refs\": [{ + \"repository\":\"${SOURCEMAPSIO_REPO}\", + \"commit\":\"${GITHUB_SHA}\" + }], + \"projects\":[\"${SENTRY_SERVER_PROJECT}\", \"${SENTRY_CLIENT_PROJECT}\"] +}" diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 00000000..5f63f6e7 --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,51 @@ +name: deploy & test + +on: + push: + branches: + - master + pull_request: + +env: + NODE_OPTIONS: '--max-old-space-size=4096' + +jobs: + test: + runs-on: 'ubuntu-latest' + steps: + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - run: make test + + deploy: + if: github.ref == 'refs/heads/master' + needs: test + runs-on: 'ubuntu-latest' + steps: + - id: 'gcp-auth' + name: 'Authenticate with GCP' + uses: 'google-github-actions/auth@v2' + with: + workload_identity_provider: 'projects/123456789/locations/global/workloadIdentityPools/my-pool/providers/my-provider' + service_account: 'my-service-account@my-project.iam.gserviceaccount.com' + + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + + - id: 'deploy' + name: 'Deploy to GCP Cloud Functions' + run: | + # sudo apt-get install apt-transport-https ca-certificates gnupg curl + # curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/cloud.google.gpg + # echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list + # sudo apt-get update && sudo apt-get install google-cloud-cli + + # pip uninstall crcmod + # pip install --no-cache-dir -U crcmod + # pip install httplib2 + # openssl aes-256-cbc -K $encrypted_3108ac7e9a1f_key -iv $encrypted_3108ac7e9a1f_iv -in .github/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 + make deploy + .travis/sentry-release.sh diff --git a/.travis/sentry-release.sh b/.travis/sentry-release.sh index 6ea62267..30b3e286 100755 --- a/.travis/sentry-release.sh +++ b/.travis/sentry-release.sh @@ -29,4 +29,4 @@ curl https://sentry.io/api/0/organizations/${SENTRY_ORG}/releases/ \ \"commit\":\"${TRAVIS_COMMIT}\" }], \"projects\":[\"${SENTRY_SERVER_PROJECT}\", \"${SENTRY_CLIENT_PROJECT}\"] -}" \ No newline at end of file +}" From 0c81b5e56474b001b57889820fbe683920845f7d Mon Sep 17 00:00:00 2001 From: Ryan Albrecht Date: Thu, 14 Mar 2024 11:17:52 -0700 Subject: [PATCH 02/17] fix eslint version resolution --- Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 9c742d5f..5fcf963e 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) From d6d4052e685b21675814ef90c7cf0c2271346cd2 Mon Sep 17 00:00:00 2001 From: Ryan Albrecht Date: Thu, 14 Mar 2024 11:41:37 -0700 Subject: [PATCH 03/17] only need to create one release in sentry --- .github/sentry-release.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/sentry-release.sh b/.github/sentry-release.sh index a89ef50f..8d19ee42 100755 --- a/.github/sentry-release.sh +++ b/.github/sentry-release.sh @@ -12,7 +12,6 @@ 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 "GITHUB_SHA: ${GITHUB_SHA}" @@ -28,5 +27,5 @@ curl https://sentry.io/api/0/organizations/${SENTRY_ORG}/releases/ \ \"repository\":\"${SOURCEMAPSIO_REPO}\", \"commit\":\"${GITHUB_SHA}\" }], - \"projects\":[\"${SENTRY_SERVER_PROJECT}\", \"${SENTRY_CLIENT_PROJECT}\"] + \"projects\":[\"${SENTRY_CLIENT_PROJECT}\"] }" From 20799622aceba86995776fff9959741111009efd Mon Sep 17 00:00:00 2001 From: Ryan Albrecht Date: Thu, 14 Mar 2024 11:41:51 -0700 Subject: [PATCH 04/17] do deploy on all branches, to test --- .github/workflows/deploy.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 5f63f6e7..c7188eeb 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -17,7 +17,6 @@ jobs: - run: make test deploy: - if: github.ref == 'refs/heads/master' needs: test runs-on: 'ubuntu-latest' steps: From 39c82dcaa4f7c8defdeff550989dd79e7689954c Mon Sep 17 00:00:00 2001 From: Ryan Albrecht Date: Thu, 14 Mar 2024 13:07:24 -0700 Subject: [PATCH 05/17] use a base64 encoded service-key as a secret, and install gcloud manually --- .github/workflows/deploy.yml | 40 +++++++++++++++--------------------- README.md | 12 +++++++++++ 2 files changed, 29 insertions(+), 23 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index c7188eeb..085801d3 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -15,36 +15,30 @@ jobs: steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - run: make test - + deploy: needs: test runs-on: 'ubuntu-latest' steps: - - id: 'gcp-auth' + - id: gcp-auth name: 'Authenticate with GCP' - uses: 'google-github-actions/auth@v2' - with: - workload_identity_provider: 'projects/123456789/locations/global/workloadIdentityPools/my-pool/providers/my-provider' - service_account: 'my-service-account@my-project.iam.gserviceaccount.com' - - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + env: + SERVICE_KEY_BASE64: ${{ secrets.GCLOUD_SERVICE_KEY }} + run: | + sudo apt-get install apt-transport-https ca-certificates gnupg curl + curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/cloud.google.gpg + echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list + sudo apt-get update && sudo apt-get install google-cloud-cli - - id: 'deploy' + echo $SERVICE_KEY_BASE64 | base64 --decode > service-key.json + gcloud version + gcloud auth activate-service-account --key-file service-key.json + + - id: checkout + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + + - id: deploy name: 'Deploy to GCP Cloud Functions' run: | - # sudo apt-get install apt-transport-https ca-certificates gnupg curl - # curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/cloud.google.gpg - # echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list - # sudo apt-get update && sudo apt-get install google-cloud-cli - - # pip uninstall crcmod - # pip install --no-cache-dir -U crcmod - # pip install httplib2 - # openssl aes-256-cbc -K $encrypted_3108ac7e9a1f_key -iv $encrypted_3108ac7e9a1f_iv -in .github/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 make deploy .travis/sentry-release.sh diff --git a/README.md b/README.md index 862f328e..f9802742 100644 --- a/README.md +++ b/README.md @@ -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 ``` From b74c7b5cc588e0df7f6df79499fdb08d1b18d294 Mon Sep 17 00:00:00 2001 From: Ryan Albrecht Date: Thu, 14 Mar 2024 13:18:20 -0700 Subject: [PATCH 06/17] decode file first --- .github/workflows/deploy.yml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 085801d3..3ef8e39d 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -25,13 +25,14 @@ jobs: env: SERVICE_KEY_BASE64: ${{ secrets.GCLOUD_SERVICE_KEY }} run: | - sudo apt-get install apt-transport-https ca-certificates gnupg curl + echo $SERVICE_KEY_BASE64 | base64 --decode > service-key.json + + sudo apt-get install -y apt-transport-https ca-certificates gnupg curl curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/cloud.google.gpg echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list - sudo apt-get update && sudo apt-get install google-cloud-cli - - echo $SERVICE_KEY_BASE64 | base64 --decode > service-key.json - gcloud version + sudo apt-get update -y && sudo apt-get install -y google-cloud-cli + + gcloud version || true gcloud auth activate-service-account --key-file service-key.json - id: checkout From fd7293d3efd34af8c7263ae81b1e12c8422a5a5e Mon Sep 17 00:00:00 2001 From: Ryan Albrecht Date: Thu, 14 Mar 2024 13:28:26 -0700 Subject: [PATCH 07/17] setup a test decode --- .github/workflows/deploy.yml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 3ef8e39d..4cd00dbf 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -19,15 +19,24 @@ jobs: deploy: needs: test runs-on: 'ubuntu-latest' + environment: 'gcp - project=sourcemapsio' steps: - id: gcp-auth name: 'Authenticate with GCP' env: SERVICE_KEY_BASE64: ${{ secrets.GCLOUD_SERVICE_KEY }} + TEST_STRING_BASE64: ${{ secrets.TEST_STRING }} run: | + set +x + + echo $TEST_STRING_BASE64 | base64 --decode > test_string.json + cat test_string.json + + set -x + echo $SERVICE_KEY_BASE64 | base64 --decode > service-key.json + cat service-key.json - sudo apt-get install -y apt-transport-https ca-certificates gnupg curl curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/cloud.google.gpg echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list sudo apt-get update -y && sudo apt-get install -y google-cloud-cli From 850f918ead4ed1c6a4a7add033bb2f5f5a281098 Mon Sep 17 00:00:00 2001 From: Ryan Albrecht Date: Thu, 14 Mar 2024 13:38:09 -0700 Subject: [PATCH 08/17] cleanup and try deploy --- .github/credentials.tar.gz.enc | Bin 2016 -> 0 bytes .github/workflows/deploy.yml | 10 +--------- .travis.yml | 33 --------------------------------- .travis/sentry-release.sh | 32 -------------------------------- 4 files changed, 1 insertion(+), 74 deletions(-) delete mode 100644 .github/credentials.tar.gz.enc delete mode 100644 .travis.yml delete mode 100755 .travis/sentry-release.sh diff --git a/.github/credentials.tar.gz.enc b/.github/credentials.tar.gz.enc deleted file mode 100644 index 5ff1923b6d1c5af19e9538f704a6d26c896c998c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2016 zcmV<62Os$VB%;!S0lZ(sfC7)YwF+<3JS+u7cAw&AI%Lbu=MJ!ip1|X5X5s&w2~xvC zSWr$|e0G-|20?a)oh<`$hq5h9g^K&i4a^ukOuNT9CxlXn@YfdBxkjwa-fh+6z@;f> z@8EA;9A+tJKF8}9n`COR^FtHlD0$b{D%C^jNqylwkR)KAK6 z7dm79tMO##91)*B>qzYi&6> zq(CAlaGFXAkLrqQ5p1}#CK+=!H99sk*3H%BC7r#PlLmugwzIl06$4R%lyDW`BPv=e zL(JZpEq`sm#gRfJ-lfM!HvQJ4cZOo}hW?r+H)e`0$m9@q)qAidRsw^*Xa71*6ZEq% zg)HHreeJz-jVBSc?UF}Eg9WZ_r^G~17q7Ztn%(S-x=8Wy+iF))PfN^_Y%lIMZdR zN3#V~!0j0A^-GFJ?h;zrIx3`~AfY(8A#tx`=_+e(fLbx~jgJgZZmpkbWVLP!aBEhru8_d`4!)Xl)co0= zUTqrag+x~3ahAM(^1vfCQ&x9 zi@)lzD$cs2-2u`f@3I8T2&z}4SD;OVb&?iK7W8g9ENFm-g5SeE@T%z{UY^!mm?<_$ zrW!E7Z^LIvKpU}3p@nnk0QrZ#>A#%>3Oe89oFM$0XKwngL+{ySk_^(tBkkJZCS|xT z(@NEjviYSmMv0uHQ1*IKR(3ExXbi8Ehgl5EsVX6y@b&`we8COOaKK%^U}uY9XM>9z zXtI=fW?Mb!J$Nny*q;zC`lxFCIR`zd6otM^{RP7DlZ?9GLQf@Z{dD$oS~MIgD!+sS zoFvfiO{ksqoH0U(pGQNu<&%iYbEMa2R#tdix8;fCB1!p(gbE2kpgn>pLTi;&VqEz) z>vmemdlb;bC2lA57){auoqr6gmz1xzdyen6lE&*cVHvbe4?smAeMDDovQZ<);aqv&FTx zV+iR`&G~a?O*(;A6p`keg0evDhxfIpFflCZKmv933XoU>k|Q&-pSe{X^y#>iAHZb5 zq<9RHcRoNT^!TIjIr#~i5(&-gWA923{;{Yxr!w>p>soX?k!X&IIT2OOeX)clH71Oc z3a#MQe!Fo`S<`Fq)l@q9O@DLWz0F3lO#!+cV*8~kWUw8`j3W^(s$w@xS{gXwdA+t6 zYhB-wVKH(b>}#JT5iIkSX+M8GV7}-GibowVJY1#*nF~|)N9}M8k&g^o9XP?Ziwb4f z_ktEZX5KsLB(A_~SZc$Eu+(}~osqt-hQ}M2QC$*HiCj2)D5$rB!(lyp8>XRtn1=&b z>?*7!AlFFThsf`bxT)BI0M1R!LEnrEuegZP}Apb%+xe`!|*2N3e@=4l8|RsD+8Lw zw!{hYb!D6`F}h=>hC}Kg4OyPt`s#DN!L=Y6n*9KD)1bv%ExA{MQqu^ z*`q{xU2|z~mp;@IX;i{exdf#_?()1sQa^#N2r4*-fZdEv4ayh5=m5pywJZ!*dG#Ul ze*cfnTx5ARnKCAthKdh`HU(oQSMGZm3yo|c#M}_WIeFjC9j_s2*X5aonpuko2@(Va zoE^&&c9Y&WV9;U=&pw{hlf^vf)r*uG+o)PVGIaAwJDt?ISwVX}WK;NwbvTM4jhBGE zHjHd4e7VLQVYF;$6I(go5@1AhQ|!L7v|k81Dvl@1ZGbgR&aV1#4PoHiwxVxr#{uqa z&OJ*oDRe^X@Huh0)&zpN$9u!a-eIr;<+@!O3u||yagecAbatv{v z17hgJLg7Ot8SqTdB>0>02V6mD7jBUu4Us)YBFs^5G+M-fTFe7RU|jQ7v}k4G9SA@6 zeG_+;!|G8h&2D%58;8Vn8kPRB!Ub-(>2b?4;l$nb%_ULwlxMG9J;UF50~AAk@ohWjMm=DYb(^h9 test_string.json - cat test_string.json - - set -x - echo $SERVICE_KEY_BASE64 | base64 --decode > service-key.json - cat service-key.json curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/cloud.google.gpg echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list @@ -51,4 +43,4 @@ jobs: name: 'Deploy to GCP Cloud Functions' run: | make deploy - .travis/sentry-release.sh + .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/sentry-release.sh b/.travis/sentry-release.sh deleted file mode 100755 index 30b3e286..00000000 --- a/.travis/sentry-release.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/bash - -SOURCEMAPSIO_REPO=getsentry/sourcemaps.io - -if [ "${SENTRY_AUTH_TOKEN}" != "" ]; then - SENTRY_AUTH_TOKEN_PUBLIC="" -fi - -if [ -z "${TRAVIS_COMMIT}" ]; then - TRAVIS_COMMIT=`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}" - -curl https://sentry.io/api/0/organizations/${SENTRY_ORG}/releases/ \ - -X POST \ - -H "Authorization: Bearer ${SENTRY_AUTH_TOKEN}" \ - -H 'Content-Type: application/json' \ - -d " -{ - \"version\": \"${TRAVIS_COMMIT}\", - \"refs\": [{ - \"repository\":\"${SOURCEMAPSIO_REPO}\", - \"commit\":\"${TRAVIS_COMMIT}\" - }], - \"projects\":[\"${SENTRY_SERVER_PROJECT}\", \"${SENTRY_CLIENT_PROJECT}\"] -}" From 08cf5e37729f1a185d99e14fa6e47690c561910d Mon Sep 17 00:00:00 2001 From: Ryan Albrecht Date: Thu, 14 Mar 2024 13:43:18 -0700 Subject: [PATCH 09/17] use google-github-actions/setup-gcloud instead of apt-get --- .github/workflows/deploy.yml | 19 +++++++++---------- README.md | 2 +- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 2bcf9c65..5e210265 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -21,19 +21,18 @@ jobs: runs-on: 'ubuntu-latest' environment: 'gcp - project=sourcemapsio' steps: - - id: gcp-auth - name: 'Authenticate with GCP' + - 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 }} - TEST_STRING_BASE64: ${{ secrets.TEST_STRING }} - run: | + run: | echo $SERVICE_KEY_BASE64 | base64 --decode > service-key.json - - curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/cloud.google.gpg - echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list - sudo apt-get update -y && sudo apt-get install -y google-cloud-cli - - gcloud version || true gcloud auth activate-service-account --key-file service-key.json - id: checkout diff --git a/README.md b/README.md index f9802742..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._ From 7a76cf7b8db5d4c1b709ae6d6b06d3e7e122d37c Mon Sep 17 00:00:00 2001 From: Ryan Albrecht Date: Thu, 14 Mar 2024 13:47:10 -0700 Subject: [PATCH 10/17] ref secrets --- .github/workflows/deploy.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 5e210265..05b88ca3 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -36,10 +36,21 @@ jobs: 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 From 4a6eddcfa019a59827e38bed745c33713e2e6009 Mon Sep 17 00:00:00 2001 From: Ryan Albrecht Date: Thu, 14 Mar 2024 13:50:45 -0700 Subject: [PATCH 11/17] use volta for ancient nodejs versions --- .github/workflows/deploy.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 05b88ca3..baef2671 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -39,6 +39,8 @@ jobs: name: Checkout uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - uses: getsentry/action-setup-volta@e4939d337b83760d13a9d7030a6f68c9d0ee7581 # v2.0.0 + - id: deploy name: 'Deploy to GCP Cloud Functions' env: From 6d656918d7b8f3a404cb4ac8e7eb03811bfb1add Mon Sep 17 00:00:00 2001 From: Ryan Albrecht Date: Thu, 14 Mar 2024 13:51:20 -0700 Subject: [PATCH 12/17] skip tests while iterating --- .github/workflows/deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index baef2671..d7259e5c 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -17,7 +17,7 @@ jobs: - run: make test deploy: - needs: test + # needs: test runs-on: 'ubuntu-latest' environment: 'gcp - project=sourcemapsio' steps: From be425017688b19b6f484f940b43a367584631ed2 Mon Sep 17 00:00:00 2001 From: Ryan Albrecht Date: Thu, 14 Mar 2024 13:53:25 -0700 Subject: [PATCH 13/17] another way to install volta --- .github/workflows/deploy.yml | 5 +++-- package.json | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index d7259e5c..a2680033 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -18,6 +18,7 @@ jobs: deploy: # needs: test + # if: github.ref == 'refs/heads/master' runs-on: 'ubuntu-latest' environment: 'gcp - project=sourcemapsio' steps: @@ -39,8 +40,6 @@ jobs: name: Checkout uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: getsentry/action-setup-volta@e4939d337b83760d13a9d7030a6f68c9d0ee7581 # v2.0.0 - - id: deploy name: 'Deploy to GCP Cloud Functions' env: @@ -54,5 +53,7 @@ jobs: SENTRY_DSN: ${{ secrets.SENTRY_DSN }} SENTRY_ORG: ${{ secrets.SENTRY_ORG }} run: | + curl https://get.volta.sh | bash + volta setup make deploy .github/sentry-release.sh diff --git a/package.json b/package.json index 16757aa4..caf87b4a 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "singleQuote": true }, "engines": { - "node": "16.14.2" + "node": ">=16.14.2" }, "volta": { "node": "16.14.2", From 8d4378519e826395bcf5c67475cdc240355fc799 Mon Sep 17 00:00:00 2001 From: Ryan Albrecht Date: Thu, 14 Mar 2024 13:58:59 -0700 Subject: [PATCH 14/17] forget volta --- .github/workflows/deploy.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index a2680033..e4f668c5 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -32,7 +32,7 @@ jobs: name: 'Auth gcloud' env: SERVICE_KEY_BASE64: ${{ secrets.GCLOUD_SERVICE_KEY }} - run: | + run: | echo $SERVICE_KEY_BASE64 | base64 --decode > service-key.json gcloud auth activate-service-account --key-file service-key.json @@ -42,7 +42,7 @@ jobs: - id: deploy name: 'Deploy to GCP Cloud Functions' - env: + env: GCLOUD_APP_BUCKET: ${{ secrets.GCLOUD_APP_BUCKET }} GCLOUD_DATA_BUCKET: ${{ secrets.GCLOUD_DATA_BUCKET }} GCLOUD_PROJECT: ${{ secrets.GCLOUD_PROJECT }} @@ -53,7 +53,5 @@ jobs: SENTRY_DSN: ${{ secrets.SENTRY_DSN }} SENTRY_ORG: ${{ secrets.SENTRY_ORG }} run: | - curl https://get.volta.sh | bash - volta setup make deploy .github/sentry-release.sh From 3260d85cff02b34dbf6809da243808bbc29a4d4f Mon Sep 17 00:00:00 2001 From: Ryan Albrecht Date: Thu, 14 Mar 2024 14:01:23 -0700 Subject: [PATCH 15/17] bump node version --- client/package-lock.json | 3 ++- client/package.json | 3 ++- package-lock.json | 3 ++- package.json | 3 ++- server/package-lock.json | 3 ++- server/package.json | 3 ++- 6 files changed, 12 insertions(+), 6 deletions(-) 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 caf87b4a..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", From a108f48305f01063fa72de88cf3d8f12e611a431 Mon Sep 17 00:00:00 2001 From: Ryan Albrecht Date: Thu, 14 Mar 2024 14:21:31 -0700 Subject: [PATCH 16/17] enable openssl-legacy-provider --- .github/workflows/deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index e4f668c5..6eb137ae 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -7,7 +7,7 @@ on: pull_request: env: - NODE_OPTIONS: '--max-old-space-size=4096' + NODE_OPTIONS: '--max-old-space-size=4096 --openssl-legacy-provider' jobs: test: From b5ee0612500d1c72e380acb1b1dc86e3f97fe24a Mon Sep 17 00:00:00 2001 From: Ryan Albrecht Date: Thu, 14 Mar 2024 14:36:13 -0700 Subject: [PATCH 17/17] deploy to node 18 --- Makefile | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 5fcf963e..b9d8133c 100644 --- a/Makefile +++ b/Makefile @@ -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