Skip to content

Commit bcbb4ee

Browse files
committed
- Add GitHub Actions workflows for CI, code quality, and release
- Add pull request template - Add Dependabot configuration
1 parent 395ce01 commit bcbb4ee

File tree

5 files changed

+288
-0
lines changed

5 files changed

+288
-0
lines changed

.github/dependabot.yaml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
version: 2
2+
updates:
3+
- package-ecosystem: "pub"
4+
directory: "/"
5+
schedule:
6+
interval: "weekly"
7+
open-pull-requests-limit: 10
8+
9+
- package-ecosystem: "github-actions"
10+
directory: "/"
11+
schedule:
12+
interval: "weekly"

.github/pull_request_template.md

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
name: pull_request_template.md
2+
about: Template for pull requests
3+
title: '[FEATURE] '
4+
labels: ''
5+
assignees: ''
6+
7+
---
8+
9+
## Description
10+
11+
Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context.
12+
13+
Fixes # (issue)
14+
15+
## Type of change
16+
17+
Please delete options that are not relevant.
18+
19+
- [ ] Bug fix (non-breaking change which fixes an issue)
20+
- [ ] New feature (non-breaking change which adds functionality)
21+
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
22+
- [ ] This change requires a documentation update
23+
24+
## How Has This Been Tested?
25+
26+
Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce.
27+
28+
- [ ] Test A
29+
- [ ] Test B
30+
31+
## Checklist:
32+
33+
- [ ] My code follows the style guidelines of this project
34+
- [ ] I have performed a self-review of my own code
35+
- [ ] I have commented my code, particularly in hard-to-understand areas
36+
- [ ] I have made corresponding changes to the documentation
37+
- [ ] My changes generate no new warnings
38+
- [ ] I have added tests that prove my fix is effective or that my feature works
39+
- [ ] New and existing unit tests pass locally with my changes
40+
- [ ] Any dependent changes have been merged and published in downstream modules
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
name: Code Quality
2+
3+
on:
4+
pull_request:
5+
branches:
6+
- main
7+
- develop
8+
9+
jobs:
10+
code_quality:
11+
name: Code Quality Checks
12+
runs-on: ubuntu-latest
13+
steps:
14+
- name: Checkout code
15+
uses: actions/checkout@v4
16+
17+
- name: Setup Flutter
18+
uses: subosito/flutter-action@v2
19+
with:
20+
flutter-version: '3.24.0'
21+
channel: 'stable'
22+
cache: true
23+
24+
- name: Get dependencies
25+
run: flutter pub get
26+
27+
- name: Check Dart code formatting
28+
run: dart format --output=none --set-exit-if-changed .
29+
30+
- name: Analyze project
31+
run: flutter analyze
32+
33+
- name: Run tests with coverage
34+
run: flutter test --coverage
35+
36+
- name: Check for build warnings
37+
run: flutter build apk --debug --quiet

