Commit graph

58 commits

Author SHA1 Message Date
Vadim
bfe3dc0ef4 Added beta release track to CD 2024-11-11 19:04:08 +01:00
Vadim
4e5cbc7759
Include generated release notes in builds (#194)
* create release notes from workflow input

* temp disable releases

* force builds

* include release notes in builds

* enabled releases
2024-10-08 19:53:15 +02:00
Vadim
b9c4796a7a
Returned release notes input to release workflow (#193) 2024-10-07 20:26:29 +02:00
Vadim
9100ae3066
Build Android using macos-latest runner (#186)
* build apk with latest macos runner
2024-07-28 18:52:44 +02:00
Vadim
881778b313
Show release notes after update (#178)
* replace generated release notes with pre-built assets

* implemented release notes dialog

* store release notes for version

* show release notes dialog after update

* added release notes dialog to settings

* allow blank values in settings

* updated release notes
2024-05-22 22:46:46 +02:00
Vadim
ec1f1eeeb4 Fixed release creation workflow 2024-04-19 17:03:45 +02:00
Vadim
d9ce47e0dd Show release version instead of "Version bump" 2024-04-15 18:27:56 +02:00
Vadim
d5f28ee5a4
ML-166 Fixed golden tests run on CI (#168)
* stub iap for goldens workflow

* typo

* Updated goldens

* don't push iap stub when updating goldens

* Update pubspec.yaml

* try explicit fonts

* Updated goldens

* set explicit font weights

* disable font smoothing

* run goldens on macos

* typo

* removed defaults from goldens workflow

* run pr check on macos-14

* removed smoothening reset

* Delete run_golden_tests.yml

* deleted fonts folder

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-04-12 10:43:19 +02:00
Vadim
27d56d1061
ML-166 Golden tests (#167)
* setup golden toolkit

* implemented `GoldenTestApplicationMock`

* added devices with dark theme

* implemented MeteringScreen golden test

* moved platform channel logic to app mock

* implemented SettingsScreen golden test

* gitignore golden tests failures

* Create dart_test.yaml

* adjusted `RulerSlider` ticks height

* set master screenshots

* run golden tests on ci

* fixed `LightSensorService` tests

* removed golden workflow call from PR check

* Update pr_check.yml
2024-04-12 08:07:20 +02:00
Vadim
bfd0bfe531
ML-108 First exposure metering seems to be wrong (#163)
* use latest `camera_android_camerax`

* fixed trailing commas

* moved ci/cd to 3.13.9

* removed focus & exposure fix

* fixed camera not being initialized on Android

* removed unused import
2024-04-06 19:14:37 +02:00
Vadim
d6c4240646 ML-157 Improve CI/CD (#162)
* Update README.md

* Set exact Flutter version for workflows

* Added stub `DefaultFirebaseOptions`

* Fixed `rm`

* Removed `rm`

* Update .gitignore

* Added readable name to ci workflow

* Build -> Development

* Update ci.yml

* Extract merged native libraries

* More descriptive run name

* Delete no longer used artifacts

* Replaced "Build ..." flow with "Create release"

* renamed other flows

* try using script for iap stub

* typo

* typo

* typo

* removed working dir

* added comment to stub_iap.sh

* checkout first

* increment build number by script

* Update increment_build_number.sh

* fixed iap repo

* stub

* updated stub script to work with tags

* depend on step conclusion

* check PR number

* run integration tests before build

* reuse Build Android workflow

* added stage backend option

* reuse Build iOS workflow

* temporeraly skip release jobs

* [ios] use distribution profile for release builds

* temporary skip tests

* typo

* checkout actions

* incremented macos runner version

* Restore GoogleService-Info.plist

* Restore firebase_app_id_file.json

* style

* separated android and ios builds

* fixed invalid workflow

* simplified release workflow tree

* fixed android keystore path

* enabled integration tests

* added option to skip integration tests

* fixed android folders...

* enabled releases

* increment build number for ios

* upload ipa to app store

* test ipa upload

* typo

* try to force ipa upload

* removed flavor from ipa artefact name

* try manual ipa upload

* switched to ubuntu for upload

* decode to repo

* Update create_release.yml

* auth with username + password

* reverted temporary settings

* typo

* disable pre-release integration tests by default

* fixed integration tests

* increased integration tests timeout

* delete ipa after upload

* delete all artifacts after the run

* fixed integration tests

* reduce integration tests timeout
2024-03-17 20:04:27 +01:00
Vadim
7787558713
ML-160 Integration tests (#161)
* test granting and revoking pro features

* extracted common widget tester actions

* test disabling & enabling of the metering screen layout features

* added integration tests to CI

* added integration tests to PR check

* allow matrix jobs to fail

* use base64 -d

* downgraded iphone version to the supported one

* use proper android device name

* typo in macos version

* upgraded iphone version to the supported one

* updated android compileSdkVersion

* added google services json restoration

* combined all tests in one file

* removed ipa signing for ios test

* debug prints :)

* lints

* refined tester extension and expectations

* e2e test (wip)

* added more expectations to e2e test

* changed pickers order a bit in e2e test

* added equipment profiles creation to e2e test

* added film selection to e2e test

* set android emulator API level to 32

* use flutter drive for integration tests

* removed app pre-build

* try running tests only for one platform

* added no-dds to flutter drive

* try running only on ios

* bumped macos version

* increased tests timeout

* set IPHONEOS_DEPLOYMENT_TARGET = 12.0

* removed prints

* Update Podfile

* restore firebase_app_id_file.json

* Delete run_integration_tests.sh

* run e2e with all tests

* reverted pr-check
2024-03-13 15:34:26 +01:00
Vadim
134af8ad28
ML-141 Prepare iOS release (#144)
* implemented `MockCameraContainerBloc` to stub camera on simulator

* [iOS] fixed camera preview aspect ratio

* place screenshots in platform-specific folders

* [iOS] updated buildable name

* [iOS] fixed stub image cover fit

* [iOS] implemented screenshots generator for all target devices

* store screenshots in _generated_ folder

* Update .gitignore

* Created "Build Prod .ipa" workflow

* added. certs to .ipa workflow

* test ipa building

* fixed provision cert path

* set provision profile in XCode

* set automatic signing for dev builds

* set ios version in Podfile

* renamed provision file

* renamed provision profile

* fixed cert folder...

* changed provision path

* typo

* typo

* try automatic signing

* use manual profile installation

* added export options

* typo

* increased timeout

* increased ipa timeout

* Update README.md

* typo

* [iOS] separated camera handling logic

* [iOS] fixed vibration

* migrated to http server iap

* [iOS] fixed histogram

* replaced distribution profile with development profile

* removed constants from env to the separate file

* removed duplicate launch schema

* fixed PR check workflow

* [iOS] set `ITSAppUsesNonExemptEncryption` to NO

* [iOS] removed java reference from "Build .ipa" workflow
2024-02-21 12:33:25 +01:00
Vadim
f3b08868be
ML-62 Providers tests + Platform & Application mocks (#131)
- Fixed test coverage calculation
- Removed `mockito` from the application mock
- Implemented platform channel mocks to mimic incident light metering
- Covered providers with unit tests
- Covered metering screen pickers with widget tests
- Laid foundation for integration tests
2023-10-20 16:12:43 +02:00
Vadim
cc660de0c4
Fixed PR check (#122)
* updated stub script to work with tags

* depend on step conclusion

* check PR number
2023-09-20 11:58:04 +02:00
Vadim
cc9f162933
ML-107 Films filter (#118)
* added stub `FilmsProvider`

* moved dialogs to the shared folder

* typo

* separated `EquipmentSettingsSection`

* copy

* `IAPBuilder` -> `IAPListTile`

* moved `Film` to resources repo

* fixed films selection

* untied iso and selected film

* removed film from exposure pairs building

* indicate push/pull

* copy

* Update .gitignore

* fixed extreme exposure pairs reciprocity display

* sync with iap changes

* sync iap stub with iap changes

* added reciprocity description

* added workspace file

* Update .gitignore
2023-09-14 16:59:16 +02:00
Vadim
bf3c8aa7c7 Fixed _Build .apk_ flow 2023-09-02 13:08:58 +02:00
Vadim
da4fcfc857
Fixed IAP stub in workflows (#110)
* try using script for iap stub

* typo

* typo

* typo

* removed working dir

* added comment to stub_iap.sh

* checkout first

* increment build number by script

* Update increment_build_number.sh

* fixed iap repo

* stub
2023-09-02 12:45:57 +02:00
Vadim
4bb080a144
Implemented IAP & Equipment profiles (#89)
* added equipment profiles to layout config

* calculate layout height based on `MeteringScreenLayoutFeature`

* Update cd_dev.yml

* Fixed equipment profile tile padding

* import

* `webfactory/ssh-agent`

* Update pubspec.yaml

* fixed `MeteringScreenLayoutConfigJson` tests

* fixed `UserPreferencesService` tests

* reset selected equipment profile when layout feature is disabled

* `IAPProductType.equipment` -> `IAPProductType.paidFeatures`

* updated packages versions

* Update shared_prefs_service.dart

* Fixed & tested exposure pairs list builder

* typo

* typo

* added iap repo stub

* Renamed `EquipmentProfileData` ->`EquipmentProfile`

* Moved `EquipmentProfileProvider` to iap repo

* Update README.md

* Fixed `EquipmentProfileListener`

* Improved `EquipmentProfilesListTile` statuses visualization

* Update README.md

* Update ci.yml

* Post-merge fixes

* typo

* Added workflow checks

* more sophisticated iap icons

* Include IAP by default

* added loader for `IAPProductStatus.pending`

* typo

* Added equipment profiles list placeholder

* typo

* separated `IconPlaceholder`

* improved `buildExposureValues` testing

* cleanup
2023-09-02 10:32:08 +02:00
Vadim
e1c320b804 Replaced user config with github-actions[bot] 2023-08-28 16:01:04 +02:00
Vadim
4917ee8aef
ML-61 Try to automate GP & Github releases via Github Actions (#103)
* Added option to create separate releases

* Removed branch condition

* Added default values to releases checkboxes

* Removed user fraction

* Remove .md extension for GP release

* More refined releases conditions

* Parse release name

* Create Google Play release name

* Checkout first

* Update create_release.yml

* Increment build number only for GH release

* Release with status `complete`

* typo
2023-08-10 12:42:31 +02:00
Vadim
dafbc68288 Increased build job timeout 2023-08-09 17:06:47 +02:00
Vadim
bdb0442dd1 Fixed release jobs dependencies 2023-08-09 16:49:02 +02:00
Vadim
d41fa6fa84
ML-61 Download each artifact separately (#102)
* Download each artifact separately

* typo

* Updated setup-java action

* Extract merged native libs directly in GP release job
2023-08-09 16:39:41 +02:00
Vadim
b9412c7441
ML-61 Create Google Play release from Github actions (#101)
* Delete all artefacts after GP release

* Update create_release.yml

* Added release notes formatting

* Preserve release zip if GP release creation failed

* Create whatsnew folder
2023-08-09 12:24:12 +02:00
Vadim
886188bb9e
ML-95 Live histogram (#97)
* Added histogram and separated camera view builder

* Added histogram to `MeteringScreenLayoutConfig`

* `ResolutionPreset.medium` -> `ResolutionPreset.low`

* Adjusted histogram paddings
2023-08-06 16:28:20 +02:00
Vadim
1310b78a54
ML-61 Delete artefacts after release creation (#96)
* Replaced "Build ..." flow with "Create new release"

* Renamed other flows
2023-08-05 21:11:23 +02:00
Vadim
40c670ad30
Updated README Build section (#94)
* Update README.md

* Set exact Flutter version for workflows

* Added stub `DefaultFirebaseOptions`

* Fixed `rm`

* Removed `rm`

* Update .gitignore

* Added readable name to ci workflow

* Build -> Development

* Update ci.yml
2023-07-25 17:31:01 +02:00
Vadim
ed83540dde
ML-61 Allow pushes from Github Action to protected branch (#85)
* Replaced zipping action

thedoctor0/zip-release@0.7.1 -> vimtor/action-zip@v1.1

* typo

* recursive: false

* typo

* typo

* debugSymbolLevel 'FULL'

* Update build.gradle

* Version bump

* wip

* wip

* `create-release` job

* removed changelog input

* added `needs`

* Version bump

* typo

* returned to macos-11 runner

* reverted pubspec version

* Version bump

* download artifacts

* Version bump

* extended artifacts path

* Version bump

* added LS

* Version bump

* Version bump

* rename files

* Version bump

* removed ls

* Version bump

* revert version

* typo

* added push to protected branch action

* run push on ubuntu-latest

* added branch name conditions

* Version bump

* typo

* Version bump
2023-06-28 17:53:54 +02:00
Vadim
79d6034894
ML-61 Update version in pubspec & create Github release from GitHub actions (#84)
* Replaced zipping action

thedoctor0/zip-release@0.7.1 -> vimtor/action-zip@v1.1

* typo

* recursive: false

* typo

* typo

* debugSymbolLevel 'FULL'

* Update build.gradle

* Version bump

* wip

* wip

* `create-release` job

* removed changelog input

* added `needs`

* Version bump

* typo

* returned to macos-11 runner

* reverted pubspec version

* Version bump

* download artifacts

* Version bump

* extended artifacts path

* Version bump

* added LS

* Version bump

* Version bump

* rename files

* Version bump

* removed ls

* Version bump

* revert version

* typo
2023-06-27 12:17:35 +02:00
Vadim
02ece15c5d
ML-61 Try using buildTypes.release.ndk.debugSymbolLevel 'FULL' (#79)
* Replaced zipping action

thedoctor0/zip-release@0.7.1 -> vimtor/action-zip@v1.1

* typo

* recursive: false

* typo

* typo

* debugSymbolLevel 'FULL'

* Update build.gradle
2023-06-20 14:48:28 +02:00
Vadim
74d0a7101c
ML-62 Bloc's tests (#78)
* removed redundant `UserPreferencesService` from `MeteringBloc`

* wip

* post-merge fixes

* `MeasureEvent` tests

* `MeasureEvent` tests revision

* `MeasureEvent` tests added timeout

* added stubs for other `MeteringBloc` events

* rewritten `MeteringBloc` logic

* wip

* `IsoChangedEvent` tests

* refined `IsoChangedEvent` tests

* `NdChangedEvent` tests

* `FilmChangedEvent` tests

* `MeteringCommunicationBloc` tests

* added test run to ci

* overriden `==` for `MeasuredState`

* `LuxMeteringEvent` tests

* refined `LuxMeteringEvent` tests

* rename

* wip

* wip

* `InitializeEvent`/`DeinitializeEvent` tests

* clamp minZoomLevel

* fixed `MeteringCommunicationBloc` tests

* wip

* `ZoomChangedEvent` tests

* `ExposureOffsetChangedEvent`/`ExposureOffsetResetEvent` tests

* renamed test groups

* added test coverage script

* improved `CameraContainerBloc` test coverage

* `EquipmentProfileChangedEvent` tests

* verify response vibration

* fixed running all tests

* `MeteringCommunicationBloc` equality tests

* `CameraContainerBloc` equality tests

* removed generated code from coverage
2023-06-20 08:43:49 +02:00
Vadim
4cabd17eb2
ML-51 Added abiFilters (#57)
* added abiFilters

* CD next try...
2023-05-05 15:02:12 +02:00
Vadim
2f478836ed Zip merged_native_libs
Zip merged_native_libs

Changed actions zipper

Added zip directory to CD

Removed zip directory from CD
2023-05-04 18:19:30 +02:00
Vadim
34ea034e67 Build appbundle & apk
Build appbundle & apk

Renamed github workflows
2023-05-04 18:18:21 +02:00
Vadim
6232ad555a
ML-51 Integrate Crashlytics (#52)
* added crashlytics

* added firebase_options to CD

* Version bump

* added firebase_options to CI

* timeout
2023-05-03 12:45:10 +02:00
Vadim
8a168b1424 Secrets typo 2023-04-09 13:52:57 +03:00
Vadim
0ac24e5d2c Temporarily removed firebase 2023-04-09 13:35:58 +03:00
Vadim
dc2c33e494 Added google-services.json to cd 2023-04-05 22:34:06 +03:00
Vadim
6bf059ed4d
ML-42 Implement equipment profiles creating (#45)
* added Equipment section placeholder

* get iso & nd values from equipment profile

* use photography values from remote repo

* removed equipment section

* wip

* moved `EquipmentProfileProvider` from iap repo

* wip

* moved equipment profiles screen from iap

* improved equipment profiles screen

* mock add/delete

* collapse on expand

* add profile with name

* show selected values count (wip)

* fixed profile update

* cleanup

* Update pubspec.yaml

* made `AnimatedDialogPicker` more generic

* switched to local `Dimens`

* fixed `MeteringTopBarShape`

* rename

* animated `EquipmentProfileContainer`

* added default equipment profile

* change equipment profile name via dialog

* fixed profile selection

* filter equipment profile update/delete

* removed `enabled` param from settings section

* non-null `EquipmentProfile`

* fixed duplicate GlobalKeys

* animated equipment list

* Update ci.yml

* fixed shutter speed anchor issue

* autofocus

* added firebase to project

* save/restore equipment profiles

* unified `SliverList`

* added SSH key to iap repo

* Update ci.yml

* ci recursive submodules

* try full url

* Revert "try full url"

This reverts commit a9b692b60e.

* restore firebase_options.dart

* changed runner to macos

* restore options earlier

* removed problematic file from analysis :)

* removed launch_app

* textoverflow

* implemented `DialogRangePicker`

* add iap repo to cd

* typo

* added    workflow_dispatch to crowdin push

* removed `equipmentProfileValuesCount` from intl

* fr & ru translations

* style

* removed iap
2023-03-30 22:24:18 +03:00
Vadim
6ffd164171
Added workflow_dispatch to crowdin push 2023-03-30 14:05:37 +03:00
Vadim
7b9f9a91c0
Upload native debug symbols to artifacts (#43)
* Create cd.yml

* added artifact upload

* fixed jobs sequence

* moved upload to build job

* jobs rename

* keystore

* Update cd.yml

* macos runner

* cd_dev

* Update build.gradle

* Added CD for Prod App Bundle

* Clean up

* removed redundant .apk type from appbundle artifact

* added uploading NDS to artifacts

* override version code

* override version name

* fixed gradle build path

* add version code in gradle
2023-02-23 23:05:02 +03:00
Vadim
1c4e302103
Filter path for translations push 2023-02-19 13:46:33 +03:00
Vadim
f8391454b6
ML-23 Implement migration mechanism for material_lightmeter users (#38)
* migrate existent keys

* await

* Update cd_dev.yml

* Update cd_dev.yml

* Update cd_dev.yml

* Fixed CD flavor artifact upload
2023-02-17 22:32:25 +03:00
Vadim
9945005008 Merge branch 'main' of https://github.com/vodemn/m3_lightmeter 2023-02-16 00:37:09 +03:00
Vadim
7eacc7d03b App Bundle CD fix 2023-02-16 00:36:47 +03:00
Vadim
6a05c42ee8
Build signed appbundle (#36)
* Create cd.yml

* added artifact upload

* fixed jobs sequence

* moved upload to build job

* jobs rename

* keystore

* Update cd.yml

* macos runner

* cd_dev

* Update build.gradle

* Added CD for Prod App Bundle

* Clean up
2023-02-16 00:25:13 +03:00
Vadim
8d1640447f
Build signed apk on tag creation (#35)
* Create cd.yml

* added artifact upload

* fixed jobs sequence

* moved upload to build job

* jobs rename

* keystore

* Update cd.yml

* macos runner

* cd_dev

* Update build.gradle
2023-02-16 00:16:39 +03:00
Vadim
59e440dfd7
Build apk on tag creation (#33)
* Create cd.yml

* added artifact upload

* fixed jobs sequence

* moved upload to build job

* jobs rename
2023-02-15 17:34:28 +03:00
Vadim
1372a75d3b
Added cd branch to cd.yml 2023-02-15 14:28:44 +03:00