From c09b0e909589cd05e04b1b92c141d47c6e48b03f Mon Sep 17 00:00:00 2001 From: Katerina Skroumpelou Date: Fri, 18 Jul 2025 14:57:16 +0300 Subject: [PATCH 1/6] chore: add katerina to humans.txt (#37296) --- apps/docs/public/humans.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/docs/public/humans.txt b/apps/docs/public/humans.txt index 604be8a1f41af..fdd236e51a019 100644 --- a/apps/docs/public/humans.txt +++ b/apps/docs/public/humans.txt @@ -64,6 +64,7 @@ Kamil Ogórek Kang Ming Tay Karan S Karlo Ison +Katerina Skroumpelou Kevin Brolly Kevin Grüneberg Lakshan Perera From ac6b1b94e5321804d5e95a433b4c2071a9ba6b31 Mon Sep 17 00:00:00 2001 From: Jordi Enric <37541088+jordienr@users.noreply.github.com> Date: Fri, 18 Jul 2025 14:39:48 +0200 Subject: [PATCH 2/6] add e2e test action (#37293) --- .github/workflows/studio-e2e-test.yml | 93 +++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 .github/workflows/studio-e2e-test.yml diff --git a/.github/workflows/studio-e2e-test.yml b/.github/workflows/studio-e2e-test.yml new file mode 100644 index 0000000000000..1403a3814943e --- /dev/null +++ b/.github/workflows/studio-e2e-test.yml @@ -0,0 +1,93 @@ +name: Studio E2E Tests +on: + push: + branches: [master] + paths: + - 'packages/pg-meta/**/*' + - 'apps/studio/**' + - 'e2e/studio/**' + - 'pnpm-lock.yaml' + pull_request: + paths: + - 'packages/pg-meta/**/*' + - 'apps/studio/**' + - 'e2e/studio/**' + - 'pnpm-lock.yaml' + - '.github/workflows/studio-e2e-test.yml' + +# Cancel old builds on new commit for same workflow + branch/PR +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + +permissions: + contents: write + +jobs: + test: + timeout-minutes: 60 + runs-on: ubuntu-latest + # Make the job non-blocking + continue-on-error: true + # Require approval only for external contributors + environment: ${{ github.event.pull_request.author_association != 'MEMBER' && 'Studio E2E Tests' || '' }} + + env: + EMAIL: ${{ secrets.CI_EMAIL }} + PASSWORD: ${{ secrets.CI_PASSWORD }} + PROJECT_REF: ${{ secrets.CI_PROJECT_REF }} + NEXT_PUBLIC_IS_PLATFORM: true + NEXT_PUBLIC_API_URL: https://api.supabase.green + VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }} + VERCEL_PROJECT_ID: ${{ secrets.VERCEL_STUDIO_HOSTED_PROJECT_ID }} + NEXT_PUBLIC_HCAPTCHA_SITE_KEY: 10000000-ffff-ffff-ffff-000000000001 + + steps: + - uses: actions/checkout@v4 + - uses: pnpm/action-setup@v4 + name: Install pnpm + with: + run_install: false + - name: Use Node.js + uses: actions/setup-node@v4 + with: + node-version-file: '.nvmrc' + cache: 'pnpm' + + - name: Install dependencies + run: pnpm i + + - name: Install Vercel CLI + run: pnpm add --global vercel@latest + + - name: Pull Vercel Environment Information (Preview) + run: vercel pull --yes --environment=preview --token=${{ secrets.VERCEL_TOKEN }} + + - name: Build Project Artifacts for Vercel + run: vercel build --token=${{ secrets.VERCEL_TOKEN }} + + - name: Deploy Project to Vercel and Get URL + id: deploy_vercel + run: | + DEPLOY_URL=$(vercel deploy --prebuilt --token=${{ secrets.VERCEL_TOKEN }}) + echo "Vercel Preview URL: $DEPLOY_URL" + echo "DEPLOY_URL=$DEPLOY_URL" >> $GITHUB_OUTPUT + + - name: Install Playwright Browsers + run: pnpm -C e2e/studio exec playwright install --with-deps + + - name: Run Playwright tests + id: playwright + env: + AUTHENTICATION: true + STUDIO_URL: ${{ steps.deploy_vercel.outputs.DEPLOY_URL }}/dashboard + run: pnpm e2e + + - uses: actions/upload-artifact@v4 + if: always() + with: + name: playwright-artifacts + path: | + e2e/studio/playwright-report/ + e2e/studio/test-results/ + retention-days: 7 From c0af945545148a8c48d9d58bc56cd3b76caaa505 Mon Sep 17 00:00:00 2001 From: Francesco Sansalvadore Date: Fri, 18 Jul 2025 15:56:18 +0200 Subject: [PATCH 3/6] d5 (#37297) * d5 init * add blog post, og and thumb * update thumb * blog post link * update text * video id --------- Co-authored-by: Inian --- ...tent-storage-for-faster-edge-functions.mdx | 153 ++++++++++++++++++ apps/www/components/Hero/Hero.tsx | 7 +- .../LaunchWeek/15/LW15MainStage.tsx | 2 +- .../LaunchWeek/15/data/lw15_data.tsx | 32 ++-- .../og.png | Bin 0 -> 176618 bytes .../thumb.png | Bin 0 -> 64005 bytes apps/www/public/rss.xml | 37 +++-- packages/ui-patterns/src/Banners/data.json | 4 +- 8 files changed, 200 insertions(+), 35 deletions(-) create mode 100644 apps/www/_blog/2025-07-18-persistent-storage-for-faster-edge-functions.mdx create mode 100644 apps/www/public/images/blog/launch-week-15/day-5-persistent-storage-for-functions/og.png create mode 100644 apps/www/public/images/blog/launch-week-15/day-5-persistent-storage-for-functions/thumb.png diff --git a/apps/www/_blog/2025-07-18-persistent-storage-for-faster-edge-functions.mdx b/apps/www/_blog/2025-07-18-persistent-storage-for-faster-edge-functions.mdx new file mode 100644 index 0000000000000..ad80a67b047fc --- /dev/null +++ b/apps/www/_blog/2025-07-18-persistent-storage-for-faster-edge-functions.mdx @@ -0,0 +1,153 @@ +--- +title: 'Persistent Storage and 97% Faster Cold Starts for Edge Functions' +description: 'Mount S3-compatible buckets as persistent file storage in Edge Functions with up to 97% faster cold start times.' +categories: + - product + - launch-week + - edge-functions +tags: + - launch-week + - edge-functions + - storage +date: '2025-07-18:00:00' +toc_depth: 3 +author: laktek,nyannyacha +image: launch-week-15/day-5-persistent-storage-for-functions/og.jpg +thumb: launch-week-15/day-5-persistent-storage-for-functions/thumb.png +launchweek: '15' +--- + +Today, we are introducing Persistent Storage and up to 97% faster cold start times for Edge Functions. Previously, Edge Functions only supported ephemeral file storage by writing to `/tmp` directory. Many common libraries for performing tasks, such as zipping/unzipping files and image transformations, are built to work with persistent file storage, so making them work with Edge Functions required extra steps. + +The persistent storage option is built on top of the S3 protocol. It allows you to mount any [S3-compatible bucket](https://supabase.com/docs/guides/storage/s3/compatibility), including [Supabase Storage Buckets](https://supabase.com/docs/guides/storage), as a directory for your Edge Functions. You can perform operations such as reading and writing files to the mounted buckets as you would in a POSIX file system. + +```tsx +// read from S3 bucket +const data = await Deno.readFile('/s3/my-bucket/results.csv') + +// make a directory +await Deno.mkdir('/s3/my-bucket/sub-dir') + +// write to S3 bucket +await Deno.writeTextFile('/s3/my-bucket/demo.txt', 'hello world') +``` + +
+