.github/workflows/flutter_ci.yaml

Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
name: Flutter CI
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
- develop
8+
pull_request:
9+
branches:
10+
- main
11+
- develop
12+
13+
jobs:
14+
flutter_test:
15+
name: Flutter Test and Analyze
16+
runs-on: ubuntu-latest
17+
steps:
18+
- name: Checkout code
19+
uses: actions/checkout@v4
20+
21+
- name: Setup Java
22+
uses: actions/setup-java@v4
23+
with:
24+
distribution: 'zulu'
25+
java-version: '17'
26+
27+
- name: Setup Flutter
28+
uses: subosito/flutter-action@v2
29+
with:
30+
flutter-version: '3.24.0'
31+
channel: 'stable'
32+
cache: true
33+
34+
- name: Get dependencies
35+
run: flutter pub get
36+
37+
- name: Check format
38+
run: dart format --output=none --set-exit-if-changed .
39+
40+
- name: Analyze
41+
run: flutter analyze
42+
43+
- name: Run tests
44+
run: flutter test --coverage
45+
46+
- name: Upload coverage to Codecov
47+
uses: codecov/codecov-action@v4
48+
with:
49+
token: ${{ secrets.CODECOV_TOKEN }}
50+
file: coverage/lcov.info
51+
52+
build_android:
53+
name: Build Android App
54+
runs-on: ubuntu-latest
55+
needs: flutter_test
56+
steps:
57+
- name: Checkout code
58+
uses: actions/checkout@v4
59+
60+
- name: Setup Java
61+
uses: actions/setup-java@v4
62+
with:
63+
distribution: 'zulu'
64+
java-version: '17'
65+
66+
- name: Setup Flutter
67+
uses: subosito/flutter-action@v2
68+
with:
69+
flutter-version: '3.24.0'
70+
channel: 'stable'
71+
cache: true
72+
73+
- name: Get dependencies
74+
run: flutter pub get
75+
76+
- name: Build APK
77+
run: flutter build apk --release
78+
79+
- name: Build App Bundle
80+
run: flutter build appbundle --release
81+
82+
- name: Upload APK as artifact
83+
uses: actions/upload-artifact@v4
84+
with:
85+
name: release-apk
86+
path: build/app/outputs/flutter-apk/app-release.apk
87+
88+
- name: Upload App Bundle as artifact
89+
uses: actions/upload-artifact@v4
90+
with:
91+
name: release-appbundle
92+
path: build/app/outputs/bundle/release/app-release.aab
93+
94+
build_ios:
95+
name: Build iOS App
96+
runs-on: macos-latest
97+
needs: flutter_test
98+
steps:
99+
- name: Checkout code
100+
uses: actions/checkout@v4
101+
102+
- name: Setup Flutter
103+
uses: subosito/flutter-action@v2
104+
with:
105+
flutter-version: '3.24.0'
106+
channel: 'stable'
107+
cache: true
108+
109+
- name: Get dependencies
110+
run: flutter pub get
111+
112+
- name: Build iOS
113+
run: flutter build ios --release --no-codesign
114+
115+
- name: Create IPA
116+
run: |
117+
cd build/ios/iphoneos
118+
mkdir Payload
119+
cp -r Runner.app Payload/
120+
zip -r app-release.ipa Payload/
121+
122+
- name: Upload IPA as artifact
123+
uses: actions/upload-artifact@v4
124+
with:
125+
name: release-ipa
126+
path: build/ios/iphoneos/app-release.ipa

.github/workflows/release.yaml

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
name: Release
2+
3+
on:
4+
push:
5+
tags:
6+
- 'v*'
7+
8+
jobs:
9+
create_release:
10+
name: Create Release
11+
runs-on: ubuntu-latest
12+
steps:
13+
- name: Checkout code
14+
uses: actions/checkout@v4
15+
16+
- name: Create Release
17+
uses: actions/create-release@v1
18+
env:
19+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
20+
with:
21+
tag_name: ${{ github.ref }}
22+
release_name: Release ${{ github.ref }}
23+
draft: false
24+
prerelease: false
25+
26+
build_and_upload_assets:
27+
name: Build and Upload Release Assets
28+
runs-on: ubuntu-latest
29+
steps:
30+
- name: Checkout code
31+
uses: actions/checkout@v4
32+
33+
- name: Setup Java
34+
uses: actions/setup-java@v4
35+
with:
36+
distribution: 'zulu'
37+
java-version: '17'
38+
39+
- name: Setup Flutter
40+
uses: subosito/flutter-action@v2
41+
with:
42+
flutter-version: '3.24.0'
43+
channel: 'stable'
44+
cache: true
45+
46+
- name: Get dependencies
47+
run: flutter pub get
48+
49+
- name: Build APK
50+
run: flutter build apk --release
51+
52+
- name: Build App Bundle
53+
run: flutter build appbundle --release
54+
55+
- name: Upload APK to Release
56+
uses: actions/upload-release-asset@v1
57+
env:
58+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
59+
with:
60+
upload_url: ${{ steps.create_release.outputs.upload_url }}
61+
asset_path: build/app/outputs/flutter-apk/app-release.apk
62+
asset_name: app-release.apk
63+
asset_content_type: application/vnd.android.package-archive
64+
65+
- name: Upload App Bundle to Release
66+
uses: actions/upload-release-asset@v1
67+
env:
68+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
69+
with:
70+
upload_url: ${{ steps.create_release.outputs.upload_url }}
71+
asset_path: build/app/outputs/bundle/release/app-release.aab
72+
asset_name: app-release.aab
73+
asset_content_type: application/x-authorware-bin

0 commit comments

Comments
 (0)