Skip to content

Commit

Permalink
Initialize repo
Browse files Browse the repository at this point in the history
  • Loading branch information
r3nic1e committed May 3, 2023
0 parents commit e932ac4
Show file tree
Hide file tree
Showing 5,452 changed files with 281,164 additions and 0 deletions.
The diff you're trying to view is too large. We only load the first 3000 changed files.
23 changes: 23 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
FIREBASE_MESSAGING_SENDER_ID=
FIREBASE_PROJECT_ID=
FIREBASE_PROJECT_ID=
FIREBASE_DATABASE_URL=

# ios
FIREBASE_IOS_API_KEY=
FIREBASE_APP_ID=
FIREBASE_ANDROID_CLIENT_ID=
FIREBASE_IOS_CLIENT_ID=
FIREBASE_IOS_BUNDLE_ID=


#android
FIREBASE_ANDROID_API_KEY=
FIREBASE_ANDROID_APP_ID=
FIREBASE_DATABASE_URL=

#macOS
FIREBASE_MACOS_API_KEY=
FIREBASE_MACOS_APP_ID=
FIREBASE_MACOS_IOS_CLIENT_ID=
FIREBASE_MACOS_IOS_BUNDLE_ID=
4 changes: 4 additions & 0 deletions .fvm/fvm_config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"flutterSdkVersion": "3.7.11",
"flavors": {}
}
120 changes: 120 additions & 0 deletions .github/actions/build_android/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
name: Build Android application
description: Builds apk for Android

inputs:
buildType:
description: Whether to build release, firebase or profile version. "release" for release version, "profile" for firebase version.
required: true
fastlaneCertificatesSSHPrivateKey:
description: "private ssh key for fastlane certificates repo"
required: true
matchPassword:
description: "password for match certificates repo"
required: true
vesdkLicenseVideoIos:
description: "vesdk_license_video.ios license file contents"
required: true
vesdkLicenseVideoAndroid:
description: "vesdk_license_video.android license file contents"
required: true
pesdkLicenseIos:
description: "pesdk_license.ios license file contents"
required: true
pesdkLicenseAndroid:
description: "pesdk_license.android license file contents"
required: true
androidKeystoreFileData:
description: "release.keystore file contents"
required: false
androidStorePassword:
description: "Store password for signing"
required: false
androidKeyAlias:
description: "Key alias for signing"
required: false
androidKeyPassword:
description: "Key password for signing"
required: false
dartDebugInfoPath:
description: "Path for Dart debug info (only for release)"
required: false
default: "${{ github.workspace }}/android/debug-info"
ENVIRONMENT_CONFIG_PRODUCTION:
description: '.env and firebase files config file, bas64-encoded'
required: true

runs:
using: composite
steps:
- name: Prepare environment
uses: ./.github/actions/prepare

- name: Extract config
run: |
echo $ENVIRONMENT_CONFIG_PRODUCTION | base64 -d > config.zip
make extract_config
shell: bash
env:
ENVIRONMENT_CONFIG_PRODUCTION: ${{ inputs.ENVIRONMENT_CONFIG_PRODUCTION }}

- name: Set licenses
uses: ./.github/actions/set_licenses
with:
vesdkLicenseVideoIos: ${{ inputs.vesdkLicenseVideoIos }}
vesdkLicenseVideoAndroid: ${{ inputs.vesdkLicenseVideoAndroid }}
pesdkLicenseIos: ${{ inputs.pesdkLicenseIos }}
pesdkLicenseAndroid: ${{ inputs.pesdkLicenseAndroid }}

- name: Set firebase dart envs
if: ${{ inputs.buildType == 'profile' }}
run: |
echo "BUILD_SOURCE_NAME=firebase" >> $GITHUB_ENV
shell: bash

- name: prepare keystore
if: ${{ inputs.buildType == 'release' }}
run: |
echo "${PICNIC_ANDROID_KEYSTORE_FILE_DATA}" | base64 -d > android/app/signing/release.keystore
env:
PICNIC_ANDROID_KEYSTORE_FILE_DATA: ${{ inputs.androidKeystoreFileData }}
shell: bash

- name: Build release apk
id: build_release
if: ${{ inputs.buildType == 'release' }}
working-directory: android
run: |
flutter build appbundle \
--release \
--dart-define="BUILD_SOURCE_NAME=google play" \
--split-debug-info="${{ inputs.dartDebugInfoPath }}" \
--obfuscate
echo "APK_PATH=build/app/outputs/flutter-apk/app-release.apk" >> $GITHUB_OUTPUT
shell: bash
env:
PICNIC_ANDROID_STORE_PASSWORD: ${{ inputs.androidStorePassword }}
PICNIC_ANDROID_KEY_ALIAS: ${{ inputs.androidKeyAlias }}
PICNIC_ANDROID_KEY_PASSWORD: ${{ inputs.androidKeyPassword }}

