From 8a85ad5a24c8e0e25aa3b574f848b246b9e9d1c5 Mon Sep 17 00:00:00 2001 From: Guilherme Souza Date: Thu, 25 Sep 2025 05:56:09 -0300 Subject: [PATCH 01/18] chore: setup release-please --- .github/workflows/release-please.yml | 81 ++++++++++++++++++++++++++++ .release-please-manifest.json | 10 ++++ melos.yaml | 14 ++++- release-please-config.json | 76 ++++++++++++++++++++++++++ 4 files changed, 180 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/release-please.yml create mode 100644 .release-please-manifest.json create mode 100644 release-please-config.json diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml new file mode 100644 index 000000000..ef7046f3d --- /dev/null +++ b/.github/workflows/release-please.yml @@ -0,0 +1,81 @@ +name: Release Please + +on: + push: + branches: + - main + +permissions: + contents: write + pull-requests: write + +jobs: + release-please: + runs-on: ubuntu-latest + outputs: + releases_created: ${{ steps.release.outputs.releases_created }} + paths_released: ${{ steps.release.outputs.paths_released }} + steps: + - name: Release Please + id: release + uses: googleapis/release-please-action@v4 + with: + config-file: release-please-config.json + manifest-file: .release-please-manifest.json + token: ${{ secrets.GITHUB_TOKEN }} + + publish: + needs: release-please + if: needs.release-please.outputs.releases_created == 'true' + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Dart + uses: dart-lang/setup-dart@v1 + with: + sdk: stable + + - name: Setup Flutter + uses: subosito/flutter-action@v2 + with: + flutter-version: 'stable' + channel: 'stable' + + - name: Get Dart dependencies + run: dart pub global activate melos + + - name: Bootstrap workspace + run: melos bootstrap + + - name: Run version update hook + run: melos run update-version + + - name: Run tests + run: melos run test --no-select + + - name: Setup pub credentials + run: | + mkdir -p ~/.config/dart + cat < ~/.config/dart/pub-credentials.json + { + "accessToken":"${{ secrets.PUB_DEV_ACCESS_TOKEN }}", + "refreshToken":"${{ secrets.PUB_DEV_REFRESH_TOKEN }}", + "tokenEndpoint":"https://accounts.google.com/o/oauth2/token", + "scopes":["https://www.googleapis.com/auth/userinfo.email","openid"], + "expiration":${{ secrets.PUB_DEV_TOKEN_EXPIRATION }} + } + EOF + + - name: Publish packages + run: | + # Parse the released paths and publish each package + echo '${{ needs.release-please.outputs.paths_released }}' | jq -r '.[]' | while read -r path; do + echo "Publishing package in $path" + cd "$path" + if [ -f "pubspec.yaml" ]; then + dart pub publish --force + fi + cd - > /dev/null + done \ No newline at end of file diff --git a/.release-please-manifest.json b/.release-please-manifest.json new file mode 100644 index 000000000..37b77fec8 --- /dev/null +++ b/.release-please-manifest.json @@ -0,0 +1,10 @@ +{ + "packages/functions_client": "2.4.4", + "packages/gotrue": "2.15.0", + "packages/postgrest": "2.4.2", + "packages/realtime_client": "2.5.2", + "packages/storage_client": "2.4.1", + "packages/supabase": "2.9.1", + "packages/supabase_flutter": "2.10.1", + "packages/yet_another_json_isolate": "2.1.0" +} \ No newline at end of file diff --git a/melos.yaml b/melos.yaml index 2feb7757f..a23135ead 100644 --- a/melos.yaml +++ b/melos.yaml @@ -32,6 +32,12 @@ scripts: format: exec: dart format lib test -l 80 --set-exit-if-changed + test: + exec: dart test --concurrency=1 + description: Run tests for all packages + packageFilters: + dirExists: test + upgrade: exec: dart pub upgrade @@ -44,7 +50,7 @@ scripts: # Loop through the packages directory for d in packages/*/ ; do # Get version number - version=$(awk '/version:/ { + version=$(awk '/version:/ { pos=match($2, /[0-9]+\.[0-9]+\.[0-9]+/); print substr($2, pos); }' $d/pubspec.yaml) # Update version.dart file @@ -54,4 +60,10 @@ scripts: rm packages/yet_another_json_isolate/lib/src/version.dart # Stage the version.dart file change git add packages/*/lib/src/version.dart + + release:prepare: + description: Prepare packages for release by running tests and lints + run: | + melos run lint:all --no-select + melos run test --no-select \ No newline at end of file diff --git a/release-please-config.json b/release-please-config.json new file mode 100644 index 000000000..36a53323e --- /dev/null +++ b/release-please-config.json @@ -0,0 +1,76 @@ +{ + "release-type": "dart", + "bootstrap-sha": "ae2d12d0c8a1e2f3b4c5d6e7f8a9b0c1d2e3f4a5", + "packages": { + "packages/functions_client": { + "release-type": "dart", + "package-name": "functions_client", + "changelog-path": "CHANGELOG.md" + }, + "packages/gotrue": { + "release-type": "dart", + "package-name": "gotrue", + "changelog-path": "CHANGELOG.md" + }, + "packages/postgrest": { + "release-type": "dart", + "package-name": "postgrest", + "changelog-path": "CHANGELOG.md" + }, + "packages/realtime_client": { + "release-type": "dart", + "package-name": "realtime_client", + "changelog-path": "CHANGELOG.md" + }, + "packages/storage_client": { + "release-type": "dart", + "package-name": "storage_client", + "changelog-path": "CHANGELOG.md" + }, + "packages/supabase": { + "release-type": "dart", + "package-name": "supabase", + "changelog-path": "CHANGELOG.md" + }, + "packages/supabase_flutter": { + "release-type": "dart", + "package-name": "supabase_flutter", + "changelog-path": "CHANGELOG.md" + }, + "packages/yet_another_json_isolate": { + "release-type": "dart", + "package-name": "yet_another_json_isolate", + "changelog-path": "CHANGELOG.md" + } + }, + "plugins": [ + { + "type": "linked-versions", + "group-name": "supabase-flutter-packages", + "components": [ + "packages/functions_client", + "packages/gotrue", + "packages/postgrest", + "packages/realtime_client", + "packages/storage_client", + "packages/supabase", + "packages/supabase_flutter", + "packages/yet_another_json_isolate" + ] + } + ], + "group-pull-request-title-pattern": "chore(release): release ${version}", + "pull-request-title-pattern": "chore(${scope}): release ${version}", + "changelog-sections": [ + {"type": "feat", "section": "Features"}, + {"type": "fix", "section": "Bug Fixes"}, + {"type": "chore", "section": "Miscellaneous Chores", "hidden": false}, + {"type": "docs", "section": "Documentation"}, + {"type": "style", "section": "Styles", "hidden": true}, + {"type": "refactor", "section": "Code Refactoring"}, + {"type": "perf", "section": "Performance Improvements"}, + {"type": "test", "section": "Tests", "hidden": true}, + {"type": "build", "section": "Build System", "hidden": true}, + {"type": "ci", "section": "Continuous Integration", "hidden": true} + ] +} \ No newline at end of file From ae6466c2fc682f9474b46848dd820494a08dc64c Mon Sep 17 00:00:00 2001 From: Guilherme Souza Date: Thu, 25 Sep 2025 05:59:10 -0300 Subject: [PATCH 02/18] test --- .github/workflows/release-please.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml index ef7046f3d..7799df277 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yml @@ -4,6 +4,7 @@ on: push: branches: - main + - chore/setup-release-please permissions: contents: write @@ -20,6 +21,7 @@ jobs: id: release uses: googleapis/release-please-action@v4 with: + target-branch: ${{ github.ref_name }} config-file: release-please-config.json manifest-file: .release-please-manifest.json token: ${{ secrets.GITHUB_TOKEN }} From b64fe93d428c4be3d8882cdaef9161b311dada02 Mon Sep 17 00:00:00 2001 From: Guilherme Souza Date: Thu, 25 Sep 2025 06:10:27 -0300 Subject: [PATCH 03/18] chore: add extra files --- .github/workflows/release-please.yml | 8 +-- .../functions_client/lib/src/version.dart | 2 +- packages/gotrue/lib/src/version.dart | 2 +- packages/postgrest/lib/src/version.dart | 2 +- packages/realtime_client/lib/src/version.dart | 2 +- packages/storage_client/lib/src/version.dart | 2 +- packages/supabase/lib/src/version.dart | 2 +- .../supabase_flutter/lib/src/version.dart | 2 +- release-please-config.json | 49 +++++++++++-------- 9 files changed, 39 insertions(+), 32 deletions(-) diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml index 7799df277..f0cbc6235 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yml @@ -51,11 +51,11 @@ jobs: - name: Bootstrap workspace run: melos bootstrap - - name: Run version update hook - run: melos run update-version + # - name: Run version update hook + # run: melos run update-version - - name: Run tests - run: melos run test --no-select + # - name: Run tests + # run: melos run test --no-select - name: Setup pub credentials run: | diff --git a/packages/functions_client/lib/src/version.dart b/packages/functions_client/lib/src/version.dart index 871d973b7..dc28a9716 100644 --- a/packages/functions_client/lib/src/version.dart +++ b/packages/functions_client/lib/src/version.dart @@ -1 +1 @@ -const version = '2.4.4'; +const version = '2.4.4'; // {x-release-please-version} diff --git a/packages/gotrue/lib/src/version.dart b/packages/gotrue/lib/src/version.dart index d5586c43c..3a66b4738 100644 --- a/packages/gotrue/lib/src/version.dart +++ b/packages/gotrue/lib/src/version.dart @@ -1 +1 @@ -const version = '2.15.0'; +const version = '2.15.0'; // {x-release-please-version} diff --git a/packages/postgrest/lib/src/version.dart b/packages/postgrest/lib/src/version.dart index 36de6a3d4..7f3dca67a 100644 --- a/packages/postgrest/lib/src/version.dart +++ b/packages/postgrest/lib/src/version.dart @@ -1 +1 @@ -const version = '2.4.2'; +const version = '2.4.2'; // {x-release-please-version} diff --git a/packages/realtime_client/lib/src/version.dart b/packages/realtime_client/lib/src/version.dart index 70b4b7a26..f6ef61952 100644 --- a/packages/realtime_client/lib/src/version.dart +++ b/packages/realtime_client/lib/src/version.dart @@ -1 +1 @@ -const version = '2.5.2'; +const version = '2.5.2'; // {x-release-please-version} diff --git a/packages/storage_client/lib/src/version.dart b/packages/storage_client/lib/src/version.dart index b6a2119a6..3c797110d 100644 --- a/packages/storage_client/lib/src/version.dart +++ b/packages/storage_client/lib/src/version.dart @@ -1 +1 @@ -const version = '2.4.1'; +const version = '2.4.1'; // {x-release-please-version} diff --git a/packages/supabase/lib/src/version.dart b/packages/supabase/lib/src/version.dart index 62036484b..e8071d6c4 100644 --- a/packages/supabase/lib/src/version.dart +++ b/packages/supabase/lib/src/version.dart @@ -1 +1 @@ -const version = '2.9.1'; +const version = '2.9.1'; // {x-release-please-version} diff --git a/packages/supabase_flutter/lib/src/version.dart b/packages/supabase_flutter/lib/src/version.dart index 8aa34e9f8..02d5f3757 100644 --- a/packages/supabase_flutter/lib/src/version.dart +++ b/packages/supabase_flutter/lib/src/version.dart @@ -1 +1 @@ -const version = '2.10.1'; +const version = '2.10.1'; // {x-release-please-version} diff --git a/release-please-config.json b/release-please-config.json index 36a53323e..3e6386a38 100644 --- a/release-please-config.json +++ b/release-please-config.json @@ -5,37 +5,58 @@ "packages/functions_client": { "release-type": "dart", "package-name": "functions_client", - "changelog-path": "CHANGELOG.md" + "changelog-path": "CHANGELOG.md", + "extra-files": [ + "lib/src/version.dart" + ] }, "packages/gotrue": { "release-type": "dart", "package-name": "gotrue", - "changelog-path": "CHANGELOG.md" + "changelog-path": "CHANGELOG.md", + "extra-files": [ + "lib/src/version.dart" + ] }, "packages/postgrest": { "release-type": "dart", "package-name": "postgrest", - "changelog-path": "CHANGELOG.md" + "changelog-path": "CHANGELOG.md", + "extra-files": [ + "lib/src/version.dart" + ] }, "packages/realtime_client": { "release-type": "dart", "package-name": "realtime_client", - "changelog-path": "CHANGELOG.md" + "changelog-path": "CHANGELOG.md", + "extra-files": [ + "lib/src/version.dart" + ] }, "packages/storage_client": { "release-type": "dart", "package-name": "storage_client", - "changelog-path": "CHANGELOG.md" + "changelog-path": "CHANGELOG.md", + "extra-files": [ + "lib/src/version.dart" + ] }, "packages/supabase": { "release-type": "dart", "package-name": "supabase", - "changelog-path": "CHANGELOG.md" + "changelog-path": "CHANGELOG.md", + "extra-files": [ + "lib/src/version.dart" + ] }, "packages/supabase_flutter": { "release-type": "dart", "package-name": "supabase_flutter", - "changelog-path": "CHANGELOG.md" + "changelog-path": "CHANGELOG.md", + "extra-files": [ + "lib/src/version.dart" + ] }, "packages/yet_another_json_isolate": { "release-type": "dart", @@ -58,19 +79,5 @@ "packages/yet_another_json_isolate" ] } - ], - "group-pull-request-title-pattern": "chore(release): release ${version}", - "pull-request-title-pattern": "chore(${scope}): release ${version}", - "changelog-sections": [ - {"type": "feat", "section": "Features"}, - {"type": "fix", "section": "Bug Fixes"}, - {"type": "chore", "section": "Miscellaneous Chores", "hidden": false}, - {"type": "docs", "section": "Documentation"}, - {"type": "style", "section": "Styles", "hidden": true}, - {"type": "refactor", "section": "Code Refactoring"}, - {"type": "perf", "section": "Performance Improvements"}, - {"type": "test", "section": "Tests", "hidden": true}, - {"type": "build", "section": "Build System", "hidden": true}, - {"type": "ci", "section": "Continuous Integration", "hidden": true} ] } \ No newline at end of file From 94838fbfbc5fdc933741144b5cfabe63f7045657 Mon Sep 17 00:00:00 2001 From: Guilherme Souza Date: Thu, 25 Sep 2025 06:15:05 -0300 Subject: [PATCH 04/18] chore: set correct bootstrap-sha value --- release-please-config.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release-please-config.json b/release-please-config.json index 3e6386a38..b42a87952 100644 --- a/release-please-config.json +++ b/release-please-config.json @@ -1,6 +1,6 @@ { "release-type": "dart", - "bootstrap-sha": "ae2d12d0c8a1e2f3b4c5d6e7f8a9b0c1d2e3f4a5", + "bootstrap-sha": "91981988fb0dec7855fff920252b508aa5a10771", "packages": { "packages/functions_client": { "release-type": "dart", From 3b3a1838dda7dba71c858b60fc2fdae4193f2439 Mon Sep 17 00:00:00 2001 From: Guilherme Souza Date: Thu, 25 Sep 2025 06:22:47 -0300 Subject: [PATCH 05/18] chore: set bootstrap-sha --- release-please-config.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/release-please-config.json b/release-please-config.json index b42a87952..b614c07ab 100644 --- a/release-please-config.json +++ b/release-please-config.json @@ -1,6 +1,5 @@ { - "release-type": "dart", - "bootstrap-sha": "91981988fb0dec7855fff920252b508aa5a10771", + "bootstrap-sha": "323735262b358167da66e4237874d2c1daf1f191", "packages": { "packages/functions_client": { "release-type": "dart", From 98ac10f5b5941a988b5642d4cfbfd50b3e1dfcb4 Mon Sep 17 00:00:00 2001 From: Guilherme Souza Date: Thu, 25 Sep 2025 06:24:20 -0300 Subject: [PATCH 06/18] chore: use last-release-sha --- release-please-config.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release-please-config.json b/release-please-config.json index b614c07ab..e26a66430 100644 --- a/release-please-config.json +++ b/release-please-config.json @@ -1,5 +1,5 @@ { - "bootstrap-sha": "323735262b358167da66e4237874d2c1daf1f191", + "last-release-sha": "323735262b358167da66e4237874d2c1daf1f191", "packages": { "packages/functions_client": { "release-type": "dart", From fa3091cefbea7f4b8919933ff6425a8a7ba22d44 Mon Sep 17 00:00:00 2001 From: Guilherme Souza Date: Thu, 25 Sep 2025 06:27:24 -0300 Subject: [PATCH 07/18] chore: use last-release-sha --- release-please-config.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release-please-config.json b/release-please-config.json index e26a66430..8590be8f1 100644 --- a/release-please-config.json +++ b/release-please-config.json @@ -1,5 +1,5 @@ { - "last-release-sha": "323735262b358167da66e4237874d2c1daf1f191", + "last-release-sha": "91981988fb0dec7855fff920252b508aa5a10771", "packages": { "packages/functions_client": { "release-type": "dart", From dd7fee80cd37b7a22e4c96085fccf6e7b8b22b83 Mon Sep 17 00:00:00 2001 From: Guilherme Souza Date: Thu, 25 Sep 2025 06:51:05 -0300 Subject: [PATCH 08/18] fix sha --- release-please-config.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/release-please-config.json b/release-please-config.json index 8590be8f1..09afb1e4e 100644 --- a/release-please-config.json +++ b/release-please-config.json @@ -1,5 +1,6 @@ { - "last-release-sha": "91981988fb0dec7855fff920252b508aa5a10771", + "bootstrap-sha": "323735262b358167da66e4237874d2c1daf1f191", + "last-release-sha": "323735262b358167da66e4237874d2c1daf1f191", "packages": { "packages/functions_client": { "release-type": "dart", From c355fba6f42053504220c487317ffcc985cb7e3d Mon Sep 17 00:00:00 2001 From: Guilherme Souza Date: Thu, 25 Sep 2025 06:59:28 -0300 Subject: [PATCH 09/18] chore: proper setup linked versions --- .github/workflows/release-please.yml | 61 ++++++++++++-- release-please-config.json | 16 ++-- scripts/update-dependencies.js | 117 +++++++++++++++++++++++++++ 3 files changed, 183 insertions(+), 11 deletions(-) create mode 100755 scripts/update-dependencies.js diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml index f0cbc6235..f64bb8b0e 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yml @@ -16,6 +16,8 @@ jobs: outputs: releases_created: ${{ steps.release.outputs.releases_created }} paths_released: ${{ steps.release.outputs.paths_released }} + pr_created: ${{ steps.release.outputs.pr_created }} + pr_number: ${{ steps.release.outputs.pr_number }} steps: - name: Release Please id: release @@ -26,6 +28,59 @@ jobs: manifest-file: .release-please-manifest.json token: ${{ secrets.GITHUB_TOKEN }} + update-dependencies: + needs: release-please + if: needs.release-please.outputs.pr_created == 'true' + runs-on: ubuntu-latest + steps: + - name: Checkout PR branch + uses: actions/checkout@v4 + with: + token: ${{ secrets.GITHUB_TOKEN }} + ref: release-please--branches--${{ github.ref_name }} + + - name: Setup Dart + uses: dart-lang/setup-dart@v1 + with: + sdk: stable + + - name: Setup Flutter + uses: subosito/flutter-action@v2 + with: + flutter-version: 'stable' + channel: 'stable' + + - name: Get Dart dependencies + run: dart pub global activate melos + + - name: Bootstrap workspace + run: melos bootstrap + + - name: Update dependency versions using melos + run: | + # Run melos version in dry-run to update dependency versions in pubspec.yaml + # This will update dependencies between packages to match new versions + echo "Updating dependency versions..." + + # Read the current versions and update dependencies manually + node scripts/update-dependencies.js + + - name: Configure git + run: | + git config --global user.name "github-actions[bot]" + git config --global user.email "github-actions[bot]@users.noreply.github.com" + + - name: Commit dependency updates + run: | + if git diff --quiet; then + echo "No dependency updates needed" + else + git add packages/*/pubspec.yaml + git commit -m "chore: update package dependencies" + git push origin release-please--branches--${{ github.ref_name }} + echo "Pushed dependency updates to release PR" + fi + publish: needs: release-please if: needs.release-please.outputs.releases_created == 'true' @@ -51,12 +106,6 @@ jobs: - name: Bootstrap workspace run: melos bootstrap - # - name: Run version update hook - # run: melos run update-version - - # - name: Run tests - # run: melos run test --no-select - - name: Setup pub credentials run: | mkdir -p ~/.config/dart diff --git a/release-please-config.json b/release-please-config.json index 09afb1e4e..eccae263d 100644 --- a/release-please-config.json +++ b/release-please-config.json @@ -48,7 +48,9 @@ "changelog-path": "CHANGELOG.md", "extra-files": [ "lib/src/version.dart" - ] + ], + "bump-minor-pre-major": true, + "bump-patch-for-minor-pre-major": true }, "packages/supabase_flutter": { "release-type": "dart", @@ -56,7 +58,9 @@ "changelog-path": "CHANGELOG.md", "extra-files": [ "lib/src/version.dart" - ] + ], + "bump-minor-pre-major": true, + "bump-patch-for-minor-pre-major": true }, "packages/yet_another_json_isolate": { "release-type": "dart", @@ -67,7 +71,7 @@ "plugins": [ { "type": "linked-versions", - "group-name": "supabase-flutter-packages", + "group-name": "supabase-packages", "components": [ "packages/functions_client", "packages/gotrue", @@ -77,7 +81,9 @@ "packages/supabase", "packages/supabase_flutter", "packages/yet_another_json_isolate" - ] + ], + "groupPullRequestTitlePattern": "chore(release): release packages" } - ] + ], + "sequential-calls": true } \ No newline at end of file diff --git a/scripts/update-dependencies.js b/scripts/update-dependencies.js new file mode 100755 index 000000000..e4e9cb1be --- /dev/null +++ b/scripts/update-dependencies.js @@ -0,0 +1,117 @@ +#!/usr/bin/env node + +const fs = require('fs'); +const path = require('path'); +const { execSync } = require('child_process'); + +// Package dependency map - defines which packages depend on which +const DEPENDENCY_MAP = { + 'supabase': [ + 'functions_client', + 'gotrue', + 'postgrest', + 'realtime_client', + 'storage_client', + 'yet_another_json_isolate' + ], + 'supabase_flutter': [ + 'supabase' + ] +}; + +// Read package version from pubspec.yaml +function getPackageVersion(packagePath) { + const pubspecPath = path.join(packagePath, 'pubspec.yaml'); + const pubspec = fs.readFileSync(pubspecPath, 'utf8'); + const match = pubspec.match(/^version:\s+(.+)$/m); + return match ? match[1].trim() : null; +} + +// Update dependency version in pubspec.yaml +function updateDependencyVersion(packagePath, depName, newVersion) { + const pubspecPath = path.join(packagePath, 'pubspec.yaml'); + let pubspec = fs.readFileSync(pubspecPath, 'utf8'); + + // Update dependency version (exact match) + const regex = new RegExp(`(\\s+${depName}:\\s+)([\\d\\.]+)`, 'g'); + const updated = pubspec.replace(regex, `$1${newVersion}`); + + if (updated !== pubspec) { + fs.writeFileSync(pubspecPath, updated); + console.log(`Updated ${depName} to ${newVersion} in ${packagePath}`); + return true; + } + + return false; +} + +// Check if any package has been updated by looking at git diff +function getUpdatedPackages() { + try { + const diff = execSync('git diff --name-only HEAD~1', { encoding: 'utf8' }); + const updatedPackages = new Set(); + + diff.split('\\n').forEach(file => { + const match = file.match(/^packages\/([^\/]+)\//); + if (match) { + updatedPackages.add(match[1]); + } + }); + + return Array.from(updatedPackages); + } catch (error) { + console.log('Could not determine updated packages, assuming all may need updates'); + return Object.keys(DEPENDENCY_MAP).concat(['functions_client', 'gotrue', 'postgrest', 'realtime_client', 'storage_client', 'yet_another_json_isolate']); + } +} + +function main() { + console.log('Updating package dependencies...'); + + const packagesDir = 'packages'; + const updatedPackages = getUpdatedPackages(); + let hasChanges = false; + + // For each package that depends on others + Object.entries(DEPENDENCY_MAP).forEach(([packageName, dependencies]) => { + const packagePath = path.join(packagesDir, packageName); + + if (!fs.existsSync(packagePath)) { + console.log(`Package ${packageName} not found, skipping`); + return; + } + + // Check if any of its dependencies were updated + const updatedDeps = dependencies.filter(dep => updatedPackages.includes(dep)); + + if (updatedDeps.length === 0) { + console.log(`No dependency updates needed for ${packageName}`); + return; + } + + console.log(`Updating dependencies for ${packageName}: ${updatedDeps.join(', ')}`); + + // Update each dependency to its new version + updatedDeps.forEach(depName => { + const depPath = path.join(packagesDir, depName); + const newVersion = getPackageVersion(depPath); + + if (newVersion) { + const updated = updateDependencyVersion(packagePath, depName, newVersion); + if (updated) { + hasChanges = true; + } + } + }); + }); + + if (hasChanges) { + console.log('Dependencies updated, changes will be committed automatically'); + } else { + console.log('No dependency updates were needed'); + } +} + +if (require.main === module) { + main(); +} \ No newline at end of file From 1969be3a6406e58a0a3ee1731c75fa442788be6a Mon Sep 17 00:00:00 2001 From: Guilherme Souza Date: Thu, 25 Sep 2025 07:02:40 -0300 Subject: [PATCH 10/18] chore: remove condition: --- .github/workflows/release-please.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml index f64bb8b0e..ff06f95e3 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yml @@ -30,7 +30,6 @@ jobs: update-dependencies: needs: release-please - if: needs.release-please.outputs.pr_created == 'true' runs-on: ubuntu-latest steps: - name: Checkout PR branch From fddb1c839140577f87392bbcf83dfe5bc41eaf89 Mon Sep 17 00:00:00 2001 From: Guilherme Souza Date: Thu, 25 Sep 2025 07:04:39 -0300 Subject: [PATCH 11/18] remove flutter version --- .github/workflows/release-please.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml index ff06f95e3..273ff7815 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yml @@ -46,7 +46,6 @@ jobs: - name: Setup Flutter uses: subosito/flutter-action@v2 with: - flutter-version: 'stable' channel: 'stable' - name: Get Dart dependencies From 93e7f92afd638e9b3bfcf14fff032cd14a9896ea Mon Sep 17 00:00:00 2001 From: Guilherme Souza Date: Thu, 25 Sep 2025 09:14:32 -0300 Subject: [PATCH 12/18] chore: setup release automation using melos action --- .github/workflows/release-please.yml | 130 -------------------------- .github/workflows/release-prepare.yml | 34 +++++++ .github/workflows/release-publish.yml | 60 ++++++++++++ .github/workflows/release-tag.yml | 31 ++++++ .release-please-manifest.json | 10 -- release-please-config.json | 89 ------------------ scripts/update-dependencies.js | 117 ----------------------- 7 files changed, 125 insertions(+), 346 deletions(-) delete mode 100644 .github/workflows/release-please.yml create mode 100644 .github/workflows/release-prepare.yml create mode 100644 .github/workflows/release-publish.yml create mode 100644 .github/workflows/release-tag.yml delete mode 100644 .release-please-manifest.json delete mode 100644 release-please-config.json delete mode 100755 scripts/update-dependencies.js diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml deleted file mode 100644 index 273ff7815..000000000 --- a/.github/workflows/release-please.yml +++ /dev/null @@ -1,130 +0,0 @@ -name: Release Please - -on: - push: - branches: - - main - - chore/setup-release-please - -permissions: - contents: write - pull-requests: write - -jobs: - release-please: - runs-on: ubuntu-latest - outputs: - releases_created: ${{ steps.release.outputs.releases_created }} - paths_released: ${{ steps.release.outputs.paths_released }} - pr_created: ${{ steps.release.outputs.pr_created }} - pr_number: ${{ steps.release.outputs.pr_number }} - steps: - - name: Release Please - id: release - uses: googleapis/release-please-action@v4 - with: - target-branch: ${{ github.ref_name }} - config-file: release-please-config.json - manifest-file: .release-please-manifest.json - token: ${{ secrets.GITHUB_TOKEN }} - - update-dependencies: - needs: release-please - runs-on: ubuntu-latest - steps: - - name: Checkout PR branch - uses: actions/checkout@v4 - with: - token: ${{ secrets.GITHUB_TOKEN }} - ref: release-please--branches--${{ github.ref_name }} - - - name: Setup Dart - uses: dart-lang/setup-dart@v1 - with: - sdk: stable - - - name: Setup Flutter - uses: subosito/flutter-action@v2 - with: - channel: 'stable' - - - name: Get Dart dependencies - run: dart pub global activate melos - - - name: Bootstrap workspace - run: melos bootstrap - - - name: Update dependency versions using melos - run: | - # Run melos version in dry-run to update dependency versions in pubspec.yaml - # This will update dependencies between packages to match new versions - echo "Updating dependency versions..." - - # Read the current versions and update dependencies manually - node scripts/update-dependencies.js - - - name: Configure git - run: | - git config --global user.name "github-actions[bot]" - git config --global user.email "github-actions[bot]@users.noreply.github.com" - - - name: Commit dependency updates - run: | - if git diff --quiet; then - echo "No dependency updates needed" - else - git add packages/*/pubspec.yaml - git commit -m "chore: update package dependencies" - git push origin release-please--branches--${{ github.ref_name }} - echo "Pushed dependency updates to release PR" - fi - - publish: - needs: release-please - if: needs.release-please.outputs.releases_created == 'true' - runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Setup Dart - uses: dart-lang/setup-dart@v1 - with: - sdk: stable - - - name: Setup Flutter - uses: subosito/flutter-action@v2 - with: - flutter-version: 'stable' - channel: 'stable' - - - name: Get Dart dependencies - run: dart pub global activate melos - - - name: Bootstrap workspace - run: melos bootstrap - - - name: Setup pub credentials - run: | - mkdir -p ~/.config/dart - cat < ~/.config/dart/pub-credentials.json - { - "accessToken":"${{ secrets.PUB_DEV_ACCESS_TOKEN }}", - "refreshToken":"${{ secrets.PUB_DEV_REFRESH_TOKEN }}", - "tokenEndpoint":"https://accounts.google.com/o/oauth2/token", - "scopes":["https://www.googleapis.com/auth/userinfo.email","openid"], - "expiration":${{ secrets.PUB_DEV_TOKEN_EXPIRATION }} - } - EOF - - - name: Publish packages - run: | - # Parse the released paths and publish each package - echo '${{ needs.release-please.outputs.paths_released }}' | jq -r '.[]' | while read -r path; do - echo "Publishing package in $path" - cd "$path" - if [ -f "pubspec.yaml" ]; then - dart pub publish --force - fi - cd - > /dev/null - done \ No newline at end of file diff --git a/.github/workflows/release-prepare.yml b/.github/workflows/release-prepare.yml new file mode 100644 index 000000000..546856038 --- /dev/null +++ b/.github/workflows/release-prepare.yml @@ -0,0 +1,34 @@ +name: Prepare Release + +on: + push: + branches: + - main + +permissions: + contents: write + pull-requests: write + +jobs: + preapre-release: + runs-on: ubuntu-latest + if: ${{ !contains(github.event.head_commit.message, 'chore(release):') }} + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + token: ${{ secrets.GITHUB_TOKEN }} + + - name: Setup Flutter + uses: subosito/flutter-action@v2 + with: + channel: 'stable' + + - name: Setup Melos + uses: bluefireteam/melos-action@v3 + with: + melos-version: 'latest' + run-versioning: true + publish-dry-run: true + create-pr: true diff --git a/.github/workflows/release-publish.yml b/.github/workflows/release-publish.yml new file mode 100644 index 000000000..d34a44da1 --- /dev/null +++ b/.github/workflows/release-publish.yml @@ -0,0 +1,60 @@ +name: Publish Packages + +on: + push: + tags: + - '*@*' # Matches tags like package_name@version + workflow_dispatch: + +permissions: + contents: write + +jobs: + publish-packages: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Flutter + uses: subosito/flutter-action@v2 + with: + channel: 'stable' + + - name: Setup pub credentials + run: | + mkdir -p ~/.config/dart + cat < ~/.config/dart/pub-credentials.json + { + "accessToken":"${{ secrets.PUB_DEV_ACCESS_TOKEN }}", + "refreshToken":"${{ secrets.PUB_DEV_REFRESH_TOKEN }}", + "tokenEndpoint":"https://accounts.google.com/o/oauth2/token", + "scopes":["https://www.googleapis.com/auth/userinfo.email","openid"], + "expiration":${{ secrets.PUB_DEV_TOKEN_EXPIRATION }} + } + EOF + + - name: Publish to pub.dev + uses: bluefireteam/melos-action@v3 + with: + melos-version: 'latest' + publish: true + + - name: Create GitHub Release + uses: softprops/action-gh-release@v1 + with: + tag_name: ${{ github.ref_name }} + name: Release ${{ github.ref_name }} + body: | + ## Package Release + + Released package: ${{ github.ref_name }} + + See the package CHANGELOG for detailed changes. + + --- + *This release was created automatically by the Publish Packages workflow.* + draft: false + prerelease: false + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/.github/workflows/release-tag.yml b/.github/workflows/release-tag.yml new file mode 100644 index 000000000..7b7efe2f7 --- /dev/null +++ b/.github/workflows/release-tag.yml @@ -0,0 +1,31 @@ +name: Create Release Tags + +on: + push: + branches: + - main + +permissions: + contents: write + actions: write + +jobs: + create-tags: + if: ${{ contains(github.event.head_commit.message, 'chore(release):') }} + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Setup Flutter + uses: subosito/flutter-action@v2 + with: + channel: 'stable' + + - name: Setup Melos + uses: bluefireteam/melos-action@v3 + with: + melos-version: 'latest' + tag: true diff --git a/.release-please-manifest.json b/.release-please-manifest.json deleted file mode 100644 index 37b77fec8..000000000 --- a/.release-please-manifest.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "packages/functions_client": "2.4.4", - "packages/gotrue": "2.15.0", - "packages/postgrest": "2.4.2", - "packages/realtime_client": "2.5.2", - "packages/storage_client": "2.4.1", - "packages/supabase": "2.9.1", - "packages/supabase_flutter": "2.10.1", - "packages/yet_another_json_isolate": "2.1.0" -} \ No newline at end of file diff --git a/release-please-config.json b/release-please-config.json deleted file mode 100644 index eccae263d..000000000 --- a/release-please-config.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "bootstrap-sha": "323735262b358167da66e4237874d2c1daf1f191", - "last-release-sha": "323735262b358167da66e4237874d2c1daf1f191", - "packages": { - "packages/functions_client": { - "release-type": "dart", - "package-name": "functions_client", - "changelog-path": "CHANGELOG.md", - "extra-files": [ - "lib/src/version.dart" - ] - }, - "packages/gotrue": { - "release-type": "dart", - "package-name": "gotrue", - "changelog-path": "CHANGELOG.md", - "extra-files": [ - "lib/src/version.dart" - ] - }, - "packages/postgrest": { - "release-type": "dart", - "package-name": "postgrest", - "changelog-path": "CHANGELOG.md", - "extra-files": [ - "lib/src/version.dart" - ] - }, - "packages/realtime_client": { - "release-type": "dart", - "package-name": "realtime_client", - "changelog-path": "CHANGELOG.md", - "extra-files": [ - "lib/src/version.dart" - ] - }, - "packages/storage_client": { - "release-type": "dart", - "package-name": "storage_client", - "changelog-path": "CHANGELOG.md", - "extra-files": [ - "lib/src/version.dart" - ] - }, - "packages/supabase": { - "release-type": "dart", - "package-name": "supabase", - "changelog-path": "CHANGELOG.md", - "extra-files": [ - "lib/src/version.dart" - ], - "bump-minor-pre-major": true, - "bump-patch-for-minor-pre-major": true - }, - "packages/supabase_flutter": { - "release-type": "dart", - "package-name": "supabase_flutter", - "changelog-path": "CHANGELOG.md", - "extra-files": [ - "lib/src/version.dart" - ], - "bump-minor-pre-major": true, - "bump-patch-for-minor-pre-major": true - }, - "packages/yet_another_json_isolate": { - "release-type": "dart", - "package-name": "yet_another_json_isolate", - "changelog-path": "CHANGELOG.md" - } - }, - "plugins": [ - { - "type": "linked-versions", - "group-name": "supabase-packages", - "components": [ - "packages/functions_client", - "packages/gotrue", - "packages/postgrest", - "packages/realtime_client", - "packages/storage_client", - "packages/supabase", - "packages/supabase_flutter", - "packages/yet_another_json_isolate" - ], - "groupPullRequestTitlePattern": "chore(release): release packages" - } - ], - "sequential-calls": true -} \ No newline at end of file diff --git a/scripts/update-dependencies.js b/scripts/update-dependencies.js deleted file mode 100755 index e4e9cb1be..000000000 --- a/scripts/update-dependencies.js +++ /dev/null @@ -1,117 +0,0 @@ -#!/usr/bin/env node - -const fs = require('fs'); -const path = require('path'); -const { execSync } = require('child_process'); - -// Package dependency map - defines which packages depend on which -const DEPENDENCY_MAP = { - 'supabase': [ - 'functions_client', - 'gotrue', - 'postgrest', - 'realtime_client', - 'storage_client', - 'yet_another_json_isolate' - ], - 'supabase_flutter': [ - 'supabase' - ] -}; - -// Read package version from pubspec.yaml -function getPackageVersion(packagePath) { - const pubspecPath = path.join(packagePath, 'pubspec.yaml'); - const pubspec = fs.readFileSync(pubspecPath, 'utf8'); - const match = pubspec.match(/^version:\s+(.+)$/m); - return match ? match[1].trim() : null; -} - -// Update dependency version in pubspec.yaml -function updateDependencyVersion(packagePath, depName, newVersion) { - const pubspecPath = path.join(packagePath, 'pubspec.yaml'); - let pubspec = fs.readFileSync(pubspecPath, 'utf8'); - - // Update dependency version (exact match) - const regex = new RegExp(`(\\s+${depName}:\\s+)([\\d\\.]+)`, 'g'); - const updated = pubspec.replace(regex, `$1${newVersion}`); - - if (updated !== pubspec) { - fs.writeFileSync(pubspecPath, updated); - console.log(`Updated ${depName} to ${newVersion} in ${packagePath}`); - return true; - } - - return false; -} - -// Check if any package has been updated by looking at git diff -function getUpdatedPackages() { - try { - const diff = execSync('git diff --name-only HEAD~1', { encoding: 'utf8' }); - const updatedPackages = new Set(); - - diff.split('\\n').forEach(file => { - const match = file.match(/^packages\/([^\/]+)\//); - if (match) { - updatedPackages.add(match[1]); - } - }); - - return Array.from(updatedPackages); - } catch (error) { - console.log('Could not determine updated packages, assuming all may need updates'); - return Object.keys(DEPENDENCY_MAP).concat(['functions_client', 'gotrue', 'postgrest', 'realtime_client', 'storage_client', 'yet_another_json_isolate']); - } -} - -function main() { - console.log('Updating package dependencies...'); - - const packagesDir = 'packages'; - const updatedPackages = getUpdatedPackages(); - let hasChanges = false; - - // For each package that depends on others - Object.entries(DEPENDENCY_MAP).forEach(([packageName, dependencies]) => { - const packagePath = path.join(packagesDir, packageName); - - if (!fs.existsSync(packagePath)) { - console.log(`Package ${packageName} not found, skipping`); - return; - } - - // Check if any of its dependencies were updated - const updatedDeps = dependencies.filter(dep => updatedPackages.includes(dep)); - - if (updatedDeps.length === 0) { - console.log(`No dependency updates needed for ${packageName}`); - return; - } - - console.log(`Updating dependencies for ${packageName}: ${updatedDeps.join(', ')}`); - - // Update each dependency to its new version - updatedDeps.forEach(depName => { - const depPath = path.join(packagesDir, depName); - const newVersion = getPackageVersion(depPath); - - if (newVersion) { - const updated = updateDependencyVersion(packagePath, depName, newVersion); - if (updated) { - hasChanges = true; - } - } - }); - }); - - if (hasChanges) { - console.log('Dependencies updated, changes will be committed automatically'); - } else { - console.log('No dependency updates were needed'); - } -} - -if (require.main === module) { - main(); -} \ No newline at end of file From 2a2ad2d660d35c7139bcd54edba0be19c8512eb8 Mon Sep 17 00:00:00 2001 From: Guilherme Souza Date: Thu, 25 Sep 2025 09:15:29 -0300 Subject: [PATCH 13/18] chore: test release workflow --- .github/workflows/release-prepare.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/release-prepare.yml b/.github/workflows/release-prepare.yml index 546856038..0cc1f8819 100644 --- a/.github/workflows/release-prepare.yml +++ b/.github/workflows/release-prepare.yml @@ -4,6 +4,7 @@ on: push: branches: - main + - chore/setup-release-please permissions: contents: write From 6808abbe978523fb61810942e11d5befbe5f7057 Mon Sep 17 00:00:00 2001 From: Guilherme Souza Date: Thu, 25 Sep 2025 10:02:36 -0300 Subject: [PATCH 14/18] remove specific version channels --- .github/workflows/release-prepare.yml | 3 --- .github/workflows/release-publish.yml | 3 --- .github/workflows/release-tag.yml | 3 --- 3 files changed, 9 deletions(-) diff --git a/.github/workflows/release-prepare.yml b/.github/workflows/release-prepare.yml index 0cc1f8819..63c9caede 100644 --- a/.github/workflows/release-prepare.yml +++ b/.github/workflows/release-prepare.yml @@ -23,13 +23,10 @@ jobs: - name: Setup Flutter uses: subosito/flutter-action@v2 - with: - channel: 'stable' - name: Setup Melos uses: bluefireteam/melos-action@v3 with: - melos-version: 'latest' run-versioning: true publish-dry-run: true create-pr: true diff --git a/.github/workflows/release-publish.yml b/.github/workflows/release-publish.yml index d34a44da1..cd749ead9 100644 --- a/.github/workflows/release-publish.yml +++ b/.github/workflows/release-publish.yml @@ -18,8 +18,6 @@ jobs: - name: Setup Flutter uses: subosito/flutter-action@v2 - with: - channel: 'stable' - name: Setup pub credentials run: | @@ -37,7 +35,6 @@ jobs: - name: Publish to pub.dev uses: bluefireteam/melos-action@v3 with: - melos-version: 'latest' publish: true - name: Create GitHub Release diff --git a/.github/workflows/release-tag.yml b/.github/workflows/release-tag.yml index 7b7efe2f7..252525656 100644 --- a/.github/workflows/release-tag.yml +++ b/.github/workflows/release-tag.yml @@ -21,11 +21,8 @@ jobs: - name: Setup Flutter uses: subosito/flutter-action@v2 - with: - channel: 'stable' - name: Setup Melos uses: bluefireteam/melos-action@v3 with: - melos-version: 'latest' tag: true From 0a5e3635027151ed968da765b7ce3e490976b9e1 Mon Sep 17 00:00:00 2001 From: Guilherme Souza Date: Thu, 25 Sep 2025 10:24:55 -0300 Subject: [PATCH 15/18] chore: use workflow dispatch only --- .github/workflows/release-prepare.yml | 21 ++++++--- .github/workflows/release-publish.yml | 47 +++++++------------ .github/workflows/release-tag.yml | 6 +++ .../functions_client/lib/src/version.dart | 2 +- packages/gotrue/lib/src/version.dart | 2 +- packages/postgrest/lib/src/version.dart | 2 +- packages/realtime_client/lib/src/version.dart | 2 +- packages/storage_client/lib/src/version.dart | 2 +- packages/supabase/lib/src/version.dart | 2 +- .../supabase_flutter/lib/src/version.dart | 2 +- 10 files changed, 44 insertions(+), 44 deletions(-) diff --git a/.github/workflows/release-prepare.yml b/.github/workflows/release-prepare.yml index 63c9caede..922973936 100644 --- a/.github/workflows/release-prepare.yml +++ b/.github/workflows/release-prepare.yml @@ -1,10 +1,18 @@ name: Prepare Release on: - push: - branches: - - main - - chore/setup-release-please + workflow_dispatch: + inputs: + prerelease: + description: 'Version as prerelease' + required: false + default: false + type: boolean + graduate: + description: 'Graduate prereleases to stable' + required: false + default: false + type: boolean permissions: contents: write @@ -13,7 +21,6 @@ permissions: jobs: preapre-release: runs-on: ubuntu-latest - if: ${{ !contains(github.event.head_commit.message, 'chore(release):') }} steps: - name: Checkout uses: actions/checkout@v4 @@ -27,6 +34,8 @@ jobs: - name: Setup Melos uses: bluefireteam/melos-action@v3 with: - run-versioning: true + run-versioning: ${{ inputs.prerelease == false }} + run-versioning-prerelease: ${{ inputs.prerelease == true }} + run-versioning-graduate: ${{ inputs.graduate == true }} publish-dry-run: true create-pr: true diff --git a/.github/workflows/release-publish.yml b/.github/workflows/release-publish.yml index cd749ead9..25ff02e53 100644 --- a/.github/workflows/release-publish.yml +++ b/.github/workflows/release-publish.yml @@ -1,13 +1,11 @@ name: Publish Packages on: - push: - tags: - - '*@*' # Matches tags like package_name@version workflow_dispatch: permissions: contents: write + id-token: write jobs: publish-packages: @@ -18,40 +16,27 @@ jobs: - name: Setup Flutter uses: subosito/flutter-action@v2 - - - name: Setup pub credentials - run: | - mkdir -p ~/.config/dart - cat < ~/.config/dart/pub-credentials.json - { - "accessToken":"${{ secrets.PUB_DEV_ACCESS_TOKEN }}", - "refreshToken":"${{ secrets.PUB_DEV_REFRESH_TOKEN }}", - "tokenEndpoint":"https://accounts.google.com/o/oauth2/token", - "scopes":["https://www.googleapis.com/auth/userinfo.email","openid"], - "expiration":${{ secrets.PUB_DEV_TOKEN_EXPIRATION }} - } - EOF - name: Publish to pub.dev uses: bluefireteam/melos-action@v3 with: publish: true - - name: Create GitHub Release - uses: softprops/action-gh-release@v1 - with: - tag_name: ${{ github.ref_name }} - name: Release ${{ github.ref_name }} - body: | - ## Package Release + # - name: Create GitHub Release + # uses: softprops/action-gh-release@v1 + # with: + # tag_name: ${{ github.ref_name }} + # name: Release ${{ github.ref_name }} + # body: | + # ## Package Release - Released package: ${{ github.ref_name }} + # Released package: ${{ github.ref_name }} - See the package CHANGELOG for detailed changes. + # See the package CHANGELOG for detailed changes. - --- - *This release was created automatically by the Publish Packages workflow.* - draft: false - prerelease: false - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file + # --- + # *This release was created automatically by the Publish Packages workflow.* + # draft: false + # prerelease: false + # env: + # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/.github/workflows/release-tag.yml b/.github/workflows/release-tag.yml index 252525656..f1bbd38f7 100644 --- a/.github/workflows/release-tag.yml +++ b/.github/workflows/release-tag.yml @@ -26,3 +26,9 @@ jobs: uses: bluefireteam/melos-action@v3 with: tag: true + - run: | + melos exec -c 1 --no-published --no-private --order-dependents -- \ + gh workflow run release-publish.yml \ + --ref \$MELOS_PACKAGE_NAME-v\$MELOS_PACKAGE_VERSION + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/packages/functions_client/lib/src/version.dart b/packages/functions_client/lib/src/version.dart index dc28a9716..871d973b7 100644 --- a/packages/functions_client/lib/src/version.dart +++ b/packages/functions_client/lib/src/version.dart @@ -1 +1 @@ -const version = '2.4.4'; // {x-release-please-version} +const version = '2.4.4'; diff --git a/packages/gotrue/lib/src/version.dart b/packages/gotrue/lib/src/version.dart index 3a66b4738..d5586c43c 100644 --- a/packages/gotrue/lib/src/version.dart +++ b/packages/gotrue/lib/src/version.dart @@ -1 +1 @@ -const version = '2.15.0'; // {x-release-please-version} +const version = '2.15.0'; diff --git a/packages/postgrest/lib/src/version.dart b/packages/postgrest/lib/src/version.dart index 7f3dca67a..36de6a3d4 100644 --- a/packages/postgrest/lib/src/version.dart +++ b/packages/postgrest/lib/src/version.dart @@ -1 +1 @@ -const version = '2.4.2'; // {x-release-please-version} +const version = '2.4.2'; diff --git a/packages/realtime_client/lib/src/version.dart b/packages/realtime_client/lib/src/version.dart index f6ef61952..70b4b7a26 100644 --- a/packages/realtime_client/lib/src/version.dart +++ b/packages/realtime_client/lib/src/version.dart @@ -1 +1 @@ -const version = '2.5.2'; // {x-release-please-version} +const version = '2.5.2'; diff --git a/packages/storage_client/lib/src/version.dart b/packages/storage_client/lib/src/version.dart index 3c797110d..b6a2119a6 100644 --- a/packages/storage_client/lib/src/version.dart +++ b/packages/storage_client/lib/src/version.dart @@ -1 +1 @@ -const version = '2.4.1'; // {x-release-please-version} +const version = '2.4.1'; diff --git a/packages/supabase/lib/src/version.dart b/packages/supabase/lib/src/version.dart index e8071d6c4..62036484b 100644 --- a/packages/supabase/lib/src/version.dart +++ b/packages/supabase/lib/src/version.dart @@ -1 +1 @@ -const version = '2.9.1'; // {x-release-please-version} +const version = '2.9.1'; diff --git a/packages/supabase_flutter/lib/src/version.dart b/packages/supabase_flutter/lib/src/version.dart index 02d5f3757..8aa34e9f8 100644 --- a/packages/supabase_flutter/lib/src/version.dart +++ b/packages/supabase_flutter/lib/src/version.dart @@ -1 +1 @@ -const version = '2.10.1'; // {x-release-please-version} +const version = '2.10.1'; From 3b244d83595c691e181392e03de0112ff52dd4df Mon Sep 17 00:00:00 2001 From: Guilherme Souza Date: Thu, 25 Sep 2025 10:35:15 -0300 Subject: [PATCH 16/18] fix typo --- .github/workflows/release-prepare.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-prepare.yml b/.github/workflows/release-prepare.yml index 922973936..96004f03d 100644 --- a/.github/workflows/release-prepare.yml +++ b/.github/workflows/release-prepare.yml @@ -19,7 +19,7 @@ permissions: pull-requests: write jobs: - preapre-release: + prepare-release: runs-on: ubuntu-latest steps: - name: Checkout From f3f938428f01bc56f1e1a564685bb0371455d43e Mon Sep 17 00:00:00 2001 From: Guilherme Souza Date: Mon, 29 Sep 2025 05:20:19 -0300 Subject: [PATCH 17/18] revert melos.yaml --- melos.yaml | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/melos.yaml b/melos.yaml index a23135ead..2feb7757f 100644 --- a/melos.yaml +++ b/melos.yaml @@ -32,12 +32,6 @@ scripts: format: exec: dart format lib test -l 80 --set-exit-if-changed - test: - exec: dart test --concurrency=1 - description: Run tests for all packages - packageFilters: - dirExists: test - upgrade: exec: dart pub upgrade @@ -50,7 +44,7 @@ scripts: # Loop through the packages directory for d in packages/*/ ; do # Get version number - version=$(awk '/version:/ { + version=$(awk '/version:/ { pos=match($2, /[0-9]+\.[0-9]+\.[0-9]+/); print substr($2, pos); }' $d/pubspec.yaml) # Update version.dart file @@ -60,10 +54,4 @@ scripts: rm packages/yet_another_json_isolate/lib/src/version.dart # Stage the version.dart file change git add packages/*/lib/src/version.dart - - release:prepare: - description: Prepare packages for release by running tests and lints - run: | - melos run lint:all --no-select - melos run test --no-select \ No newline at end of file From dd028bf288ba368278512a02def7649cb112529c Mon Sep 17 00:00:00 2001 From: Guilherme Souza Date: Mon, 29 Sep 2025 11:07:28 -0300 Subject: [PATCH 18/18] chore: enable GitHub Release creation in workflow Uncomment GitHub Release creation step and update body. --- .github/workflows/release-publish.yml | 36 +++++++++++++-------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/.github/workflows/release-publish.yml b/.github/workflows/release-publish.yml index 25ff02e53..15bd46da0 100644 --- a/.github/workflows/release-publish.yml +++ b/.github/workflows/release-publish.yml @@ -22,21 +22,21 @@ jobs: with: publish: true - # - name: Create GitHub Release - # uses: softprops/action-gh-release@v1 - # with: - # tag_name: ${{ github.ref_name }} - # name: Release ${{ github.ref_name }} - # body: | - # ## Package Release - - # Released package: ${{ github.ref_name }} - - # See the package CHANGELOG for detailed changes. - - # --- - # *This release was created automatically by the Publish Packages workflow.* - # draft: false - # prerelease: false - # env: - # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file + - name: Create GitHub Release + uses: softprops/action-gh-release@v1 + with: + tag_name: ${{ github.ref_name }} + name: Release ${{ github.ref_name }} + body: | + ## Package Release + + Released package: ${{ github.ref_name }} + + See the package CHANGELOG for detailed changes. + + --- + *This release was created automatically by the Publish Packages workflow.* + draft: false + prerelease: false + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}