fix: Updated the Readme (#1511) #401
This file contains hidden or 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: Badge Magic Push CI | |
| on: | |
| push: | |
| branches: ["development"] | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| ANDROID_EMULATOR_API: 34 | |
| ANDROID_EMULATOR_ARCH: x86_64 | |
| IPHONE_DEVICE_MODEL: iPhone 16 Pro Max | |
| IPAD_DEVICE_MODEL: iPad Pro 13-inch (M4) | |
| jobs: | |
| common: | |
| name: Common Build | |
| 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@v5 | |
| - name: Common Workflow | |
| uses: ./.github/actions/common | |
| - name: Hydrate and Update Version | |
| id: flutter-version | |
| run: | | |
| git config --global user.name "github-actions[bot]" | |
| git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" | |
| # Get commit message | |
| commit_message=$(git log -1 --pretty=format:"%s") | |
| 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 | |
| if [[ "$commit_message" =~ ^feat: ]]; then | |
| next_minor=$((minor + 1)) | |
| next_patch=0 | |
| else | |
| next_minor=$((minor)) | |
| next_patch=$((patch + 1)) | |
| fi | |
| next_version_name="$major.$next_minor.$next_patch" | |
| echo "VERSION_NAME=$next_version_name" >> $GITHUB_OUTPUT | |
| echo "$next_version_name" > versionName.txt | |
| # Read and increment version code | |
| read -r version_code < versionCode.txt | |
| new_version_code=$((version_code + 1)) | |
| echo "VERSION_CODE=$new_version_code" >> $GITHUB_OUTPUT | |
| 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_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: | |
| name: Android Flutter Build | |
| needs: common | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Prepare Build Keys | |
| if: ${{ github.repository == 'fossasia/badgemagic-app' }} | |
| env: | |
| ENCRYPTED_F10B5E0E5262_IV: ${{ secrets.ENCRYPTED_F10B5E0E5262_IV }} | |
| ENCRYPTED_F10B5E0E5262_KEY: ${{ secrets.ENCRYPTED_F10B5E0E5262_KEY }} | |
| run: | | |
| bash scripts/prep-android-key.sh | |
| - name: Android Workflow | |
| uses: ./.github/actions/android | |
| with: | |
| 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}} | |
| - name: Upload APK | |
| uses: actions/upload-artifact@v5 | |
| with: | |
| name: APK Generated | |
| path: build/app/outputs/flutter-apk | |
| - name: Upload AAB Release | |
| uses: actions/upload-artifact@v5 | |
| with: | |
| name: AAB Generated | |
| path: build/app/outputs/bundle | |
| - name: Upload APK/AAB to app branch | |
| if: ${{ github.repository == 'fossasia/badgemagic-app' }} | |
| run: | | |
| git config --global user.name "github-actions[bot]" | |
| git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" | |
| git clone --branch=app https://${{ github.repository_owner }}:${{ github.token }}@github.com/${{ github.repository }} app | |
| cd app | |
| 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 '*release.apk' -o -name '*release.aab' \) -exec cp -v {} . \; | |
| find ../build/app/outputs/bundle -type f \( -name '*release.apk' -o -name '*release.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 app 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 app | |
| git branch -m app | |
| git push --force origin app | |
| - name: Push app in open testing track | |
| if: ${{ github.repository == 'fossasia/badgemagic-app' }} | |
| run: | | |
| cd ./android | |
| git clone --branch=fastlane-android --depth=1 https://${{ github.repository_owner }}:${{ github.token }}@github.com/${{ github.repository }} fastlane | |
| fastlane uploadToOpenTesting | |
| if [[ $? -ne 0 ]]; then | |
| exit 1 | |
| fi | |
| ios: | |
| name: iOS Flutter Build | |
| needs: common | |
| runs-on: macos-latest | |
| steps: | |
| - name: Set up Xcode | |
| uses: maxim-lobanov/[email protected] | |
| with: | |
| xcode-version: latest-stable | |
| - uses: actions/checkout@v5 | |
| - name: Prepare Build Keys | |
| if: ${{ github.repository == 'fossasia/badgemagic-app' }} | |
| env: | |
| ENCRYPTED_IOS_IV: ${{ secrets.ENCRYPTED_IOS_IV }} | |
| ENCRYPTED_IOS_KEY: ${{ secrets.ENCRYPTED_IOS_KEY }} | |
| run: | | |
| bash scripts/prep-ios-key.sh | |
| - name: Setup Certs | |
| if: ${{ github.repository == 'fossasia/badgemagic-app' }} | |
| env: | |
| MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }} | |
| MATCH_GIT_BASIC_AUTHORIZATION: ${{ secrets.MATCH_GIT_BASIC_AUTHORIZATION }} | |
| run: | | |
| cd ./iOS | |
| git clone --branch=fastlane-ios --depth=1 https://${{ github.repository_owner }}:${{ github.token }}@github.com/${{ github.repository }} fastlane | |
| fastlane setupCertificates | |
| if [[ $? -ne 0 ]]; then | |
| exit 1 | |
| fi | |
| - name: iOS Workflow | |
| uses: ./.github/actions/ios | |
| with: | |
| VERSION_NAME: ${{needs.common.outputs.VERSION_NAME}} | |
| VERSION_CODE: ${{needs.common.outputs.VERSION_CODE}} | |
| - name: Push app to testflight | |
| if: ${{ github.repository == 'fossasia/badgemagic-app' }} | |
| run: | | |
| cd ./iOS | |
| fastlane uploadToBeta | |
| if [[ $? -ne 0 ]]; then | |
| exit 1 | |
| fi | |
| update-release: | |
| name: Update Draft Release | |
| needs: [common, android, ios] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Download repository | |
| uses: actions/checkout@v5 | |
| - name: Run Release Drafter | |
| id: run-release-drafter | |
| uses: release-drafter/release-drafter@v6 | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| with: | |
| version: ${{ needs.common.outputs.VERSION_NAME }} | |
| - name: Create and Upload Assets | |
| run: | | |
| echo "${{ needs.common.outputs.VERSION_CODE }}" > ./versionCode.txt | |
| git clone --branch=app https://${{ github.repository_owner }}:${{ github.token }}@github.com/${{ github.repository }} app | |
| gh release upload ${{ steps.run-release-drafter.outputs.tag_name }} app/badge-magic-development-release.apk ./versionCode.txt --clobber | |
| screenshots-android: | |
| name: Screenshots (Android) | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 30 | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Android Screenshot Workflow | |
| uses: ./.github/actions/screenshot-android | |
| with: | |
| ANDROID_EMULATOR_API: ${{ env.ANDROID_EMULATOR_API }} | |
| ANDROID_EMULATOR_ARCH: ${{ env.ANDROID_EMULATOR_ARCH }} | |
| screenshots-iphone: | |
| name: Screenshots (iPhone) | |
| runs-on: macos-latest | |
| timeout-minutes: 30 | |
| steps: | |
| - name: Set up Xcode | |
| uses: maxim-lobanov/[email protected] | |
| with: | |
| xcode-version: latest-stable | |
| - uses: actions/checkout@v5 | |
| - name: iPhone Screenshot Workflow | |
| uses: ./.github/actions/screenshot-iphone | |
| with: | |
| IPHONE_DEVICE_MODEL: ${{ env.IPHONE_DEVICE_MODEL }} | |
| screenshots-ipad: | |
| name: Screenshots (iPad) | |
| runs-on: macos-latest | |
| timeout-minutes: 30 | |
| steps: | |
| - name: Set up Xcode | |
| uses: maxim-lobanov/[email protected] | |
| with: | |
| xcode-version: latest-stable | |
| - uses: actions/checkout@v5 | |
| - name: iPad Screenshot Workflow | |
| uses: ./.github/actions/screenshot-ipad | |
| with: | |
| IPAD_DEVICE_MODEL: ${{ env.IPAD_DEVICE_MODEL }} | |
| debian: | |
| name: Debian Flutter Build | |
| needs: common | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Debian Workflow | |
| uses: ./.github/actions/debian | |
| with: | |
| VERSION_NAME: ${{ needs.common.outputs.VERSION_NAME }} | |
| VERSION_CODE: ${{ needs.common.outputs.VERSION_CODE }} | |
| - name: Upload Debian Build | |
| uses: actions/upload-artifact@v5 | |
| with: | |
| name: Debian Build | |
| path: build/linux/x64/release/bundle/ | |
| - name: Push Debian Build to app branch | |
| shell: bash | |
| run: | | |
| git config --global user.name "github-actions[bot]" | |
| git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" | |
| git clone --branch=app https://${{ github.repository_owner }}:${{ github.token }}@github.com/${{ github.repository }} app | |
| cd app | |
| branch=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}} | |
| cp -r ../build/linux/x64/release/bundle/* . | |
| git checkout --orphan temporary | |
| git add --all | |
| git commit -m "[Auto] Update Debian build from $branch ($(date +%Y-%m-%d.%H:%M:%S))" | |
| git branch -D app | |
| git branch -m app | |
| git push --force origin app | |
| macos: | |
| name: macOS Flutter Build | |
| needs: common | |
| runs-on: macos-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: macOS Workflow | |
| uses: ./.github/actions/macos | |
| with: | |
| VERSION_NAME: ${{ needs.common.outputs.VERSION_NAME }} | |
| VERSION_CODE: ${{ needs.common.outputs.VERSION_CODE }} | |
| - name: Upload macOS Build | |
| uses: actions/upload-artifact@v5 | |
| with: | |
| name: macOS Build | |
| path: build/macos/Build/Products/Release/ | |
| - name: Push macOS Build to app branch | |
| shell: bash | |
| run: | | |
| git config --global user.name "github-actions[bot]" | |
| git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" | |
| git clone --branch=app https://${{ github.repository_owner }}:${{ github.token }}@github.com/${{ github.repository }} app | |
| cd app | |
| branch=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}} | |
| # Copy all macOS build artifacts to root | |
| cp -r ../build/macos/Build/Products/Release/* . | |
| git checkout --orphan temporary | |
| git add --all | |
| git commit -m "[Auto] Update macOS build from $branch ($(date +%Y-%m-%d.%H:%M:%S))" | |
| git branch -D app | |
| git branch -m app | |
| git push --force origin app | |
| windows: | |
| name: Windows Flutter Build | |
| needs: common | |
| runs-on: windows-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Windows Workflow | |
| uses: ./.github/actions/windows | |
| with: | |
| VERSION_NAME: ${{ needs.common.outputs.VERSION_NAME }} | |
| VERSION_CODE: ${{ needs.common.outputs.VERSION_CODE }} | |
| - name: Upload Windows Build | |
| uses: actions/upload-artifact@v5 | |
| with: | |
| name: Windows Build | |
| path: build/windows/x64/runner/Release/ | |
| - name: Push Windows Build to app branch | |
| shell: bash | |
| run: | | |
| git config --global user.name "github-actions[bot]" | |
| git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" | |
| git clone --branch=app https://${{ github.repository_owner }}:${{ github.token }}@github.com/${{ github.repository }} app | |
| cd app | |
| branch=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}} | |
| # Copy all Windows build artifacts to root | |
| cp -r ../build/windows/x64/runner/Release/* . | |
| git checkout --orphan temporary | |
| git add --all | |
| git commit -m "[Auto] Update Windows build from $branch ($(date +%Y-%m-%d.%H:%M:%S))" | |
| git branch -D app | |
| git branch -m app | |
| git push --force origin app | |