-
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/base64-to-file@v1.0.3 | ||
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
Oops, something went wrong.