pre-release #115
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
name: pre-release | |
on: | |
workflow_call: | |
outputs: | |
app_version_number: | |
description: "The application version number" | |
value: ${{ jobs.prepare_build.outputs.app_version }} | |
app_build_number: | |
description: "The application build number" | |
value: ${{ jobs.prepare_build.outputs.incremented_build_number }} | |
workflow_dispatch: | |
push: | |
branches: | |
- develop | |
env: | |
ARTIFACTS_DIRECTORY: ./artifacts | |
RELEASE_BUILD_CONFIGURATION: Release | |
jobs: | |
test: | |
runs-on: macos-latest | |
environment: github-actions-release | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3.5.2 | |
- name: Unit-Tests | |
run: dotnet test $PROJECT_PATH | |
env: | |
PROJECT_PATH: ./source/EduCATS.UnitTests/EduCATS.UnitTests.csproj | |
prepare_build: | |
runs-on: macos-latest | |
environment: github-actions-release | |
needs: test | |
outputs: | |
app_version: ${{ steps.app_version_setup.outputs.app_version }} | |
incremented_build_number: ${{ steps.increase_build_number.outputs.app_build_number }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3.5.2 | |
- name: Setup App Version | |
id: app_version_setup | |
run: | | |
APP_VERSION=$(cat ./VERSION) | |
echo $APP_VERSION | |
echo "app_version=$APP_VERSION" >> $GITHUB_OUTPUT | |
- name: Increase Build Number | |
id: increase_build_number | |
run: | | |
APP_BUILD_NUMBER_INCREMENTED=$(($APP_BUILD_NUMBER+1)) | |
echo $APP_BUILD_NUMBER_INCREMENTED | |
echo "APP_BUILD_NUMBER_INCREMENTED=$APP_BUILD_NUMBER_INCREMENTED" >> $GITHUB_ENV | |
echo "app_build_number=$APP_BUILD_NUMBER_INCREMENTED" >> $GITHUB_OUTPUT | |
env: | |
APP_BUILD_NUMBER: ${{ secrets.APP_BUILD_NUMBER }} | |
- name: App Build Secret Update | |
uses: gliech/create-github-secret-action@v1.4.10 | |
with: | |
pa_token: ${{ secrets.PERSONAL_ACCESS_TOKEN }} | |
name: APP_BUILD_NUMBER | |
value: ${{ env.APP_BUILD_NUMBER_INCREMENTED }} | |
build_apk: | |
runs-on: macos-latest | |
environment: github-actions-release | |
needs: prepare_build | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3.5.2 | |
- name: NuGet Cache | |
uses: actions/cache@v3.3.1 | |
with: | |
path: ~/.nuget/packages | |
key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-nuget- | |
- name: NuGet Restore | |
run: nuget restore $SOLUTION_PATH | |
env: | |
SOLUTION_PATH: ./source/EduCATS.sln | |
- name: Artifacts Directory Setup | |
run: mkdir ${{ env.ARTIFACTS_DIRECTORY }} | |
- name: Android Signing Setup | |
run: (echo ${{ secrets.ANDROID_KEYSTORE_FILE }} | base64 --decode) > $KEYSTORE | |
env: | |
KEYSTORE: ./source/EduCATS.Android/educats-release.keystore | |
- name: AndroidManifest Version Update | |
uses: damienaicheh/update-android-version-manifest-action@v1.0.0 | |
with: | |
android-manifest-path: ./source/EduCATS.Android/Properties/AndroidManifest.xml | |
version-name: ${{ needs.prepare_build.outputs.app_version }} | |
version-code: ${{ needs.prepare_build.outputs.incremented_build_number }} | |
- name: Android Build (apk) | |
run: | | |
MSBuild /t:SignAndroidPackage /p:Configuration=${{ env.RELEASE_BUILD_CONFIGURATION }} /p:AndroidPackageFormat=apk /p:AndroidKeyStore=true /p:AndroidSigningKeyAlias='${{ secrets.ANDROID_KEYSTORE_ALIAS }}' /p:AndroidSigningKeyPass='${{ secrets.ANDROID_KEYSTORE_PRIVATE_KEY_PASSWORD }}' /p:AndroidSigningKeyStore=$KEYSTORE_FILENAME /p:AndroidSigningStorePass='${{ secrets.ANDROID_KEYSTORE_PASSWORD }}' $PROJECT_PATH | |
cp $APK_FILE_PATH $ARTIFACTS_APK_PATH | |
env: | |
PROJECT_PATH: ./source/EduCATS.Android/EduCATS.Android.csproj | |
KEYSTORE_FILENAME: educats-release.keystore | |
APK_FILE_PATH: ./source/EduCATS.Android/bin/Release/by.bntu.educats-Signed.apk | |
ARTIFACTS_APK_PATH: ${{ env.ARTIFACTS_DIRECTORY }}/by.bntu.educats_${{ needs.prepare_build.outputs.app_version }}.${{ needs.prepare_build.outputs.incremented_build_number }}.apk | |
- name: Upload APK Artifact | |
uses: actions/upload-artifact@v3.1.2 | |
with: | |
name: by.bntu.educats_${{ needs.prepare_build.outputs.app_version }}.${{ needs.prepare_build.outputs.incremented_build_number }}.apk | |
path: ${{ env.ARTIFACTS_DIRECTORY }}/by.bntu.educats_${{ needs.prepare_build.outputs.app_version }}.${{ needs.prepare_build.outputs.incremented_build_number }}.apk | |
build_aab: | |
runs-on: macos-latest | |
environment: github-actions-release | |
needs: prepare_build | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3.5.2 | |
- name: NuGet Cache | |
uses: actions/cache@v3.3.1 | |
with: | |
path: ~/.nuget/packages | |
key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-nuget- | |
- name: NuGet Restore | |
run: nuget restore $SOLUTION_PATH | |
env: | |
SOLUTION_PATH: ./source/EduCATS.sln | |
- name: Artifacts Directory Setup | |
run: mkdir ${{ env.ARTIFACTS_DIRECTORY }} | |
- name: Android Signing Setup | |
run: (echo ${{ secrets.ANDROID_KEYSTORE_FILE }} | base64 --decode) > $KEYSTORE | |
env: | |
KEYSTORE: ./source/EduCATS.Android/educats-release.keystore | |
- name: AndroidManifest Version Update | |
uses: damienaicheh/update-android-version-manifest-action@v1.0.0 | |
with: | |
android-manifest-path: ./source/EduCATS.Android/Properties/AndroidManifest.xml | |
version-name: ${{ needs.prepare_build.outputs.app_version }} | |
version-code: ${{ needs.prepare_build.outputs.incremented_build_number }} | |
- name: Android Build (aab) | |
run: | | |
MSBuild /t:SignAndroidPackage /p:Configuration=${{ env.RELEASE_BUILD_CONFIGURATION }} /p:AndroidPackageFormat=aab /p:AndroidKeyStore=true /p:AndroidSigningKeyAlias='${{ secrets.ANDROID_KEYSTORE_ALIAS }}' /p:AndroidSigningKeyPass='${{ secrets.ANDROID_KEYSTORE_PRIVATE_KEY_PASSWORD }}' /p:AndroidSigningKeyStore=$KEYSTORE_FILENAME /p:AndroidSigningStorePass='${{ secrets.ANDROID_KEYSTORE_PASSWORD }}' $PROJECT_PATH | |
cp $AAB_FILE_PATH $ARTIFACTS_AAB_PATH | |
env: | |
PROJECT_PATH: ./source/EduCATS.Android/EduCATS.Android.csproj | |
KEYSTORE_FILENAME: educats-release.keystore | |
AAB_FILE_PATH: ./source/EduCATS.Android/bin/Release/by.bntu.educats-Signed.aab | |
ARTIFACTS_AAB_PATH: ${{ env.ARTIFACTS_DIRECTORY }}/by.bntu.educats_${{ needs.prepare_build.outputs.app_version }}.${{ needs.prepare_build.outputs.incremented_build_number }}.aab | |
- name: Upload AAB Artifact | |
uses: actions/upload-artifact@v3.1.2 | |
with: | |
name: by.bntu.educats_${{ needs.prepare_build.outputs.app_version }}.${{ needs.prepare_build.outputs.incremented_build_number }}.aab | |
path: ${{ env.ARTIFACTS_DIRECTORY }}/by.bntu.educats_${{ needs.prepare_build.outputs.app_version }}.${{ needs.prepare_build.outputs.incremented_build_number }}.aab | |
build_ipa: | |
runs-on: macos-latest | |
environment: github-actions-release | |
needs: prepare_build | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3.5.2 | |
- name: NuGet Cache | |
uses: actions/cache@v3.3.1 | |
with: | |
path: ~/.nuget/packages | |
key: ${{ runner.os }}-nuget-${{ hashFiles('**/packages.lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-nuget- | |
- name: NuGet Restore | |
run: nuget restore $SOLUTION_PATH | |
env: | |
SOLUTION_PATH: ./source/EduCATS.sln | |
- name: Artifacts Directory Setup | |
run: mkdir ${{ env.ARTIFACTS_DIRECTORY }} | |
- name: iOS Certificates Install | |
uses: apple-actions/import-codesign-certs@v1 | |
with: | |
p12-file-base64: ${{ secrets.IOS_CERTIFICATE_APPSTORE }} | |
p12-password: ${{ secrets.IOS_CERTIFICATE_APPSTORE_PASSWORD }} | |
keychain: github-actions-xamarin | |
keychain-password: '' | |
- name: iOS Provisioning Profiles Install | |
uses: akiojin/install-provisioning-profile-github-action@v1.0 | |
with: | |
base64: ${{ secrets.IOS_PROVISIONING_PROFILE_APPSTORE }} | |
- name: Info.plist Version Update | |
uses: damienaicheh/update-ios-version-info-plist-action@v1.1.0 | |
with: | |
info-plist-path: ./source/EduCATS.iOS/Info.plist | |
bundle-version: ${{ needs.prepare_build.outputs.incremented_build_number }} | |
bundle-short-version-string: ${{ needs.prepare_build.outputs.app_version }} | |
- name: iOS Build (ipa) | |
run: | | |
MSBuild /t:Build /p:Configuration=${{ env.RELEASE_BUILD_CONFIGURATION }} /p:Platform=$PLATFORM /p:BuildIpa=true $PROJECT_PATH | |
cp $IPA_PATH $ARTIFACTS_IPA_PATH | |
env: | |
PLATFORM: iPhone | |
PROJECT_PATH: ./source/EduCATS.iOS/EduCATS.iOS.csproj | |
IPA_PATH: ./source/EduCATS.iOS/bin/iPhone/Release/EduCATS.iOS.ipa | |
ARTIFACTS_IPA_PATH: ${{ env.ARTIFACTS_DIRECTORY }}/EduCATS_${{ needs.prepare_build.outputs.app_version }}.${{ needs.prepare_build.outputs.incremented_build_number }}.ipa | |
- name: Upload IPA Artifact | |
uses: actions/upload-artifact@v3.1.2 | |
with: | |
name: EduCATS_${{ needs.prepare_build.outputs.app_version }}.${{ needs.prepare_build.outputs.incremented_build_number }}.ipa | |
path: ${{ env.ARTIFACTS_DIRECTORY }}/EduCATS_${{ needs.prepare_build.outputs.app_version }}.${{ needs.prepare_build.outputs.incremented_build_number }}.ipa | |
deploy_google_play: | |
runs-on: macos-latest | |
environment: github-actions-release | |
needs: build_aab | |
steps: | |
- name: Artifacts Download | |
uses: actions/download-artifact@v3.0.2 | |
- name: Google Play Deploy | |
id: google_play_deploy | |
continue-on-error: true | |
uses: r0adkll/upload-google-play@v1.1.1 | |
with: | |
serviceAccountJsonPlainText: ${{ secrets.GOOGLE_PLAY_API_JSON_PLAIN }} | |
packageName: by.bntu.educats | |
releaseFiles: ./*.aab/*.aab | |
track: beta | |
changesNotSentForReview: true | |
status: draft | |
- name: Google Play Deploy On Failure | |
uses: r0adkll/upload-google-play@v1.1.1 | |
if: always() && steps.google_play_deploy.outcome == 'failure' | |
with: | |
serviceAccountJsonPlainText: ${{ secrets.GOOGLE_PLAY_API_JSON_PLAIN }} | |
packageName: by.bntu.educats | |
releaseFiles: ./*.aab/*.aab | |
track: beta | |
status: draft | |
deploy_appstore: | |
runs-on: macos-latest | |
environment: github-actions-release | |
needs: build_ipa | |
steps: | |
- name: Artifacts Download | |
uses: actions/download-artifact@v3.0.2 | |
- name: AppStore Deploy | |
run: xcrun altool --upload-app -f $IPA_FILE_PATH --type ios -u ${{ secrets.APPLE_ID }} -p ${{ secrets.APPLE_SPECIFIC_PASSWORD }} | |
env: | |
IPA_FILE_PATH: ./*.ipa/*.ipa |