-
Notifications
You must be signed in to change notification settings - Fork 213
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
chore: setup pipeline for flutter app (#943)
- Loading branch information
1 parent
f66b851
commit 818655a
Showing
92 changed files
with
1,403 additions
and
324 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
name: Badge Magic PR CI | ||
on: | ||
pull_request: | ||
branches: ["flutter_app"] | ||
jobs: | ||
common: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v4 | ||
|
||
- name: Set up Flutter | ||
uses: subosito/flutter-action@v2 | ||
with: | ||
cache: true | ||
|
||
- name: Fetch Flutter Dependencies | ||
run: flutter pub get | ||
|
||
- name: Validate Code Format | ||
run: dart format --output=none --set-exit-if-changed . | ||
|
||
- name: Analyze Code | ||
run: flutter analyze | ||
|
||
android: | ||
needs: common | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v4 | ||
|
||
- name: Set up Flutter | ||
uses: subosito/flutter-action@v2 | ||
with: | ||
cache: true | ||
|
||
- name: Run tests | ||
run: flutter test | ||
|
||
- name: Build Android APK/AAB | ||
run: | | ||
flutter build apk | ||
flutter build appbundle | ||
ios: | ||
needs: common | ||
runs-on: macos-latest | ||
steps: | ||
- uses: actions/checkout@v4 | ||
|
||
- name: Set up Flutter | ||
uses: subosito/flutter-action@v2 | ||
with: | ||
cache: true | ||
|
||
- name: Run tests | ||
run: flutter test | ||
|
||
- name: Build iOS IPA | ||
run: | | ||
flutter build ipa --no-codesign | ||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,203 @@ | ||
name: Badge Magic Push CI | ||
on: | ||
push: | ||
branches: ["flutter_app"] | ||
jobs: | ||
common: | ||
runs-on: ubuntu-latest | ||
|
||
outputs: | ||
VERSION_NAME: ${{ steps.flutter-version.outputs.VERSION_NAME }} | ||
VERSION_CODE: ${{ steps.flutter-version.outputs.VERSION_CODE }} | ||
|
||
steps: | ||
- uses: actions/checkout@v4 | ||
|
||
- name: Set up Flutter | ||
uses: subosito/flutter-action@v2 | ||
with: | ||
cache: true | ||
|
||
- name: Fetch Flutter Dependencies | ||
run: flutter pub get | ||
|
||
- name: Validate Code Format | ||
run: dart format --output=none --set-exit-if-changed . | ||
|
||
- name: Analyze Code | ||
run: flutter analyze | ||
|
||
- name: Hydrate and Update Version | ||
id: flutter-version | ||
run: | | ||
git config --global user.name "${{ github.workflow }}" | ||
git config --global user.email "gh-actions@${{ github.repository_owner }}" | ||
git clone --branch=version https://${{ github.repository_owner }}:${{ github.token }}@github.com/${{ github.repository }} version | ||
cd version | ||
# Read and increment version name | ||
IFS='.' read -r major minor patch < versionName.txt | ||
current_patch_version_name="$major.$minor.$patch" | ||
echo "VERSION_NAME=$current_patch_version_name" >> $GITHUB_OUTPUT | ||
next_patch=$((patch + 1)) | ||
next_patch_version_name="$major.$minor.$next_patch" | ||
echo "$next_patch_version_name" > versionName.txt | ||
# Read and increment version code | ||
read -r version_code < versionCode.txt | ||
echo "VERSION_CODE=$version_code" >> $GITHUB_OUTPUT | ||
new_version_code=$((version_code + 1)) | ||
echo "$new_version_code" > versionCode.txt | ||
# Force push to version branch | ||
git checkout --orphan temporary | ||
git add --all . | ||
git commit -am "[Auto] Update versionName: $next_patch_version_name & versionCode: $new_version_code ($(date +%Y-%m-%d.%H:%M:%S))" | ||
git branch -D version | ||
git branch -m version | ||
git push --force origin version | ||
|
||
android: | ||
needs: common | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v4 | ||
|
||
- uses: actions/cache@v3 | ||
with: | ||
path: | | ||
~/.gradle/caches | ||
~/.gradle/wrapper | ||
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }} | ||
restore-keys: | | ||
${{ runner.os }}-gradle- | ||
- name: Setup Ruby | ||
if: ${{ github.repository == 'fossasia/badgemagic-android' }} | ||
uses: ruby/setup-ruby@v1 | ||
with: | ||
ruby-version: '3.3' | ||
bundler-cache: true | ||
|
||
- name: Prepare Bundler | ||
if: ${{ github.repository == 'fossasia/badgemagic-android' }} | ||
run: | | ||
bundle config path vendor/bundle | ||
bundle install --jobs 4 --retry 3 | ||
- name: Pre Checks | ||
run: | | ||
bash scripts/check-screenshots.sh | ||
- name: Prepare Build Keys | ||
if: ${{ github.repository == 'fossasia/badgemagic-android' }} | ||
env: | ||
ENCRYPTED_F10B5E0E5262_IV: ${{ secrets.ENCRYPTED_F10B5E0E5262_IV }} | ||
ENCRYPTED_F10B5E0E5262_KEY: ${{ secrets.ENCRYPTED_F10B5E0E5262_KEY }} | ||
run: | | ||
bash scripts/prep-key.sh | ||
- name: Set up Flutter | ||
uses: subosito/flutter-action@v2 | ||
with: | ||
cache: true | ||
|
||
- name: Run tests | ||
run: flutter test | ||
|
||
- name: Build Android APK/AAB | ||
env: | ||
STORE_PASS: ${{ secrets.STORE_PASS }} | ||
ALIAS: ${{ secrets.ALIAS }} | ||
KEY_PASS: ${{ secrets.KEY_PASS }} | ||
VERSION_NAME: ${{needs.common.outputs.VERSION_NAME}} | ||
VERSION_CODE: ${{needs.common.outputs.VERSION_CODE}} | ||
run: | | ||
flutter build apk --build-name $VERSION_NAME --build-number $VERSION_CODE | ||
flutter build appbundle --build-name $VERSION_NAME --build-number $VERSION_CODE | ||
- name: Upload APK | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: APK Generated | ||
path: build/app/outputs/flutter-apk | ||
|
||
- name: Upload AAB Release | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: AAB Generated | ||
path: build/app/outputs/bundle | ||
|
||
- name: Upload APK/AAB to apk branch | ||
if: ${{ github.repository == 'fossasia/badgemagic-android' }} | ||
run: | | ||
git config --global user.name "${{ github.workflow }}" | ||
git config --global user.email "gh-actions@${{ github.repository_owner }}" | ||
git clone --branch=apk https://${{ github.repository_owner }}:${{ github.token }}@github.com/${{ github.repository }} apk | ||
cd apk | ||
branch=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}} | ||
echo "Removing previous files from branch" | ||
rm -rf badge-magic-$branch* | ||
ls | ||
echo "Copying new build files" | ||
find ../build/app/outputs/flutter-apk -type f \( -name '*.apk' -o -name '*.aab' \) -exec cp -v {} . \; | ||
find ../build/app/outputs/bundle -type f \( -name '*.apk' -o -name '*.aab' \) -exec cp -v {} . \; | ||
ls | ||
echo "Renaming new build files" | ||
for file in app*; do | ||
mv $file badge-magic-$branch-${file#*-} | ||
done | ||
ls | ||
echo "Pushing to apk branch" | ||
git checkout --orphan temporary | ||
git add --all . | ||
git commit -am "[Auto] Update APK/AAB's from $branch ($(date +%Y-%m-%d.%H:%M:%S))" | ||
git branch -D apk | ||
git branch -m apk | ||
git push --force origin apk | ||
- name: Upload alpha version to playstore | ||
if: ${{ github.repository == 'fossasia/badgemagic-android' }} | ||
run: | | ||
bundle exec fastlane uploadToPlaystore | ||
if [[ $? -ne 0 ]]; then | ||
exit 1 | ||
fi | ||
ios: | ||
needs: common | ||
runs-on: macos-latest | ||
steps: | ||
- uses: actions/checkout@v4 | ||
|
||
- name: Set up Flutter | ||
uses: subosito/flutter-action@v2 | ||
with: | ||
cache: true | ||
|
||
- name: Run tests | ||
run: flutter test | ||
|
||
- name: Build iOS IPA | ||
env: | ||
VERSION_NAME: ${{needs.common.outputs.VERSION_NAME}} | ||
VERSION_CODE: ${{needs.common.outputs.VERSION_CODE}} | ||
run: | | ||
flutter build ipa --no-codesign --build-name $VERSION_NAME --build-number $VERSION_CODE |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
source "https://rubygems.org" | ||
|
||
gem "fastlane" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
2 changes: 1 addition & 1 deletion
2
.../com/example/badgemagic/MainActivity.java → ...org/fossasia/badgemagic/MainActivity.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
## Commit Style Guidelines for Badge Magic Android | ||
|
||
### Message Structure | ||
Commit messages consist of three distinct parts, separated by a blank line: the title, an optional body/content, and an optional footer/metadata. The layout looks like this: | ||
|
||
type: subject | ||
|
||
body | ||
|
||
footer | ||
|
||
*** | ||
|
||
### Title | ||
The title consists of the subject and type of the commit message. | ||
|
||
### Type | ||
The type is contained within the title and can be one of the following types: | ||
|
||
* **feat:** a new feature | ||
* **fix:** a bug fix | ||
* **docs:** changes to documentation | ||
* **style:** formatting, missing semi-colons, etc; no code change | ||
* **refactor:** refactoring production code | ||
* **test:** adding tests, refactoring test; no production code change | ||
* **chore:** updating build tasks, package manager configs, etc; no production code change | ||
|
||
### Subject | ||
The subject is a single short line summarising the change. It should be no greater than 50 characters, should begin with a capital letter and do not end with a period. | ||
|
||
Use an imperative tone to describe what a commit does, rather than what it did. For example, use fix; not fixed or fixes or fixing. | ||
|
||
For example: | ||
- fix: Typo in Commit Style guidelines | ||
- feat: Update UI of AbcActivity | ||
- fix: Remove deprecated methods | ||
- refactor: API endpoints and JSON assets | ||
|
||
instead of writing the following: | ||
- Fixed bug with Y | ||
- Changing behaviour of X | ||
|
||
### Body | ||
The body includes the kind of information commit message (if any) should contain. | ||
|
||
Not every commit requires both a subject and a body. Sometimes a single line is fine, especially when the change is self-explanatory and no further context is necessary, therefore it is optional. The body is used to explain the what and why of a commit, not the how. | ||
|
||
When writing a body, the blank line between the title and the body is required and we should try to limit the length of each line to no more than 72 characters. | ||
|
||
### The Footer | ||
The footer is optional and is used to reference issue tracker IDs. | ||
|
||
For example: | ||
Fixes #1170 | ||
|
||
*** |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Oops, something went wrong.