Skip to content

Commit

Permalink
Merge pull request #8 from devtodollars/add-release-pipelines
Browse files Browse the repository at this point in the history
Add release pipelines
  • Loading branch information
matthewwong525 authored Mar 2, 2024
2 parents 38ec4c6 + 5dde981 commit 1b76cd7
Show file tree
Hide file tree
Showing 15 changed files with 158 additions and 46 deletions.
59 changes: 59 additions & 0 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
name: publish
on:
# Allows manual trigger from Actions tab
workflow_dispatch:
release:
types: [published]
jobs:
publish-web:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v3

- uses: robinraju/[email protected]
id: get_release
with:
latest: true
fileName: "web.zip"
out-file-path: "release-asset"

- name: Extract Release Asset
run: unzip release-asset/web.zip -d release-asset/web

- name: Deploy to Netlify
uses: nwtgck/[email protected]
with:
publish-dir: './release-asset/web'
production-deploy: true
production-branch: main
alias: ${{steps.get_release.outputs.tag_name}}
github-token: ${{ secrets.GITHUB_TOKEN }}
deploy-message: "Deploy from GitHub Actions"
env:
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }}
timeout-minutes: 1

publish-supabase:
runs-on: ubuntu-latest

env:
SUPABASE_ACCESS_TOKEN: ${{ secrets.SUPABASE_ACCESS_TOKEN }}
SUPABASE_PROJECT_ID: ${{ secrets.SUPABASE_PROJECT_ID }}

steps:
- uses: actions/checkout@v3

- uses: supabase/setup-cli@v1
with:
version: latest

# Adding retry step: https://github.com/supabase/setup-cli/issues/146
- name: Deploy Supabase Functions with Retry
uses: nick-fields/retry@v2
with:
timeout_minutes: 10 # Optional timeout for the retry block
max_attempts: 3
command: supabase functions deploy --project-ref $SUPABASE_PROJECT_ID

62 changes: 62 additions & 0 deletions .github/workflows/web.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
name: web
on:
# Triggers workflow on PR but only for main branch
push:
branches: [ main ]
# for release
tags:
- "v*.*.*"
pull_request:
branches: [ main ]

# Allows manual trigger from Actions tab
workflow_dispatch:

jobs:
build-web:
permissions: write-all
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./flutter
steps:
- uses: actions/checkout@v3
- uses: subosito/flutter-action@v2
with:
flutter-version: '3.19.2'
cache: true
channel: 'stable'
- run: flutter doctor -v
- run: flutter analyze
- run: flutter pub get
- run: flutter test
- name: Build and zip
run: |
flutter build web --dart-define-from-file=env.json
cd ./build/web
zip -r ../web.zip .
- name: Release
uses: softprops/action-gh-release@v1
if: startsWith(github.ref, 'refs/tags/')
with:
files: |
flutter/build/web.zip
draft: true
fail_on_unmatched_files: true
- name: Deploy to Netlify
uses: nwtgck/[email protected]
if: github.event_name == 'pull_request'
with:
publish-dir: './flutter/build/web'
production-branch: main
alias: ${{ github.sha }}
github-token: ${{ secrets.GITHUB_TOKEN }}
deploy-message: "Deploy from GitHub Actions"
enable-pull-request-comment: true
enable-commit-comment: true
overwrites-pull-request-comment: false
env:
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }}
timeout-minutes: 1

16 changes: 16 additions & 0 deletions flutter/bumpversion.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#!/bin/bash
set -e
if [ -z "$1" ]
then
echo "Please provide a version number (e.g. ./bumpversion.sh 1.2.3 )"
# TODO: No argument supplied, so bump the patch version.
# perl -i -pe 's/^(version:\s+\d+\.\d+\.\d+\+)(\d+)$/$1.($2+1)/e' pubspec.yaml
# version=`grep 'version: ' pubspec.yaml | sed 's/version: //'`
else
# Argument supplied, so bump to version specified
perl -i -pe 's/^(version:\s+\d+\.\d+\.\d+\+)(\d+)$/$1.($2+1)/e' pubspec.yaml
sed -i '' "s/^version.*+/version: $1+/g" pubspec.yaml
version=$1
git commit -m "Bump version to $version" pubspec.yaml
git tag v$version
fi
4 changes: 2 additions & 2 deletions flutter/lib/components/email_form.dart
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:supabase_flutter/supabase_flutter.dart';
import 'package:test/components/recover_password_dialog.dart';
import 'package:test/services/auth_notifier.dart';
import 'package:devtodollars/components/recover_password_dialog.dart';
import 'package:devtodollars/services/auth_notifier.dart';

enum AuthAction { signIn, signUp }

Expand Down
2 changes: 1 addition & 1 deletion flutter/lib/components/recover_password_dialog.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:supabase_flutter/supabase_flutter.dart';
import 'package:test/services/auth_notifier.dart';
import 'package:devtodollars/services/auth_notifier.dart';

