-
Notifications
You must be signed in to change notification settings - Fork 12
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Adds nightly build, integration tests, release, and pre-release workflows.
- Loading branch information
Showing
31 changed files
with
1,085 additions
and
1,060 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,153 @@ | ||
name: Build and Run Integration Tests | ||
|
||
run-name: ${{ github.actor }} is building and testing OpenHIIT | ||
|
||
on: | ||
workflow_dispatch: | ||
pull_request: | ||
types: | ||
- opened | ||
- reopened | ||
- synchronize | ||
- ready_for_review | ||
branches: | ||
- 'main' | ||
- 'pre-release' | ||
paths: | ||
- 'lib/**' | ||
- 'test_driver/**' | ||
- 'integration_test/**' | ||
- 'pubspec.yaml' | ||
- 'pubspec.lock' | ||
- 'android/**' | ||
- 'ios/**' | ||
|
||
jobs: | ||
|
||
Workout: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v3 | ||
|
||
- name: Set up JDK 17 | ||
uses: actions/setup-java@v3 | ||
with: | ||
java-version: '17' | ||
distribution: 'temurin' | ||
|
||
- uses: subosito/flutter-action@v2 | ||
with: | ||
channel: 'stable' | ||
- name: Check Version | ||
run: flutter --version | ||
|
||
- name: Flutter Doctor | ||
run: flutter doctor -v | ||
|
||
- name: Enable KVM | ||
run: | | ||
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules | ||
sudo udevadm control --reload-rules | ||
sudo udevadm trigger --name-match=kvm | ||
- name: Setup Android SDK | ||
uses: android-actions/setup-android@v3 | ||
|
||
- name: run tests | ||
uses: reactivecircus/android-emulator-runner@v2 | ||
with: | ||
api-level: 35 | ||
arch: x86_64 | ||
profile: pixel_6_pro | ||
script: | | ||
flutter build apk --target integration_test/workout_test.dart --debug | ||
adb -s emulator-5554 install build/app/outputs/flutter-apk/app-debug.apk | ||
adb -s emulator-5554 root | ||
adb -s emulator-5554 shell appops set com.codepup.workout_timer SCHEDULE_EXACT_ALARM allow | ||
flutter drive -d emulator-5554 --driver=test_driver/integration_test.dart --use-application-binary=build/app/outputs/flutter-apk/app-debug.apk | ||
Timer: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v3 | ||
|
||
- name: Set up JDK 17 | ||
uses: actions/setup-java@v3 | ||
with: | ||
java-version: '17' | ||
distribution: 'temurin' | ||
|
||
- uses: subosito/flutter-action@v2 | ||
with: | ||
channel: 'stable' | ||
|
||
- name: Check Version | ||
run: flutter --version | ||
|
||
- name: Flutter Doctor | ||
run: flutter doctor -v | ||
|
||
- name: Enable KVM | ||
run: | | ||
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules | ||
sudo udevadm control --reload-rules | ||
sudo udevadm trigger --name-match=kvm | ||
- name: Setup Android SDK | ||
uses: android-actions/setup-android@v3 | ||
|
||
- name: run tests | ||
uses: reactivecircus/android-emulator-runner@v2 | ||
with: | ||
api-level: 35 | ||
arch: x86_64 | ||
profile: pixel_6_pro | ||
script: | | ||
flutter build apk --target integration_test/timer_test.dart --debug | ||
adb -s emulator-5554 install build/app/outputs/flutter-apk/app-debug.apk | ||
adb -s emulator-5554 root | ||
adb -s emulator-5554 shell appops set com.codepup.workout_timer SCHEDULE_EXACT_ALARM allow | ||
flutter drive -d emulator-5554 --driver=test_driver/integration_test.dart --use-application-binary=build/app/outputs/flutter-apk/app-debug.apk | ||
General: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v3 | ||
|
||
- name: Set up JDK 17 | ||
uses: actions/setup-java@v3 | ||
with: | ||
java-version: '17' | ||
distribution: 'temurin' | ||
|
||
- uses: subosito/flutter-action@v2 | ||
with: | ||
channel: 'stable' | ||
|
||
- name: Check Version | ||
run: flutter --version | ||
|
||
- name: Flutter Doctor | ||
run: flutter doctor -v | ||
|
||
- name: Enable KVM | ||
run: | | ||
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules | ||
sudo udevadm control --reload-rules | ||
sudo udevadm trigger --name-match=kvm | ||
- name: Setup Android SDK | ||
uses: android-actions/setup-android@v3 | ||
|
||
- name: run tests | ||
uses: reactivecircus/android-emulator-runner@v2 | ||
with: | ||
api-level: 35 | ||
arch: x86_64 | ||
profile: pixel_6_pro | ||
script: | | ||
flutter build apk --target integration_test/general_test.dart --debug | ||
adb -s emulator-5554 install build/app/outputs/flutter-apk/app-debug.apk | ||
adb -s emulator-5554 root | ||
adb -s emulator-5554 shell appops set com.codepup.workout_timer SCHEDULE_EXACT_ALARM allow | ||
flutter drive -d emulator-5554 --driver=test_driver/integration_test.dart --use-application-binary=build/app/outputs/flutter-apk/app-debug.apk |
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,130 @@ | ||
name: Nightly Build | ||
|
||
run-name: Building the Android and iOS app bundles 🚀 | ||
|
||
on: | ||
workflow_dispatch: | ||
schedule: | ||
- cron: '0 0 * * *' # Runs every day at midnight UTC | ||
|
||
jobs: | ||
|
||
BuildAndroid: | ||
runs-on: ubuntu-latest | ||
environment: build | ||
permissions: | ||
contents: write | ||
|
||
steps: | ||
- uses: actions/checkout@v3 | ||
|
||
- name: Setup Java | ||
uses: actions/setup-java@v4 | ||
with: | ||
distribution: 'zulu' | ||
java-version: '17' | ||
cache: 'gradle' | ||
check-latest: true | ||
|
||
- name: Checkout app code | ||
uses: actions/checkout@v3 | ||
|
||
- uses: subosito/flutter-action@v2 | ||
with: | ||
channel: "stable" | ||
|
||
- run: flutter doctor -v | ||
|
||
- run: flutter pub get | ||
|
||
- name: Download Android keystore | ||
id: android_keystore | ||
uses: timheuer/[email protected] | ||
with: | ||
fileName: upload-keystore.jks | ||
encodedString: ${{ secrets.KEYSTORE }} | ||
|
||
- name: Create key.properties | ||
run: | | ||
echo "storeFile=${{ steps.android_keystore.outputs.filePath }}" > android/key.properties | ||
echo "storePassword=${{ secrets.SIGNING_STORE_PASSWORD }}" >> android/key.properties | ||
echo "keyPassword=${{ secrets.SIGNING_KEY_PASSWORD }}" >> android/key.properties | ||
echo "keyAlias=${{ secrets.SIGNING_KEY_ALIAS }}" >> android/key.properties | ||
- name: Build Android Debug APK | ||
run: flutter build apk --debug | ||
|
||
- name: Build Android Debug AppBundle | ||
run: flutter build appbundle --debug | ||
|
||
- name: Upload APK Artifact | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
name: debug-apk | ||
path: build/app/outputs/flutter-apk/app-debug.apk | ||
|
||
- name: Upload Android AppBundle Artifact | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
name: debug-aab | ||
path: build/app/outputs/flutter-apk/app-debug.aab | ||
|
||
BuildiOS: | ||
runs-on: macos-latest | ||
environment: build | ||
permissions: | ||
contents: write | ||
steps: | ||
- name: Checkout repository | ||
uses: actions/checkout@v3 | ||
|
||
- uses: subosito/flutter-action@v2 | ||
with: | ||
channel: "stable" | ||
|
||
- run: flutter doctor -v | ||
|
||
- run: flutter pub get | ||
|
||
- name: Install the Certificate and Provisioning Profile | ||
env: | ||
BUILD_CERTIFICATE_BASE64: ${{ secrets.BUILD_CERTIFICATE_BASE64 }} | ||
P12_PASSWORD: ${{ secrets.P12_PASSWORD }} | ||
BUILD_PROVISION_PROFILE_BASE64: ${{ secrets.BUILD_PROVISION_PROFILE_BASE64 }} | ||
KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }} | ||
EXPORT_OPTIONS_PLIST: ${{ secrets.EXPORT_OPTIONS_PLIST }} | ||
run: | | ||
# create variables | ||
CERTIFICATE_PATH=$RUNNER_TEMP/build_certificate.p12 | ||
PP_PATH=$RUNNER_TEMP/build_pp.mobileprovision | ||
KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db | ||
# import certificate and provisioning profile from secrets | ||
echo -n "$BUILD_CERTIFICATE_BASE64" | base64 --decode --output $CERTIFICATE_PATH | ||
echo -n "$BUILD_PROVISION_PROFILE_BASE64" | base64 --decode --output $PP_PATH | ||
# create temporary keychain | ||
security create-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH | ||
security set-keychain-settings -lut 21600 $KEYCHAIN_PATH | ||
security unlock-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH | ||
# import certificate to keychain | ||
security import $CERTIFICATE_PATH -P "$P12_PASSWORD" -A -t cert -f pkcs12 -k $KEYCHAIN_PATH | ||
security list-keychain -d user -s $KEYCHAIN_PATH | ||
# apply provisioning profile | ||
mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles | ||
cp $PP_PATH ~/Library/MobileDevice/Provisioning\ Profiles | ||
EXPORT_OPTS_PATH=$RUNNER_TEMP/ExportOptions.plist | ||
echo -n "$EXPORT_OPTIONS_PLIST" | base64 --decode -o $EXPORT_OPTS_PATH | ||
- name: Build and Sign IPA | ||
run: flutter build ipa --debug --export-options-plist=$RUNNER_TEMP/ExportOptions.plist | ||
|
||
- name: Upload IPA Artifact | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
name: debug-ipa | ||
path: build/ios/ipa/*.ipa | ||
|
||
- name: Clean up keychain and provisioning profile | ||
if: ${{ always() }} | ||
run: | | ||
security delete-keychain $RUNNER_TEMP/app-signing.keychain-db | ||
rm ~/Library/MobileDevice/Provisioning\ Profiles/build_pp.mobileprovision |
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 |
---|---|---|
@@ -1,45 +1,21 @@ | ||
name: Build and Release Flutter App | ||
name: Pre-Release OpenHIIT | ||
|
||
run-name: ${{ github.actor }} is building the Android app bundle 🚀 | ||
run-name: Creating pre-release 🚀 | ||
|
||
on: | ||
workflow_dispatch: | ||
push: | ||
branches: | ||
- main | ||
paths: | ||
- VERSION | ||
tags-ignore: | ||
- "*" | ||
tags: | ||
- '*-beta' | ||
|
||
jobs: | ||
|
||
GetVersionNumber: | ||
runs-on: ubuntu-latest | ||
permissions: | ||
contents: read | ||
outputs: | ||
version: ${{ steps.version.outputs.content }} | ||
steps: | ||
- uses: actions/checkout@v3 | ||
|
||
- name: Read file | ||
id: version | ||
uses: juliangruber/[email protected] | ||
with: | ||
path: VERSION | ||
|
||
- name: Print version | ||
run: echo ${{ steps.version.outputs.content }} | ||
|
||
BuildAndroidRelease: | ||
runs-on: ubuntu-latest | ||
environment: production | ||
needs: GetVersionNumber | ||
permissions: | ||
contents: write | ||
|
||
# Steps represent a sequence of tasks that will be executed as part of the job | ||
steps: | ||
- uses: actions/checkout@v3 | ||
|
||
|
@@ -51,11 +27,9 @@ jobs: | |
cache: 'gradle' | ||
check-latest: true | ||
|
||
# Checkout the repository code and get packages. | ||
- name: Checkout app code | ||
uses: actions/checkout@v3 | ||
|
||
# Set up Flutter. | ||
- uses: subosito/flutter-action@v1 | ||
with: | ||
channel: "stable" | ||
|
@@ -103,11 +77,10 @@ jobs: | |
permissions: | ||
contents: write | ||
steps: | ||
# Checks-out our repository under $GITHUB_WORKSPACE, so our job can access it | ||
|
||
- name: Checkout repository | ||
uses: actions/checkout@v3 | ||
|
||
# Set up Flutter. | ||
- uses: subosito/flutter-action@v1 | ||
with: | ||
channel: "stable" | ||
|
@@ -116,7 +89,7 @@ jobs: | |
|
||
- run: flutter pub get | ||
|
||
# Install the Apple certificate and provisioning profile | ||
# Install the Apple certificate and provisioning profile | ||
- name: Install the Apple certificate and provisioning profile | ||
env: | ||
BUILD_CERTIFICATE_BASE64: ${{ secrets.APPSTORE_CERT_BASE64 }} | ||
|
@@ -164,7 +137,7 @@ jobs: | |
CreateDraftRelease: | ||
runs-on: ubuntu-latest | ||
needs: [BuildAndroidRelease, BuildiOSRelease, GetVersionNumber] | ||
needs: [BuildAndroidRelease, BuildiOSRelease] | ||
permissions: | ||
contents: write | ||
steps: | ||
|
@@ -188,6 +161,8 @@ jobs: | |
uses: ncipollo/[email protected] | ||
with: | ||
artifacts: "app-release.aab, app-release.apk, workout_timer.ipa" | ||
draft: "true" | ||
tag: ${{needs.GetVersionNumber.outputs.version}} | ||
generateReleaseNotes: "true" | ||
draft: true | ||
tag: ${{ github.ref_name }} | ||
generateReleaseNotes: true | ||
skipIfReleaseExists: true | ||
prerelease: true |
Oops, something went wrong.