Skip to content

Commit 8a85ad5

Browse files
committed
chore: setup release-please
1 parent ae2d12d commit 8a85ad5

File tree

4 files changed

+180
-1
lines changed

4 files changed

+180
-1
lines changed
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
name: Release Please
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
8+
permissions:
9+
contents: write
10+
pull-requests: write
11+
12+
jobs:
13+
release-please:
14+
runs-on: ubuntu-latest
15+
outputs:
16+
releases_created: ${{ steps.release.outputs.releases_created }}
17+
paths_released: ${{ steps.release.outputs.paths_released }}
18+
steps:
19+
- name: Release Please
20+
id: release
21+
uses: googleapis/release-please-action@v4
22+
with:
23+
config-file: release-please-config.json
24+
manifest-file: .release-please-manifest.json
25+
token: ${{ secrets.GITHUB_TOKEN }}
26+
27+
publish:
28+
needs: release-please
29+
if: needs.release-please.outputs.releases_created == 'true'
30+
runs-on: ubuntu-latest
31+
steps:
32+
- name: Checkout code
33+
uses: actions/checkout@v4
34+
35+
- name: Setup Dart
36+
uses: dart-lang/setup-dart@v1
37+
with:
38+
sdk: stable
39+
40+
- name: Setup Flutter
41+
uses: subosito/flutter-action@v2
42+
with:
43+
flutter-version: 'stable'
44+
channel: 'stable'
45+
46+
- name: Get Dart dependencies
47+
run: dart pub global activate melos
48+
49+
- name: Bootstrap workspace
50+
run: melos bootstrap
51+
52+
- name: Run version update hook
53+
run: melos run update-version
54+
55+
- name: Run tests
56+
run: melos run test --no-select
57+
58+
- name: Setup pub credentials
59+
run: |
60+
mkdir -p ~/.config/dart
61+
cat <<EOF > ~/.config/dart/pub-credentials.json
62+
{
63+
"accessToken":"${{ secrets.PUB_DEV_ACCESS_TOKEN }}",
64+
"refreshToken":"${{ secrets.PUB_DEV_REFRESH_TOKEN }}",
65+
"tokenEndpoint":"https://accounts.google.com/o/oauth2/token",
66+
"scopes":["https://www.googleapis.com/auth/userinfo.email","openid"],
67+
"expiration":${{ secrets.PUB_DEV_TOKEN_EXPIRATION }}
68+
}
69+
EOF
70+
71+
- name: Publish packages
72+
run: |
73+
# Parse the released paths and publish each package
74+
echo '${{ needs.release-please.outputs.paths_released }}' | jq -r '.[]' | while read -r path; do
75+
echo "Publishing package in $path"
76+
cd "$path"
77+
if [ -f "pubspec.yaml" ]; then
78+
dart pub publish --force
79+
fi
80+
cd - > /dev/null
81+
done

.release-please-manifest.json

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"packages/functions_client": "2.4.4",
3+
"packages/gotrue": "2.15.0",
4+
"packages/postgrest": "2.4.2",
5+
"packages/realtime_client": "2.5.2",
6+
"packages/storage_client": "2.4.1",
7+
"packages/supabase": "2.9.1",
8+
"packages/supabase_flutter": "2.10.1",
9+
"packages/yet_another_json_isolate": "2.1.0"
10+
}

melos.yaml

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,12 @@ scripts:
3232
format:
3333
exec: dart format lib test -l 80 --set-exit-if-changed
3434

35+
test:
36+
exec: dart test --concurrency=1
37+
description: Run tests for all packages
38+
packageFilters:
39+
dirExists: test
40+
3541
upgrade:
3642
exec: dart pub upgrade
3743

@@ -44,7 +50,7 @@ scripts:
4450
# Loop through the packages directory
4551
for d in packages/*/ ; do
4652
# Get version number
47-
version=$(awk '/version:/ {
53+
version=$(awk '/version:/ {
4854
pos=match($2, /[0-9]+\.[0-9]+\.[0-9]+/);
4955
print substr($2, pos); }' $d/pubspec.yaml)
5056
# Update version.dart file
@@ -54,4 +60,10 @@ scripts:
5460
rm packages/yet_another_json_isolate/lib/src/version.dart
5561
# Stage the version.dart file change
5662
git add packages/*/lib/src/version.dart
63+
64+
release:prepare:
65+
description: Prepare packages for release by running tests and lints
66+
run: |
67+
melos run lint:all --no-select
68+
melos run test --no-select
5769

release-please-config.json

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
{
2+
"release-type": "dart",
3+
"bootstrap-sha": "ae2d12d0c8a1e2f3b4c5d6e7f8a9b0c1d2e3f4a5",
4+
"packages": {
5+
"packages/functions_client": {
6+
"release-type": "dart",
7+
"package-name": "functions_client",
8+
"changelog-path": "CHANGELOG.md"
9+
},
10+
"packages/gotrue": {
11+
"release-type": "dart",
12+
"package-name": "gotrue",
13+
"changelog-path": "CHANGELOG.md"
14+
},
15+
"packages/postgrest": {
16+
"release-type": "dart",
17+
"package-name": "postgrest",
18+
"changelog-path": "CHANGELOG.md"
19+
},
20+
"packages/realtime_client": {
21+
"release-type": "dart",
22+
"package-name": "realtime_client",
23+
"changelog-path": "CHANGELOG.md"
24+
},
25+
"packages/storage_client": {
26+
"release-type": "dart",
27+
"package-name": "storage_client",
28+
"changelog-path": "CHANGELOG.md"
29+
},
30+
"packages/supabase": {
31+
"release-type": "dart",
32+
"package-name": "supabase",
33+
"changelog-path": "CHANGELOG.md"
34+
},
35+
"packages/supabase_flutter": {
36+
"release-type": "dart",
37+
"package-name": "supabase_flutter",
38+
"changelog-path": "CHANGELOG.md"
39+
},
40+
"packages/yet_another_json_isolate": {
41+
"release-type": "dart",
42+
"package-name": "yet_another_json_isolate",
43+
"changelog-path": "CHANGELOG.md"
44+
}
45+
},
46+
"plugins": [
47+
{
48+
"type": "linked-versions",
49+
"group-name": "supabase-flutter-packages",
50+
"components": [
51+
"packages/functions_client",
52+
"packages/gotrue",
53+
"packages/postgrest",
54+
"packages/realtime_client",
55+
"packages/storage_client",
56+
"packages/supabase",
57+
"packages/supabase_flutter",
58+
"packages/yet_another_json_isolate"
59+
]
60+
}
61+
],
62+
"group-pull-request-title-pattern": "chore(release): release ${version}",
63+
"pull-request-title-pattern": "chore(${scope}): release ${version}",
64+
"changelog-sections": [
65+
{"type": "feat", "section": "Features"},
66+
{"type": "fix", "section": "Bug Fixes"},
67+
{"type": "chore", "section": "Miscellaneous Chores", "hidden": false},
68+
{"type": "docs", "section": "Documentation"},
69+
{"type": "style", "section": "Styles", "hidden": true},
70+
{"type": "refactor", "section": "Code Refactoring"},
71+
{"type": "perf", "section": "Performance Improvements"},
72+
{"type": "test", "section": "Tests", "hidden": true},
73+
{"type": "build", "section": "Build System", "hidden": true},
74+
{"type": "ci", "section": "Continuous Integration", "hidden": true}
75+
]
76+
}

0 commit comments

Comments
 (0)