Added workflow for CI/CD
This commit is contained in:
@@ -0,0 +1,73 @@
|
|||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
|
||||||
|
name: Analyze and test
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
analyze-test:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
modules:
|
||||||
|
- default
|
||||||
|
- core
|
||||||
|
- model
|
||||||
|
- contact
|
||||||
|
- forward
|
||||||
|
- rule_filter
|
||||||
|
fail-fast: false
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Setup flutter
|
||||||
|
uses: subosito/flutter-action@v2
|
||||||
|
with:
|
||||||
|
flutter-version: "3.0.5"
|
||||||
|
channel: "stable"
|
||||||
|
cache: true
|
||||||
|
cache-key: "deps-${{ hashFiles('pubspec.lock') }}"
|
||||||
|
cache-path: ${{ runner.tool_cache }}/flutter # optional, change this to specify the cache path
|
||||||
|
|
||||||
|
- name: Run prebuild
|
||||||
|
run: bash prebuild.sh
|
||||||
|
|
||||||
|
- name: Analyze
|
||||||
|
uses: zgosalvez/github-actions-analyze-dart@v1
|
||||||
|
with:
|
||||||
|
analysis-options-file: "placeholder"
|
||||||
|
|
||||||
|
- name: Test
|
||||||
|
run: |
|
||||||
|
if [[ "${{ matrix.modules }}" == "default" ]]; then
|
||||||
|
flutter test -r json > test-report-${{ matrix.modules }}.json
|
||||||
|
else
|
||||||
|
flutter test -r json ${{ matrix.modules }} > test-report-${{ matrix.modules }}.json
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Upload test reports
|
||||||
|
if: success() || failure() # Always upload report
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: test-reports
|
||||||
|
path: test-report*.json
|
||||||
|
|
||||||
|
report:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
if: success() || failure() # Always upload report
|
||||||
|
needs:
|
||||||
|
- analyze-test
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- uses: actions/download-artifact@v3
|
||||||
|
with:
|
||||||
|
name: test-reports
|
||||||
|
|
||||||
|
- uses: dorny/test-reporter@v1
|
||||||
|
with:
|
||||||
|
name: Flutter Tests
|
||||||
|
path: "*.json"
|
||||||
|
reporter: flutter-json
|
||||||
|
only-summary: "true"
|
||||||
@@ -0,0 +1,94 @@
|
|||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
paths-ignore:
|
||||||
|
- ".github/**"
|
||||||
|
|
||||||
|
name: CI
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
analyze-test:
|
||||||
|
name: Analyze and test
|
||||||
|
uses: ./.github/workflows/analyze-test.yaml
|
||||||
|
|
||||||
|
build-app:
|
||||||
|
name: Build app
|
||||||
|
needs:
|
||||||
|
- analyze-test
|
||||||
|
runs-on: macos-latest
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os:
|
||||||
|
- android
|
||||||
|
- ios
|
||||||
|
environment: dev
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Setup flutter
|
||||||
|
uses: subosito/flutter-action@v2
|
||||||
|
with:
|
||||||
|
flutter-version: "3.0.5"
|
||||||
|
channel: "stable"
|
||||||
|
cache: true
|
||||||
|
cache-key: deps-${{ hashFiles('pubspec.lock') }} # optional, change this to force refresh cache
|
||||||
|
cache-path: ${{ runner.tool_cache }}/flutter # optional, change this to specify the cache path
|
||||||
|
|
||||||
|
- name: Setup Android environment
|
||||||
|
if: matrix.os == 'android'
|
||||||
|
env:
|
||||||
|
# GOOGLE_SERVICES_JSON: ${{ secrets.GOOGLE_SERVICES_JSON }}
|
||||||
|
PLAY_STORE_UPLOAD_KEY_BASE64: ${{ secrets.PLAY_STORE_UPLOAD_KEY_BASE64 }}
|
||||||
|
PLAY_STORE_KEY_INFO_BASE64: ${{ secrets.PLAY_STORE_KEY_INFO_BASE64 }}
|
||||||
|
run: |
|
||||||
|
# echo "$GOOGLE_SERVICES_JSON" > app/google-services.json
|
||||||
|
echo "$PLAY_STORE_UPLOAD_KEY_BASE64" | base64 --decode --output app/keystore.jks
|
||||||
|
echo "$PLAY_STORE_KEY_INFO_BASE64" | base64 --decode --output key.properties
|
||||||
|
working-directory: ${{ matrix.os }}
|
||||||
|
|
||||||
|
- name: Setup Java
|
||||||
|
if: matrix.os == 'android'
|
||||||
|
uses: actions/setup-java@v3
|
||||||
|
with:
|
||||||
|
distribution: "temurin"
|
||||||
|
java-version: "11"
|
||||||
|
|
||||||
|
- name: Setup iOS environment
|
||||||
|
if: matrix.os == 'ios'
|
||||||
|
env:
|
||||||
|
# GOOGLE_SERVICES_PLIST: ${{ secrets.GOOGLE_SERVICES_PLIST }}
|
||||||
|
CERTIFICATE_BASE64: ${{ secrets.CERTIFICATE_BASE64 }}
|
||||||
|
PROVISION_PROFILE_BASE64: ${{ secrets.PROVISION_PROFILE_BASE64 }}
|
||||||
|
SHAREEXT_PROVISION_PROFILE_BASE64: ${{ secrets.SHAREEXT_PROVISION_PROFILE_BASE64 }}
|
||||||
|
run: |
|
||||||
|
# echo -n "$GOOGLE_SERVICES_PLIST" > Runner/GoogleService-Info.plist
|
||||||
|
echo -n "$CERTIFICATE_BASE64" | base64 --decode --output cert.p12
|
||||||
|
echo -n "$PROVISION_PROFILE_BASE64" | base64 --decode --output buildpp.mobileprovision
|
||||||
|
echo -n "$SHAREEXT_PROVISION_PROFILE_BASE64" | base64 --decode --output shareextpp.mobileprovision
|
||||||
|
flutter pub get && pod install
|
||||||
|
working-directory: ${{ matrix.os }}
|
||||||
|
|
||||||
|
- name: Setup Fastlane
|
||||||
|
uses: ruby/setup-ruby@v1
|
||||||
|
with:
|
||||||
|
ruby-version: "ruby"
|
||||||
|
bundler-cache: true
|
||||||
|
working-directory: ${{ matrix.os }}
|
||||||
|
|
||||||
|
- name: Run prebuild
|
||||||
|
run: bash prebuild.sh
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
env:
|
||||||
|
CERTIFICATE_PASSWORD: ${{ secrets.CERTIFICATE_PASSWORD }}
|
||||||
|
run: bundle exec fastlane dev
|
||||||
|
working-directory: ${{ matrix.os }}
|
||||||
|
|
||||||
|
- name: Upload artifacts
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: tmail-dev-pr-${{ github.event.pull_request.number }}
|
||||||
|
path: |
|
||||||
|
build/app/outputs/flutter-apk/app-release.apk
|
||||||
|
ios/Runner.ipa
|
||||||
@@ -0,0 +1,94 @@
|
|||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- "release"
|
||||||
|
tags:
|
||||||
|
- "v*.*.*"
|
||||||
|
|
||||||
|
name: Release
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
analyze-test:
|
||||||
|
name: Analyze and test
|
||||||
|
uses: ./.github/workflows/analyze-test.yaml
|
||||||
|
|
||||||
|
release:
|
||||||
|
name: Release
|
||||||
|
if: startsWith(github.ref, 'refs/tags/v')
|
||||||
|
needs:
|
||||||
|
- analyze-test
|
||||||
|
runs-on: macos-latest
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os:
|
||||||
|
- android
|
||||||
|
- ios
|
||||||
|
environment: prod
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
ref: "release"
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Setup flutter
|
||||||
|
uses: subosito/flutter-action@v2
|
||||||
|
with:
|
||||||
|
flutter-version: "3.0.5"
|
||||||
|
channel: "stable"
|
||||||
|
cache: true
|
||||||
|
cache-key: deps-${{ hashFiles('pubspec.lock') }} # optional, change this to force refresh cache
|
||||||
|
cache-path: ${{ runner.tool_cache }}/flutter # optional, change this to specify the cache path
|
||||||
|
|
||||||
|
- name: Setup Android environment
|
||||||
|
if: matrix.os == 'android'
|
||||||
|
env:
|
||||||
|
PLAY_STORE_UPLOAD_KEY_BASE64: ${{ secrets.PLAY_STORE_UPLOAD_KEY_BASE64 }}
|
||||||
|
PLAY_STORE_KEY_INFO_BASE64: ${{ secrets.PLAY_STORE_KEY_INFO_BASE64 }}
|
||||||
|
run: |
|
||||||
|
echo "$PLAY_STORE_UPLOAD_KEY_BASE64" | base64 --decode --output app/keystore.jks
|
||||||
|
echo "$PLAY_STORE_KEY_INFO_BASE64" | base64 --decode --output key.properties
|
||||||
|
working-directory: ${{ matrix.os }}
|
||||||
|
|
||||||
|
- name: Setup Java
|
||||||
|
if: matrix.os == 'android'
|
||||||
|
uses: actions/setup-java@v3
|
||||||
|
with:
|
||||||
|
distribution: "temurin"
|
||||||
|
java-version: "11"
|
||||||
|
|
||||||
|
- name: Setup iOS environment
|
||||||
|
if: matrix.os == 'ios'
|
||||||
|
env:
|
||||||
|
CERTIFICATE_BASE64: ${{ secrets.CERTIFICATE_BASE64 }}
|
||||||
|
PROVISION_PROFILE_BASE64: ${{ secrets.PROVISION_PROFILE_BASE64 }}
|
||||||
|
SHAREEXT_PROVISION_PROFILE_BASE64: ${{ secrets.SHAREEXT_PROVISION_PROFILE_BASE64 }}
|
||||||
|
APPLE_API_KEY_BASE64: ${{ secrets.APPLE_API_KEY_BASE64 }}
|
||||||
|
run: |
|
||||||
|
echo -n "$CERTIFICATE_BASE64" | base64 --decode --output cert.p12
|
||||||
|
echo -n "$PROVISION_PROFILE_BASE64" | base64 --decode --output buildpp.mobileprovision
|
||||||
|
echo -n "$SHAREEXT_PROVISION_PROFILE_BASE64" | base64 --decode --output shareextpp.mobileprovision
|
||||||
|
echo -n "$APPLE_API_KEY_BASE64" | base64 --decode --output apiKey.p8
|
||||||
|
flutter pub get && pod install
|
||||||
|
working-directory: ${{ matrix.os }}
|
||||||
|
|
||||||
|
- name: Setup Fastlane
|
||||||
|
uses: ruby/setup-ruby@v1
|
||||||
|
with:
|
||||||
|
ruby-version: "ruby"
|
||||||
|
bundler-cache: true
|
||||||
|
working-directory: ${{ matrix.os }}
|
||||||
|
|
||||||
|
- name: Run prebuild
|
||||||
|
run: bash prebuild.sh
|
||||||
|
|
||||||
|
- name: Build and deploy
|
||||||
|
env:
|
||||||
|
CERTIFICATE_PASSWORD: ${{ secrets.CERTIFICATE_PASSWORD }}
|
||||||
|
FASTLANE_USER: ${{ secrets.APPLE_ID }}
|
||||||
|
PLAY_STORE_CONFIG_JSON: ${{ secrets.PLAY_STORE_CONFIG_JSON }}
|
||||||
|
APPLE_ISSUER_ID: ${{ secrets.APPLE_ISSUER_ID }}
|
||||||
|
APPLE_KEY_ID: ${{ secrets.APPLE_KEY_ID }}
|
||||||
|
run: bundle exec fastlane release
|
||||||
|
working-directory: ${{ matrix.os }}
|
||||||
+3
-1
@@ -113,7 +113,9 @@ app.*.symbols
|
|||||||
!**/ios/**/default.perspectivev3
|
!**/ios/**/default.perspectivev3
|
||||||
!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages
|
!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages
|
||||||
!/dev/ci/**/Gemfile.lock
|
!/dev/ci/**/Gemfile.lock
|
||||||
|
!**/pubspec.lock
|
||||||
|
!**/Podfile.lock
|
||||||
|
|
||||||
#generated file
|
#generated file
|
||||||
*.g.dart
|
*.g.dart
|
||||||
messages_*.dart
|
messages_*.dart
|
||||||
|
|||||||
@@ -0,0 +1,3 @@
|
|||||||
|
source "https://rubygems.org"
|
||||||
|
|
||||||
|
gem "fastlane"
|
||||||
@@ -25,6 +25,12 @@ apply plugin: 'com.android.application'
|
|||||||
apply plugin: 'kotlin-android'
|
apply plugin: 'kotlin-android'
|
||||||
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
|
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
|
||||||
|
|
||||||
|
def keystoreProperties = new Properties()
|
||||||
|
def keystorePropertiesFile = rootProject.file('key.properties')
|
||||||
|
if (keystorePropertiesFile.exists()) {
|
||||||
|
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
|
||||||
|
}
|
||||||
|
|
||||||
android {
|
android {
|
||||||
compileSdkVersion 32
|
compileSdkVersion 32
|
||||||
|
|
||||||
@@ -45,11 +51,20 @@ android {
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Use key information file
|
||||||
|
signingConfigs {
|
||||||
|
release {
|
||||||
|
keyAlias keystoreProperties['keyAlias']
|
||||||
|
keyPassword keystoreProperties['keyPassword']
|
||||||
|
storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
|
||||||
|
storePassword keystoreProperties['storePassword']
|
||||||
|
}
|
||||||
|
}
|
||||||
buildTypes {
|
buildTypes {
|
||||||
release {
|
release {
|
||||||
// TODO: Add your own signing config for the release build.
|
// TODO: Add your own signing config for the release build.
|
||||||
// Signing with the debug keys for now, so `flutter run --release` works.
|
// Signing with the debug keys for now, so `flutter run --release` works.
|
||||||
signingConfig signingConfigs.debug
|
signingConfig signingConfigs.release
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
package_name("com.linagora.android.teammail") # e.g. com.krausefx.app
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
# This file contains the fastlane.tools configuration
|
||||||
|
# You can find the documentation at https://docs.fastlane.tools
|
||||||
|
#
|
||||||
|
# For a list of all available actions, check out
|
||||||
|
#
|
||||||
|
# https://docs.fastlane.tools/actions
|
||||||
|
#
|
||||||
|
# For a list of all available plugins, check out
|
||||||
|
#
|
||||||
|
# https://docs.fastlane.tools/plugins/available-plugins
|
||||||
|
#
|
||||||
|
|
||||||
|
# Uncomment the line if you want fastlane to automatically update itself
|
||||||
|
# update_fastlane
|
||||||
|
#
|
||||||
|
|
||||||
|
opt_out_usage # Opt out of telemetry
|
||||||
|
default_platform(:android)
|
||||||
|
|
||||||
|
platform :android do
|
||||||
|
desc "Build development version"
|
||||||
|
lane :dev do
|
||||||
|
sh "flutter build apk --verbose --release --dart-define=SERVER_URL=$SERVER_URL"
|
||||||
|
end
|
||||||
|
|
||||||
|
desc "Build and deploy release version"
|
||||||
|
lane :release do
|
||||||
|
track = "alpha"
|
||||||
|
latest_build_number = google_play_track_version_codes(
|
||||||
|
track: track,
|
||||||
|
json_key_data: ENV["PLAY_STORE_CONFIG_JSON"]
|
||||||
|
)[0].to_i
|
||||||
|
build_name = last_git_tag.gsub("v", "")
|
||||||
|
sh "flutter build appbundle --verbose --release --dart-define=SERVER_URL=$SERVER_URL --build-number=#{latest_build_number+1} --build-name=#{build_name}"
|
||||||
|
upload_to_play_store(
|
||||||
|
json_key_data: ENV["PLAY_STORE_CONFIG_JSON"],
|
||||||
|
track: track,
|
||||||
|
aab: "../build/app/outputs/bundle/release/app-release.aab",
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
source "https://rubygems.org"
|
||||||
|
|
||||||
|
gem "fastlane"
|
||||||
@@ -0,0 +1,249 @@
|
|||||||
|
PODS:
|
||||||
|
- AppAuth (1.4.0):
|
||||||
|
- AppAuth/Core (= 1.4.0)
|
||||||
|
- AppAuth/ExternalUserAgent (= 1.4.0)
|
||||||
|
- AppAuth/Core (1.4.0)
|
||||||
|
- AppAuth/ExternalUserAgent (1.4.0)
|
||||||
|
- better_open_file (0.0.1):
|
||||||
|
- Flutter
|
||||||
|
- connectivity_plus (0.0.1):
|
||||||
|
- Flutter
|
||||||
|
- ReachabilitySwift
|
||||||
|
- contacts_service (0.2.2):
|
||||||
|
- Flutter
|
||||||
|
- device_info_plus (0.0.1):
|
||||||
|
- Flutter
|
||||||
|
- DKImagePickerController/Core (4.3.4):
|
||||||
|
- DKImagePickerController/ImageDataManager
|
||||||
|
- DKImagePickerController/Resource
|
||||||
|
- DKImagePickerController/ImageDataManager (4.3.4)
|
||||||
|
- DKImagePickerController/PhotoGallery (4.3.4):
|
||||||
|
- DKImagePickerController/Core
|
||||||
|
- DKPhotoGallery
|
||||||
|
- DKImagePickerController/Resource (4.3.4)
|
||||||
|
- DKPhotoGallery (0.0.17):
|
||||||
|
- DKPhotoGallery/Core (= 0.0.17)
|
||||||
|
- DKPhotoGallery/Model (= 0.0.17)
|
||||||
|
- DKPhotoGallery/Preview (= 0.0.17)
|
||||||
|
- DKPhotoGallery/Resource (= 0.0.17)
|
||||||
|
- SDWebImage
|
||||||
|
- SwiftyGif
|
||||||
|
- DKPhotoGallery/Core (0.0.17):
|
||||||
|
- DKPhotoGallery/Model
|
||||||
|
- DKPhotoGallery/Preview
|
||||||
|
- SDWebImage
|
||||||
|
- SwiftyGif
|
||||||
|
- DKPhotoGallery/Model (0.0.17):
|
||||||
|
- SDWebImage
|
||||||
|
- SwiftyGif
|
||||||
|
- DKPhotoGallery/Preview (0.0.17):
|
||||||
|
- DKPhotoGallery/Model
|
||||||
|
- DKPhotoGallery/Resource
|
||||||
|
- SDWebImage
|
||||||
|
- SwiftyGif
|
||||||
|
- DKPhotoGallery/Resource (0.0.17):
|
||||||
|
- SDWebImage
|
||||||
|
- SwiftyGif
|
||||||
|
- file_picker (0.0.1):
|
||||||
|
- DKImagePickerController/PhotoGallery
|
||||||
|
- Flutter
|
||||||
|
- fk_user_agent (2.0.0):
|
||||||
|
- Flutter
|
||||||
|
- Flutter (1.0.0)
|
||||||
|
- flutter_appauth (0.0.1):
|
||||||
|
- AppAuth (= 1.4.0)
|
||||||
|
- Flutter
|
||||||
|
- flutter_downloader (0.0.1):
|
||||||
|
- Flutter
|
||||||
|
- flutter_image_compress (0.0.1):
|
||||||
|
- Flutter
|
||||||
|
- Mantle
|
||||||
|
- SDWebImage
|
||||||
|
- SDWebImageWebPCoder
|
||||||
|
- flutter_inappwebview (0.0.1):
|
||||||
|
- Flutter
|
||||||
|
- flutter_inappwebview/Core (= 0.0.1)
|
||||||
|
- OrderedSet (~> 5.0)
|
||||||
|
- flutter_inappwebview/Core (0.0.1):
|
||||||
|
- Flutter
|
||||||
|
- OrderedSet (~> 5.0)
|
||||||
|
- flutter_keyboard_visibility (0.0.1):
|
||||||
|
- Flutter
|
||||||
|
- flutter_native_splash (0.0.1):
|
||||||
|
- Flutter
|
||||||
|
- fluttertoast (0.0.2):
|
||||||
|
- Flutter
|
||||||
|
- Toast
|
||||||
|
- FMDB (2.7.5):
|
||||||
|
- FMDB/standard (= 2.7.5)
|
||||||
|
- FMDB/standard (2.7.5)
|
||||||
|
- libwebp (1.2.3):
|
||||||
|
- libwebp/demux (= 1.2.3)
|
||||||
|
- libwebp/mux (= 1.2.3)
|
||||||
|
- libwebp/webp (= 1.2.3)
|
||||||
|
- libwebp/demux (1.2.3):
|
||||||
|
- libwebp/webp
|
||||||
|
- libwebp/mux (1.2.3):
|
||||||
|
- libwebp/demux
|
||||||
|
- libwebp/webp (1.2.3)
|
||||||
|
- Mantle (2.2.0):
|
||||||
|
- Mantle/extobjc (= 2.2.0)
|
||||||
|
- Mantle/extobjc (2.2.0)
|
||||||
|
- OrderedSet (5.0.0)
|
||||||
|
- package_info_plus (0.4.5):
|
||||||
|
- Flutter
|
||||||
|
- path_provider (0.0.1):
|
||||||
|
- Flutter
|
||||||
|
- permission_handler_apple (9.0.4):
|
||||||
|
- Flutter
|
||||||
|
- ReachabilitySwift (5.0.0)
|
||||||
|
- receive_sharing_intent (0.0.1):
|
||||||
|
- Flutter
|
||||||
|
- SDWebImage (5.13.3):
|
||||||
|
- SDWebImage/Core (= 5.13.3)
|
||||||
|
- SDWebImage/Core (5.13.3)
|
||||||
|
- SDWebImageWebPCoder (0.9.1):
|
||||||
|
- libwebp (~> 1.0)
|
||||||
|
- SDWebImage/Core (~> 5.13)
|
||||||
|
- share (0.0.1):
|
||||||
|
- Flutter
|
||||||
|
- shared_preferences (0.0.1):
|
||||||
|
- Flutter
|
||||||
|
- sqflite (0.0.2):
|
||||||
|
- Flutter
|
||||||
|
- FMDB (>= 2.7.5)
|
||||||
|
- SwiftyGif (5.4.3)
|
||||||
|
- Toast (4.0.0)
|
||||||
|
- url_launcher_ios (0.0.1):
|
||||||
|
- Flutter
|
||||||
|
- webview_flutter_wkwebview (0.0.1):
|
||||||
|
- Flutter
|
||||||
|
|
||||||
|
DEPENDENCIES:
|
||||||
|
- better_open_file (from `.symlinks/plugins/better_open_file/ios`)
|
||||||
|
- connectivity_plus (from `.symlinks/plugins/connectivity_plus/ios`)
|
||||||
|
- contacts_service (from `.symlinks/plugins/contacts_service/ios`)
|
||||||
|
- device_info_plus (from `.symlinks/plugins/device_info_plus/ios`)
|
||||||
|
- file_picker (from `.symlinks/plugins/file_picker/ios`)
|
||||||
|
- fk_user_agent (from `.symlinks/plugins/fk_user_agent/ios`)
|
||||||
|
- Flutter (from `Flutter`)
|
||||||
|
- flutter_appauth (from `.symlinks/plugins/flutter_appauth/ios`)
|
||||||
|
- flutter_downloader (from `.symlinks/plugins/flutter_downloader/ios`)
|
||||||
|
- flutter_image_compress (from `.symlinks/plugins/flutter_image_compress/ios`)
|
||||||
|
- flutter_inappwebview (from `.symlinks/plugins/flutter_inappwebview/ios`)
|
||||||
|
- flutter_keyboard_visibility (from `.symlinks/plugins/flutter_keyboard_visibility/ios`)
|
||||||
|
- flutter_native_splash (from `.symlinks/plugins/flutter_native_splash/ios`)
|
||||||
|
- fluttertoast (from `.symlinks/plugins/fluttertoast/ios`)
|
||||||
|
- package_info_plus (from `.symlinks/plugins/package_info_plus/ios`)
|
||||||
|
- path_provider (from `.symlinks/plugins/path_provider/ios`)
|
||||||
|
- permission_handler_apple (from `.symlinks/plugins/permission_handler_apple/ios`)
|
||||||
|
- receive_sharing_intent (from `.symlinks/plugins/receive_sharing_intent/ios`)
|
||||||
|
- share (from `.symlinks/plugins/share/ios`)
|
||||||
|
- shared_preferences (from `.symlinks/plugins/shared_preferences/ios`)
|
||||||
|
- sqflite (from `.symlinks/plugins/sqflite/ios`)
|
||||||
|
- url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`)
|
||||||
|
- webview_flutter_wkwebview (from `.symlinks/plugins/webview_flutter_wkwebview/ios`)
|
||||||
|
|
||||||
|
SPEC REPOS:
|
||||||
|
trunk:
|
||||||
|
- AppAuth
|
||||||
|
- DKImagePickerController
|
||||||
|
- DKPhotoGallery
|
||||||
|
- FMDB
|
||||||
|
- libwebp
|
||||||
|
- Mantle
|
||||||
|
- OrderedSet
|
||||||
|
- ReachabilitySwift
|
||||||
|
- SDWebImage
|
||||||
|
- SDWebImageWebPCoder
|
||||||
|
- SwiftyGif
|
||||||
|
- Toast
|
||||||
|
|
||||||
|
EXTERNAL SOURCES:
|
||||||
|
better_open_file:
|
||||||
|
:path: ".symlinks/plugins/better_open_file/ios"
|
||||||
|
connectivity_plus:
|
||||||
|
:path: ".symlinks/plugins/connectivity_plus/ios"
|
||||||
|
contacts_service:
|
||||||
|
:path: ".symlinks/plugins/contacts_service/ios"
|
||||||
|
device_info_plus:
|
||||||
|
:path: ".symlinks/plugins/device_info_plus/ios"
|
||||||
|
file_picker:
|
||||||
|
:path: ".symlinks/plugins/file_picker/ios"
|
||||||
|
fk_user_agent:
|
||||||
|
:path: ".symlinks/plugins/fk_user_agent/ios"
|
||||||
|
Flutter:
|
||||||
|
:path: Flutter
|
||||||
|
flutter_appauth:
|
||||||
|
:path: ".symlinks/plugins/flutter_appauth/ios"
|
||||||
|
flutter_downloader:
|
||||||
|
:path: ".symlinks/plugins/flutter_downloader/ios"
|
||||||
|
flutter_image_compress:
|
||||||
|
:path: ".symlinks/plugins/flutter_image_compress/ios"
|
||||||
|
flutter_inappwebview:
|
||||||
|
:path: ".symlinks/plugins/flutter_inappwebview/ios"
|
||||||
|
flutter_keyboard_visibility:
|
||||||
|
:path: ".symlinks/plugins/flutter_keyboard_visibility/ios"
|
||||||
|
flutter_native_splash:
|
||||||
|
:path: ".symlinks/plugins/flutter_native_splash/ios"
|
||||||
|
fluttertoast:
|
||||||
|
:path: ".symlinks/plugins/fluttertoast/ios"
|
||||||
|
package_info_plus:
|
||||||
|
:path: ".symlinks/plugins/package_info_plus/ios"
|
||||||
|
path_provider:
|
||||||
|
:path: ".symlinks/plugins/path_provider/ios"
|
||||||
|
permission_handler_apple:
|
||||||
|
:path: ".symlinks/plugins/permission_handler_apple/ios"
|
||||||
|
receive_sharing_intent:
|
||||||
|
:path: ".symlinks/plugins/receive_sharing_intent/ios"
|
||||||
|
share:
|
||||||
|
:path: ".symlinks/plugins/share/ios"
|
||||||
|
shared_preferences:
|
||||||
|
:path: ".symlinks/plugins/shared_preferences/ios"
|
||||||
|
sqflite:
|
||||||
|
:path: ".symlinks/plugins/sqflite/ios"
|
||||||
|
url_launcher_ios:
|
||||||
|
:path: ".symlinks/plugins/url_launcher_ios/ios"
|
||||||
|
webview_flutter_wkwebview:
|
||||||
|
:path: ".symlinks/plugins/webview_flutter_wkwebview/ios"
|
||||||
|
|
||||||
|
SPEC CHECKSUMS:
|
||||||
|
AppAuth: 31bcec809a638d7bd2f86ea8a52bd45f6e81e7c7
|
||||||
|
better_open_file: 03cf320415d4d3f46b6e00adc4a567d76c1a399d
|
||||||
|
connectivity_plus: 413a8857dd5d9f1c399a39130850d02fe0feaf7e
|
||||||
|
contacts_service: 849e1f84281804c8bfbec1b4c3eedcb23c5d3eca
|
||||||
|
device_info_plus: e5c5da33f982a436e103237c0c85f9031142abed
|
||||||
|
DKImagePickerController: b512c28220a2b8ac7419f21c491fc8534b7601ac
|
||||||
|
DKPhotoGallery: fdfad5125a9fdda9cc57df834d49df790dbb4179
|
||||||
|
file_picker: 817ab1d8cd2da9d2da412a417162deee3500fc95
|
||||||
|
fk_user_agent: 1f47ec39291e8372b1d692b50084b0d54103c545
|
||||||
|
Flutter: 50d75fe2f02b26cc09d224853bb45737f8b3214a
|
||||||
|
flutter_appauth: 05c3778a1e4ae23364dd2ef37cbae14b244f646b
|
||||||
|
flutter_downloader: 058b9c41564a90500f67f3e432e3524613a7fd83
|
||||||
|
flutter_image_compress: fd2b476345226e1a10ea352fa306af95704642c1
|
||||||
|
flutter_inappwebview: bfd58618f49dc62f2676de690fc6dcda1d6c3721
|
||||||
|
flutter_keyboard_visibility: 0339d06371254c3eb25eeb90ba8d17dca8f9c069
|
||||||
|
flutter_native_splash: 52501b97d1c0a5f898d687f1646226c1f93c56ef
|
||||||
|
fluttertoast: 6122fa75143e992b1d3470f61000f591a798cc58
|
||||||
|
FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a
|
||||||
|
libwebp: 60305b2e989864154bd9be3d772730f08fc6a59c
|
||||||
|
Mantle: c5aa8794a29a022dfbbfc9799af95f477a69b62d
|
||||||
|
OrderedSet: aaeb196f7fef5a9edf55d89760da9176ad40b93c
|
||||||
|
package_info_plus: 6c92f08e1f853dc01228d6f553146438dafcd14e
|
||||||
|
path_provider: abfe2b5c733d04e238b0d8691db0cfd63a27a93c
|
||||||
|
permission_handler_apple: 44366e37eaf29454a1e7b1b7d736c2cceaeb17ce
|
||||||
|
ReachabilitySwift: 985039c6f7b23a1da463388634119492ff86c825
|
||||||
|
receive_sharing_intent: c0d87310754e74c0f9542947e7cbdf3a0335a3b1
|
||||||
|
SDWebImage: af5bbffef2cde09f148d826f9733dcde1a9414cd
|
||||||
|
SDWebImageWebPCoder: 18503de6621dd2c420d680e33d46bf8e1d5169b0
|
||||||
|
share: 0b2c3e82132f5888bccca3351c504d0003b3b410
|
||||||
|
shared_preferences: af6bfa751691cdc24be3045c43ec037377ada40d
|
||||||
|
sqflite: 6d358c025f5b867b29ed92fc697fd34924e11904
|
||||||
|
SwiftyGif: 6c3eafd0ce693cad58bb63d2b2fb9bacb8552780
|
||||||
|
Toast: 91b396c56ee72a5790816f40d3a94dd357abc196
|
||||||
|
url_launcher_ios: 839c58cdb4279282219f5e248c3321761ff3c4de
|
||||||
|
webview_flutter_wkwebview: b7e70ef1ddded7e69c796c7390ee74180182971f
|
||||||
|
|
||||||
|
PODFILE CHECKSUM: 91efd4097cc41f032416d67ecaac21cc2de8dd55
|
||||||
|
|
||||||
|
COCOAPODS: 1.11.3
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
app_identifier("com.linagora.ios.teammail") # The bundle identifier of your app
|
||||||
|
|
||||||
|
|
||||||
|
# For more information about the Appfile, see:
|
||||||
|
# https://docs.fastlane.tools/advanced/#appfile
|
||||||
@@ -0,0 +1,110 @@
|
|||||||
|
# This file contains the fastlane.tools configuration
|
||||||
|
# You can find the documentation at https://docs.fastlane.tools
|
||||||
|
#
|
||||||
|
# For a list of all available actions, check out
|
||||||
|
#
|
||||||
|
# https://docs.fastlane.tools/actions
|
||||||
|
#
|
||||||
|
# For a list of all available plugins, check out
|
||||||
|
#
|
||||||
|
# https://docs.fastlane.tools/plugins/available-plugins
|
||||||
|
#
|
||||||
|
|
||||||
|
# Uncomment the line if you want fastlane to automatically update itself
|
||||||
|
# update_fastlane
|
||||||
|
|
||||||
|
opt_out_usage
|
||||||
|
default_platform(:ios)
|
||||||
|
setup_ci if ENV['CI']
|
||||||
|
|
||||||
|
# Import signing certificate
|
||||||
|
import_certificate(
|
||||||
|
certificate_path: "cert.p12",
|
||||||
|
certificate_password: ENV["CERTIFICATE_PASSWORD"],
|
||||||
|
keychain_name: ENV["MATCH_KEYCHAIN_NAME"]
|
||||||
|
)
|
||||||
|
|
||||||
|
# 2 provisioning profiles, 1 for the main app and 1 for the share extension
|
||||||
|
install_provisioning_profile(path: "buildpp.mobileprovision")
|
||||||
|
install_provisioning_profile(path: "shareextpp.mobileprovision")
|
||||||
|
|
||||||
|
|
||||||
|
platform :ios do
|
||||||
|
desc "Build development version"
|
||||||
|
lane :dev do
|
||||||
|
update_code_signing_settings(
|
||||||
|
use_automatic_signing: false,
|
||||||
|
path: "Runner.xcodeproj",
|
||||||
|
code_sign_identity: "Apple Development"
|
||||||
|
)
|
||||||
|
# Update the provisioning profile for both the main app and extension
|
||||||
|
update_project_provisioning(
|
||||||
|
xcodeproj: "Runner.xcodeproj",
|
||||||
|
profile: "./buildpp.mobileprovision",
|
||||||
|
target_filter: ".*Runner.*"
|
||||||
|
)
|
||||||
|
update_project_provisioning(
|
||||||
|
xcodeproj: "Runner.xcodeproj",
|
||||||
|
profile: "./shareextpp.mobileprovision",
|
||||||
|
target_filter: ".*TeamMailShareExtension.*"
|
||||||
|
)
|
||||||
|
build_app(
|
||||||
|
scheme: "Runner",
|
||||||
|
workspace: "Runner.xcworkspace",
|
||||||
|
export_method: "development",
|
||||||
|
export_options: {
|
||||||
|
provisioningProfiles: {
|
||||||
|
"com.linagora.ios.teammail": "tmail.development.profile",
|
||||||
|
"com.linagora.ios.teammail.TeamMailShareExtension": "tmail.ext.ios.development.provisioning.profile"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
desc "Build and deploy release version"
|
||||||
|
lane :release do
|
||||||
|
# App Store Connect API setup
|
||||||
|
app_store_connect_api_key(
|
||||||
|
key_id: ENV["APPLE_KEY_ID"],
|
||||||
|
issuer_id: ENV["APPLE_ISSUER_ID"],
|
||||||
|
key_filepath: "./apiKey.p8"
|
||||||
|
)
|
||||||
|
increment_build_number(
|
||||||
|
build_number: latest_testflight_build_number + 1
|
||||||
|
)
|
||||||
|
increment_version_number(
|
||||||
|
version_number: last_git_tag.gsub("v", "")
|
||||||
|
)
|
||||||
|
update_code_signing_settings(
|
||||||
|
use_automatic_signing: false,
|
||||||
|
path: "Runner.xcodeproj",
|
||||||
|
code_sign_identity: "Apple Distribution"
|
||||||
|
)
|
||||||
|
# Update the provisioning profile for both the main app and extension
|
||||||
|
update_project_provisioning(
|
||||||
|
xcodeproj: "Runner.xcodeproj",
|
||||||
|
profile: "./buildpp.mobileprovision",
|
||||||
|
target_filter: ".*Runner.*"
|
||||||
|
)
|
||||||
|
update_project_provisioning(
|
||||||
|
xcodeproj: "Runner.xcodeproj",
|
||||||
|
profile: "./shareextpp.mobileprovision",
|
||||||
|
target_filter: ".*TeamMailShareExtension.*"
|
||||||
|
)
|
||||||
|
build_app(
|
||||||
|
scheme: "Runner",
|
||||||
|
workspace: "Runner.xcworkspace",
|
||||||
|
export_method: "app-store",
|
||||||
|
export_options: {
|
||||||
|
provisioningProfiles: {
|
||||||
|
"com.linagora.ios.teammail": "tmail.distribution.profile",
|
||||||
|
"com.linagora.ios.teammail.TeamMailShareExtension": "tmail.share.ext.distribution.profile"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
upload_to_testflight(
|
||||||
|
skip_waiting_for_build_processing: true,
|
||||||
|
ipa: "Runner.ipa"
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end
|
||||||
+14
-14
@@ -1,12 +1,15 @@
|
|||||||
#!/bin/bash
|
#!/usr/bin/env bash
|
||||||
echo Pre-build ...
|
# fail if any commands fails
|
||||||
|
set -e
|
||||||
|
# debug log
|
||||||
|
set -x
|
||||||
|
|
||||||
cd core
|
cd core
|
||||||
flutter pub get
|
flutter pub get
|
||||||
|
|
||||||
# Install necessary pods
|
## Install necessary pods
|
||||||
cd ../ios
|
#cd ../ios
|
||||||
flutter pub get && pod install
|
#flutter pub get && pod install
|
||||||
|
|
||||||
cd ../model
|
cd ../model
|
||||||
flutter pub get && flutter pub run build_runner build --delete-conflicting-outputs
|
flutter pub get && flutter pub run build_runner build --delete-conflicting-outputs
|
||||||
@@ -14,17 +17,14 @@ flutter pub get && flutter pub run build_runner build --delete-conflicting-outpu
|
|||||||
cd ../contact
|
cd ../contact
|
||||||
flutter pub get && flutter pub run build_runner build --delete-conflicting-outputs
|
flutter pub get && flutter pub run build_runner build --delete-conflicting-outputs
|
||||||
|
|
||||||
cd ../rule_filter
|
|
||||||
flutter pub get && flutter pub run build_runner build --delete-conflicting-outputs
|
|
||||||
|
|
||||||
cd ../forward
|
cd ../forward
|
||||||
flutter pub get && flutter pub run build_runner build --delete-conflicting-outputs
|
flutter pub get && flutter pub run build_runner build --delete-conflicting-outputs
|
||||||
|
|
||||||
cd ..
|
cd ../rule_filter
|
||||||
flutter pub get && flutter pub run build_runner build --delete-conflicting-outputs
|
flutter pub get && flutter pub run build_runner build --delete-conflicting-outputs
|
||||||
|
|
||||||
flutter pub get && flutter pub run intl_generator:extract_to_arb --output-dir=./lib/l10n lib/main/localizations/app_localizations.dart
|
cd ..
|
||||||
|
flutter pub get \
|
||||||
flutter pub get && flutter pub run intl_generator:generate_from_arb --output-dir=lib/l10n --no-use-deferred-loading lib/main/localizations/app_localizations.dart lib/l10n/intl*.arb
|
&& flutter pub run build_runner build --delete-conflicting-outputs \
|
||||||
|
&& flutter pub run intl_generator:extract_to_arb --output-dir=./lib/l10n lib/main/localizations/app_localizations.dart \
|
||||||
echo \[Completed\] pre-build!!!
|
&& flutter pub run intl_generator:generate_from_arb --output-dir=lib/l10n --no-use-deferred-loading lib/main/localizations/app_localizations.dart lib/l10n/intl*.arb
|
||||||
|
|||||||
+1471
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user