- name: Build profile apk
id: build_profile
if: ${{ inputs.buildType == 'profile' }}
working-directory: android
run: |
flutter build apk \
--profile \
--build-number ${{ github.run_number }} \
--dart-define="BUILD_SOURCE_NAME=${BUILD_SOURCE_NAME}" \
--dart-define="BUILD_SOURCE_BRANCH=${BUILD_SOURCE_BRANCH}" \
--dart-define="BUILD_SOURCE_COMMIT=${BUILD_SOURCE_COMMIT}"
echo "APK_PATH=build/app/outputs/flutter-apk/app-profile.apk" >> $GITHUB_OUTPUT
shell: bash

- name: Check pubspec.lock changes
run: git diff --exit-code pubspec.lock
shell: bash

outputs:
apk-path:
description: "Path of built apk file"
value: "${{ steps.build_release.outputs.APK_PATH }}${{ steps.build_profile.outputs.APK_PATH }}"
102 changes: 102 additions & 0 deletions .github/actions/build_ios/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
name: Build iOS application
description: Builds ipa for iOS

inputs:
buildType:
description: Whether to build release, firebase or profile version. "release" for release version, "profile" for firebase version.
required: true
fastlaneCertificatesSSHPrivateKey:
description: "private ssh key for fastlane certificates repo"
required: true
matchPassword:
description: "password for match certificates repo"
required: true
vesdkLicenseVideoIos:
description: "vesdk_license_video.ios license file contents"
required: true
vesdkLicenseVideoAndroid:
description: "vesdk_license_video.android license file contents"
required: true
pesdkLicenseIos:
description: "pesdk_license.ios license file contents"
required: true
pesdkLicenseAndroid:
description: "pesdk_license.android license file contents"
required: true
dartDebugInfoPath:
description: "Path for Dart debug info (only for release)"
required: false
default: "${{ github.workspace }}/ios/debug-info"
ENVIRONMENT_CONFIG_PRODUCTION:
description: '.env and firebase files config file, bas64-encoded'
required: true

runs:
using: composite
steps:
- name: Prepare environment
uses: ./.github/actions/prepare

- name: Extract config
run: |
echo $ENVIRONMENT_CONFIG_PRODUCTION | base64 -d > config.zip
make extract_config
shell: bash
env:
ENVIRONMENT_CONFIG_PRODUCTION: ${{ inputs.ENVIRONMENT_CONFIG_PRODUCTION }}

- name: Prepare iOS
uses: ./.github/actions/prepare_ios
with:
FASTLANE_CERTIFICATES_SSH_PRIVATE_KEY: ${{ inputs.fastlaneCertificatesSSHPrivateKey }}
MATCH_PASSWORD: ${{ inputs.matchPassword }}

- name: Set licenses
uses: ./.github/actions/set_licenses
with:
vesdkLicenseVideoIos: ${{ inputs.vesdkLicenseVideoIos }}
vesdkLicenseVideoAndroid: ${{ inputs.vesdkLicenseVideoAndroid }}
pesdkLicenseIos: ${{ inputs.pesdkLicenseIos }}
pesdkLicenseAndroid: ${{ inputs.pesdkLicenseAndroid }}

- name: Set firebase dart envs
if: ${{ inputs.buildType == 'profile' }}
run: |
echo "BUILD_SOURCE_NAME=firebase" >> $GITHUB_ENV
shell: bash

- name: Build release ipa
id: build_release
if: ${{ inputs.buildType == 'release' }}
run: |
flutter build ipa \
--release \
--export-options-plist ios/export-appstore.plist \
--dart-define="BUILD_SOURCE_NAME=app store" \
--split-debug-info="${{ inputs.dartDebugInfoPath }}" \
--obfuscate
echo "IPA_PATH=build/ios/ipa/Picnic.ipa" >> $GITHUB_OUTPUT
shell: bash

- name: Build profile ipa
id: build_profile
if: ${{ inputs.buildType == 'profile' }}
run: |
flutter build ipa \
--profile \
--build-number ${{ github.run_number }} \
--export-options-plist ios/export-adhoc.plist \
--dart-define="BUILD_SOURCE_NAME=${BUILD_SOURCE_NAME}" \
--dart-define="BUILD_SOURCE_BRANCH=${BUILD_SOURCE_BRANCH}" \
--dart-define="BUILD_SOURCE_COMMIT=${BUILD_SOURCE_COMMIT}"
echo "IPA_PATH=build/ios/ipa/Picnic.ipa" >> $GITHUB_OUTPUT
shell: bash

- name: Check Podfile.lock changes
run: git diff --exit-code ios/Podfile.lock
shell: bash

outputs:
ipa-path:
description: "Path of built ipa file"
value: "${{ steps.build_release.outputs.IPA_PATH }}${{ steps.build_profile.outputs.IPA_PATH }}"
136 changes: 136 additions & 0 deletions .github/actions/build_macos/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
name: Build MacOS application
description: Builds DMG image for MacOS

