Junqo-org / junqo-platform

This repository host the source code of the backend and the frontend of the Junqo platform.
http://doc.junqo.fr/
2 stars 0 forks source link

Automaticaly generate builds #36

Open Vivelis opened 1 month ago

Vivelis commented 1 month ago

Generate automatic builds when a new realease has been push to the main branch. Build for;

Use the following code and article as a starting point:

name: "Build"

on:
  pull_request:
    branches:
      - dev
      - test
  push:
    branches:
      - dev
      - test

jobs:  
  build:      
    name: Build & Release 
    runs-on: macos-latest 

    steps:
        #1 Checkout Repository
      - name: Checkout Repository
        uses: actions/checkout@v3

        #2 Setup Java
      - name: Set Up Java
        uses: actions/setup-java@v3.12.0
        with:
          distribution: 'oracle'
          java-version: '17'

        #3 Setup Flutter
      - name: Set Up Flutter
        uses: subosito/flutter-action@v2
        with:
          flutter-version: '3.22.2'
          channel: 'stable'

        #4 Install Dependencies
      - name: Install Dependencies
        run: flutter pub get

        #5 Setup Keystore
      - name: Decode Keystore
        run: |
          echo "${{ secrets.KEYSTORE_BASE64 }}" | base64 --decode > android/app/keystore.jks

      - name: Create key.properties
        run: |
          echo "storePassword=${{ secrets.KEYSTORE_PASSWORD }}" > android/key.properties
          echo "keyPassword=${{ secrets.KEY_PASSWORD }}" >> android/key.properties
          echo "keyAlias=${{ secrets.KEY_ALIAS }}" >> android/key.properties
          echo "storeFile=keystore.jks" >> android/key.properties

       #6 Building APK
      - name: Build APK
        run: flutter build apk --release

        #7 Building App Bundle (aab)
      - name: Build appBundle
        run: flutter build appbundle

        #8 Build IPA ( IOS Build )
      - name: Build IPA
        run: flutter build ipa --no-codesign

      - name: Compress Archives and IPAs
        run: |
          cd build
          tar -czf ios_build.tar.gz ios

        #9 Upload Artifacts
      - name: Upload Artifacts
        uses: actions/upload-artifact@v2
        with:
          name: Releases
          path: |
            build/app/outputs/flutter-apk/app-release.apk
            build/app/outputs/bundle/release/app-release.aab
            build/ios_build.tar.gz

        #10 Extract Version
      - name: Extract version from pubspec.yaml
        id: extract_version
        run: |
          version=$(grep '^version: ' pubspec.yaml | cut -d ' ' -f 2 | tr -d '\r')
          echo "VERSION=$version" >> $GITHUB_ENV

        #11 Check if Tag Exists
      - name: Check if Tag Exists
        id: check_tag
        run: |
          if git rev-parse "v${{ env.VERSION }}" >/dev/null 2>&1; then
            echo "TAG_EXISTS=true" >> $GITHUB_ENV
          else
            echo "TAG_EXISTS=false" >> $GITHUB_ENV
          fi

        #12 Modify Tag if it Exists
      - name: Modify Tag
        if: env.TAG_EXISTS == 'true'
        id: modify_tag
        run: |
          new_version="${{ env.VERSION }}-build-${{ github.run_number }}"
          echo "VERSION=$new_version" >> $GITHUB_ENV

        #13 Create Release
      - name: Create Release
        uses: ncipollo/release-action@v1
        with:
          artifacts: "build/app/outputs/flutter-apk/app-release.apk,build/app/outputs/bundle/release/app-release.aab,build/ios_build.tar.gz"
          tag: v${{ env.VERSION }}
          token: ${{ secrets.TOKEN }}`
Vivelis commented 1 month ago

see also