class RecoverPasswordDialog extends ConsumerStatefulWidget {
const RecoverPasswordDialog({
Expand Down
2 changes: 1 addition & 1 deletion flutter/lib/components/reset_password_dialog.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:supabase_flutter/supabase_flutter.dart';
import 'package:test/services/auth_notifier.dart';
import 'package:devtodollars/services/auth_notifier.dart';

class ResetPasswordDialog extends ConsumerStatefulWidget {
const ResetPasswordDialog({
Expand Down
2 changes: 1 addition & 1 deletion flutter/lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:flutter_web_plugins/url_strategy.dart';
import 'package:supabase_flutter/supabase_flutter.dart';
import 'package:test/services/router_notifier.dart';
import 'package:devtodollars/services/router_notifier.dart';

void main() async {
usePathUrlStrategy();
Expand Down
2 changes: 1 addition & 1 deletion flutter/lib/screens/auth_screen.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import 'package:flutter/material.dart';
import 'package:test/components/email_form.dart';
import 'package:devtodollars/components/email_form.dart';

class AuthScreen extends StatelessWidget {
const AuthScreen({super.key});
Expand Down
2 changes: 1 addition & 1 deletion flutter/lib/screens/home_screen.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:go_router/go_router.dart';
import 'package:test/services/auth_notifier.dart';
import 'package:devtodollars/services/auth_notifier.dart';

class HomeScreen extends ConsumerStatefulWidget {
const HomeScreen({super.key, required this.title});
Expand Down
2 changes: 1 addition & 1 deletion flutter/lib/screens/payments_screen.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:go_router/go_router.dart';
import 'package:test/services/auth_notifier.dart';
import 'package:devtodollars/services/auth_notifier.dart';
import 'package:url_launcher/url_launcher.dart';

class PaymentsScreen extends ConsumerStatefulWidget {
Expand Down
2 changes: 1 addition & 1 deletion flutter/lib/services/auth_notifier.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import 'dart:async';
import 'package:flutter/foundation.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
import 'package:supabase_flutter/supabase_flutter.dart' as supa;
import 'package:test/models/app_user.dart';
import 'package:devtodollars/models/app_user.dart';
// ignore: depend_on_referenced_packages
import 'package:path/path.dart' as p;

Expand Down
12 changes: 6 additions & 6 deletions flutter/lib/services/router_notifier.dart
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
import 'package:test/components/dialog_page.dart';
import 'package:test/components/reset_password_dialog.dart';
import 'package:test/screens/auth_screen.dart';
import 'package:test/screens/home_screen.dart';
import 'package:test/screens/payments_screen.dart';
import 'package:test/services/auth_notifier.dart';
import 'package:devtodollars/components/dialog_page.dart';
import 'package:devtodollars/components/reset_password_dialog.dart';
import 'package:devtodollars/screens/auth_screen.dart';
import 'package:devtodollars/screens/home_screen.dart';
import 'package:devtodollars/screens/payments_screen.dart';
import 'package:devtodollars/services/auth_notifier.dart';

part 'router_notifier.g.dart';

Expand Down
4 changes: 2 additions & 2 deletions flutter/pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -229,10 +229,10 @@ packages:
dependency: transitive
description:
name: dart_style
sha256: "40ae61a5d43feea6d24bd22c0537a6629db858963b99b4bc1c3db80676f32368"
sha256: "99e066ce75c89d6b29903d788a7bb9369cf754f7b24bf70bf4b6d6d6b26853b9"
url: "https://pub.dev"
source: hosted
version: "2.3.4"
version: "2.3.6"
fake_async:
dependency: transitive
description:
Expand Down
6 changes: 3 additions & 3 deletions flutter/pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: test
description: "A new Flutter project."
name: devtodollars
description: "A flutter supabase template to get started with building a startup"
# The following line prevents the package from being accidentally published to
# pub.dev using `flutter pub publish`. This is preferred for private packages.
publish_to: 'none' # Remove this line if you wish to publish to pub.dev
Expand All @@ -16,7 +16,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
# In Windows, build-name is used as the major, minor, and patch parts
# of the product and file versions while build-number is used as the build suffix.
version: 1.0.0+1
version: 0.0.0+0

environment:
sdk: '>=3.2.3 <4.0.0'
Expand Down
27 changes: 1 addition & 26 deletions flutter/test/widget_test.dart
Original file line number Diff line number Diff line change
@@ -1,30 +1,5 @@
// This is a basic Flutter widget test.
//
// To perform an interaction with a widget in your test, use the WidgetTester
// utility in the flutter_test package. For example, you can send tap and scroll
// gestures. You can also use WidgetTester to find child widgets in the widget
// tree, read text, and verify that the values of widget properties are correct.

import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';

import 'package:test/main.dart';

void main() {
testWidgets('Counter increments smoke test', (WidgetTester tester) async {
// Build our app and trigger a frame.
await tester.pumpWidget(const MyApp());

// Verify that our counter starts at 0.
expect(find.text('0'), findsOneWidget);
expect(find.text('1'), findsNothing);

// Tap the '+' icon and trigger a frame.
await tester.tap(find.byIcon(Icons.add));
await tester.pump();

// Verify that our counter has incremented.
expect(find.text('0'), findsNothing);
expect(find.text('1'), findsOneWidget);
});
testWidgets('TODO: add tests', (WidgetTester tester) async {});
}

0 comments on commit 1b76cd7

Please sign in to comment.