inputs:
buildType:
description: Whether to build release, firebase or profile version. "release" for release version, "profile" for firebase version.
required: true
fastlaneCertificatesSSHPrivateKey:
description: "private ssh key for fastlane certificates repo"
required: true
matchPassword:
description: "password for match certificates repo"
required: true
vesdkLicenseVideoIos:
description: "vesdk_license_video.ios license file contents"
required: true
vesdkLicenseVideoAndroid:
description: "vesdk_license_video.android license file contents"
required: true
pesdkLicenseIos:
description: "pesdk_license.ios license file contents"
required: true
pesdkLicenseAndroid:
description: "pesdk_license.android license file contents"
required: true
appstoreConnectAPIKey:
description: "App Store Connect key contents"
required: true
IOSKeyID:
description: "App Store Connect key ID"
required: true
IOSKeyIssuerID:
description: "App Store Connect issuer ID"
required: true
skipFileChangeChecks:
description: "if false, will run Podfile/pubspec file change checks"
default: "false"
ENVIRONMENT_CONFIG_PRODUCTION:
description: '.env and firebase files config file, bas64-encoded'
required: true

runs:
using: composite
steps:
- name: Prepare environment
uses: ./.github/actions/prepare

- name: Extract config
run: |
echo $ENVIRONMENT_CONFIG_PRODUCTION | base64 -d > config.zip
make extract_config
shell: bash
env:
ENVIRONMENT_CONFIG_PRODUCTION: ${{ inputs.ENVIRONMENT_CONFIG_PRODUCTION }}

- name: Prepare MacOS
uses: ./.github/actions/prepare_macos
with:
FASTLANE_CERTIFICATES_SSH_PRIVATE_KEY: ${{ inputs.fastlaneCertificatesSSHPrivateKey }}
MATCH_PASSWORD: ${{ inputs.matchPassword }}

- name: Set licenses
uses: ./.github/actions/set_licenses
with:
vesdkLicenseVideoIos: ${{ inputs.vesdkLicenseVideoIos }}
vesdkLicenseVideoAndroid: ${{ inputs.vesdkLicenseVideoAndroid }}
pesdkLicenseIos: ${{ inputs.pesdkLicenseIos }}
pesdkLicenseAndroid: ${{ inputs.pesdkLicenseAndroid }}

- name: Build release macOS
if: ${{ inputs.buildType == 'release' }}
working-directory: packages/picnic-desktop-app
run: |
flutter build macos --release --build-number ${{ github.run_number }}
shell: bash
env:
VERBOSE_SCRIPT_LOGGING: "true"

- name: Build profile macOS
if: ${{ inputs.buildType == 'profile' }}
working-directory: packages/picnic-desktop-app
run: |
flutter build macos --profile --build-number ${{ github.run_number }} --dart-define="BUILD_SOURCE_NAME=${BUILD_SOURCE_NAME}" --dart-define="BUILD_SOURCE_BRANCH=${BUILD_SOURCE_BRANCH}" --dart-define="BUILD_SOURCE_COMMIT=${BUILD_SOURCE_COMMIT}"
shell: bash
env:
VERBOSE_SCRIPT_LOGGING: "true"

- name: Check Podfile.lock file for changes
if: ${{ inputs.skipFileChangeChecks == 'false' }}
run: git diff --exit-code packages/picnic-desktop-app/macos/Podfile.lock
shell: bash

- name: Check pubspec.lock changes
if: ${{ inputs.skipFileChangeChecks == 'false' }}
run: git diff --exit-code packages/picnic-desktop-app/pubspec.lock
shell: bash

- name: notarize macOS
working-directory: packages/picnic-desktop-app/macos
run: |
bundle exec fastlane notarize_macos build_type:${{ inputs.buildType }}
shell: bash
env:
PICNIC_APPSTORECONNECT_API_KEY: ${{ inputs.appstoreConnectAPIKey }}
PICNIC_IOS_KEY_ID: ${{ inputs.IOSKeyID }}
PICNIC_IOS_KEY_ISSUER_ID: ${{ inputs.IOSKeyIssuerID }}

- name: Fix appdmg config for profile build
if: ${{ inputs.buildType == 'profile' }}
working-directory: packages/picnic-desktop-app
run: sed -i '' 's#Release#Profile#g' dmg-file-config.json
shell: bash

- name: Bundle into DMG file
id: appdmg
working-directory: packages/picnic-desktop-app
run: |
appdmg dmg-file-config.json picnic-app.dmg
echo "DMG_PATH=packages/picnic-desktop-app/picnic-app.dmg" >> $GITHUB_OUTPUT
shell: bash

- name: notarize DMG
if: ${{ inputs.buildType == 'release' }}
working-directory: packages/picnic-desktop-app/macos
run: |
bundle exec fastlane notarize_macos_dmg
shell: bash
env:
PICNIC_APPSTORECONNECT_API_KEY: ${{ inputs.appstoreConnectAPIKey }}
PICNIC_IOS_KEY_ID: ${{ inputs.IOSKeyID }}
PICNIC_IOS_KEY_ISSUER_ID: ${{ inputs.IOSKeyIssuerID }}

outputs:
dmg-path:
description: "Path of built DMG image"
value: "${{ steps.appdmg.outputs.DMG_PATH }}"
Loading

0 comments on commit e932ac4

Please sign in to comment.