update logics #20
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: "Build & Release" # You can name it as you want | |
on: | |
pull_request: | |
branches: | |
- dev | |
- test | |
- master | |
push: | |
branches: | |
- dev | |
- test | |
- master | |
jobs: # Telling what jobs we need to happen | |
build: # Specify the building name and machine | |
name: Build & Release # you can name the build whatever you want | |
runs-on: macos-latest # here we selected macos-latest to be able to get ios build | |
steps: | |
- name: Clone repository | |
uses: actions/checkout@v4 | |
- name: Set up Flutter | |
uses: subosito/flutter-action@v2 | |
with: | |
channel: stable | |
# flutter-version-file: pubspec.yaml # path to pubspec.yaml | |
- run: flutter --version | |
#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 }} | |