Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
92 commits
Select commit Hold shift + click to select a range
6469fe3
feat: dependabot
Sigeth Sep 14, 2025
ad1a657
refactor: dart fix
Sigeth Sep 14, 2025
6cc922c
refactor: fixed flutter analyze
Sigeth Sep 14, 2025
40e9421
refactor: bug report now talks about application
Sigeth Sep 14, 2025
11e8894
feat: first ci job
Sigeth Sep 14, 2025
8c8151c
chore(deps): bump flutter sdk to 3.35.3 and upgrade
Sigeth Sep 14, 2025
f316fd3
fix: type annotation on calendar svc
Sigeth Sep 14, 2025
05e8845
feat: WIP tests
Sigeth Sep 18, 2025
4604ae2
fix: flutter analyze
Sigeth Sep 18, 2025
e2d4843
feat: build android with fastlane
Sigeth Sep 20, 2025
7c6d317
refactor: removed fastlane report
Sigeth Sep 20, 2025
0bd2c9a
fix(WIP): remove release condition to build android
Sigeth Sep 20, 2025
e106351
feat(WIP): build ios
Sigeth Oct 10, 2025
cba5f58
fix: use dollar for secrets
Sigeth Oct 10, 2025
4cf7822
fix: use git basic auth in fastfile
Sigeth Oct 10, 2025
b3920a6
fix: add team id on export
Sigeth Oct 10, 2025
a2952f9
fix: allow provisiong updates
Sigeth Oct 10, 2025
0500aba
fix: add authentication to xcargs
Sigeth Oct 10, 2025
5b01fbf
fix: xcargs use string interpolation
Sigeth Oct 10, 2025
81c6867
fix: use issuer id and key id in gh vars
Sigeth Oct 10, 2025
8bb2684
fix: use variables to store env
Sigeth Oct 10, 2025
3b9dbfd
fix: use env var in gh action
Sigeth Oct 10, 2025
cabeef1
fix: give env var to versioning
Sigeth Oct 10, 2025
93632ae
fix: authkey uses absolute path
Sigeth Oct 10, 2025
5512a38
feat: test ls to find authkey
Sigeth Oct 11, 2025
8445292
fix: correct authkey path
Sigeth Oct 11, 2025
8c24141
fix: add development team in project.pbxproj
Sigeth Oct 11, 2025
4de0211
Revert "fix: add development team in project.pbxproj"
Sigeth Nov 6, 2025
2a4c4c0
fix: run shell command in ios fastlane:build
Sigeth Nov 6, 2025
f655aaa
chore: testing ci
Sigeth Nov 6, 2025
151626e
chore: testing ci by catting
Sigeth Nov 6, 2025
a8f3d55
fix: use settings override
Sigeth Nov 18, 2025
a2d91e1
fix: change code signing identity
Sigeth Nov 18, 2025
9dc598d
fix: remove star in sdk
Sigeth Nov 18, 2025
18dacbc
fix: sign flutter generated pods
Sigeth Nov 18, 2025
96ca0cf
fix: add Podfile
Sigeth Nov 18, 2025
49150bb
fix: no codesign for pods
Sigeth Nov 18, 2025
f75401e
fix: pod install
Sigeth Nov 18, 2025
9fd09b8
fix: include pod config
Sigeth Nov 18, 2025
c61a89d
fix: disable automatic code signing
Sigeth Nov 18, 2025
0a6e3aa
fix: add additional build settings
Sigeth Nov 19, 2025
bb3b9c2
fix: use latest android gradle plugin
Sigeth Nov 20, 2025
0dfe6c3
fix: change distribution url for gradle wrapper
Sigeth Nov 20, 2025
fd8cb28
feat: android upload
Sigeth Nov 20, 2025
c7b4893
fix: created android changelogs dir
Sigeth Nov 20, 2025
5af0216
feat: upload to play store releases to alpha
Sigeth Nov 20, 2025
ec9395a
feat: android release according to branch
Sigeth Nov 22, 2025
38aae4d
feat: upload ios
Sigeth Nov 22, 2025
5447bb2
fix: give envvar to upload ios
Sigeth Nov 22, 2025
b23def7
fix: give envvar to ios jobs
Sigeth Nov 22, 2025
2d22479
fix: temporarly disable cache
Sigeth Nov 22, 2025
e1cf689
fix: remove alpha layer for ios icon
Sigeth Nov 22, 2025
5faac19
feat: parse screenshot utility
Sigeth Mar 12, 2026
3a88355
fix: indentation
Sigeth Mar 12, 2026
ac28237
feat: take android screenshot
Sigeth Mar 12, 2026
c7e11db
fix: fastfile end
Sigeth Mar 12, 2026
31984d5
fix: use macos for android screenshot?
Sigeth Mar 12, 2026
6b5b494
fix: disable android emulators snapshots
Sigeth Mar 12, 2026
56b957e
fix: enable kvm
Sigeth Mar 12, 2026
349acae
fix: android api level 34
Sigeth Mar 12, 2026
ed3b23a
fix: use x86_64 instead of x86 for android emulator
Sigeth Mar 12, 2026
49f9caf
fix: use MyApp instead of MainHandler for screenshots
Sigeth Mar 12, 2026
5ad2107
fix: setup username for integration tests
Sigeth Mar 12, 2026
5e60f03
feat: screenshot all pages
Sigeth Mar 13, 2026
11dae92
fix: main handler page controller initial page modified
Sigeth Mar 13, 2026
55be082
fix: wait 1 second before taking screenshot
Sigeth Mar 13, 2026
4f1147e
feat: add ios screenshots
Sigeth Mar 13, 2026
b2e61f5
fix: choose available ios models
Sigeth Mar 13, 2026
d7e85c9
refactor: remove phone screenshots
Sigeth Mar 13, 2026
16b79d4
feat: committed screenshots
Sigeth Mar 13, 2026
f697c1f
feat: add upload when taking screenshots
Sigeth Mar 13, 2026
b4fbdd0
fix: remove secret input for commit
Sigeth Mar 13, 2026
2b983bc
refactor: enable debug commands for screenshots commits
Sigeth Mar 13, 2026
7822ecb
refactor: disable ios and android upload
Sigeth Mar 13, 2026
eec6aa8
fix: cp instead of find -exec cp
Sigeth Mar 13, 2026
e527b1a
refactor: ls debugging
Sigeth Mar 13, 2026
62533c2
refactor: git status debugging
Sigeth Mar 13, 2026
534bf19
fix: disable wrong test
Sigeth Mar 13, 2026
eb850d7
fix: use git status instead of git diff
Sigeth Mar 14, 2026
8128402
chore: Update screenshots android
actions-user Mar 14, 2026
6ed4c81
feat: upload android and ios with screenshots
Sigeth Mar 14, 2026
b3c3115
Merge branch 'feat-ci' of github.com:IsenEngineering/flut-ent-isen in…
Sigeth Mar 14, 2026
15c3dea
fix: commit ios screenshots
Sigeth Mar 14, 2026
064ff11
chore: Update screenshots iOS
actions-user Mar 14, 2026
14a0622
chore: remove android screenshots in ios folder
Sigeth Mar 14, 2026
5f9a8e4
fix: copy ios screenshots for ios instead of android
Sigeth Mar 14, 2026
979796f
refactor: only ios pipeline
Sigeth Mar 14, 2026
269bd56
chore: Update screenshots iOS
actions-user Mar 14, 2026
1736d05
chore: update all actions versions
Sigeth Mar 16, 2026
970a26e
feat: add conventional release and pipeline complete
Sigeth Mar 16, 2026
8098fd2
fix: test-analyze to test for conventional release
Sigeth Mar 16, 2026
ea91fe3
refactor: remove test dependency for building
Sigeth Mar 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ Describe how you expected the application to work.

## Actual Behavior
<!--
Describe how the API really works
Describe how the application really works
You can provide a screenshot to help us
BEWARE: HIDE ANY SENSITIVE DATA FROM YOUR SCREENSHOT
THIS APPLICATION CAN SEND SENSITIVE DATA AND THIS ISSUE IS PUBLIC
Expand Down
14 changes: 14 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
version: 2
updates:
- package-ecosystem: "pub"
directory: "/"
schedule:
interval: "weekly"
commit-message:
prefix: "chore(deps)"
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
commit-message:
prefix: "chore(deps)"
124 changes: 124 additions & 0 deletions .github/workflows/00-main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
name: main-workflow
on:
push:
pull_request:
workflow_dispatch:

concurrency:
group: ${{ github.workflow }}

jobs:
test:
uses: ./.github/workflows/01-analyze-test.yml

parse-screenshot:
uses: ./.github/workflows/01-parse-screenshot.yml
with:
# Set to empty string to always take screenshots
screenshot-text: "SCREENSHOT"

conventional-release:
needs:
- test
uses: ./.github/workflows/02-conventional-release.yml
secrets: inherit

build-android:
# set if false to disable android branch of build
if: ${{ needs.conventional-release.outputs.new_release_published == 'true' }}
needs:
- parse-screenshot
- conventional-release
uses: ./.github/workflows/03-build-android.yml
with:
screenshot: ${{ needs.parse-screenshot.outputs.contains_screenshot }}
apk: "true"
secrets: inherit

build-ios:
# set if false to disable iOS branch of build
if: ${{ needs.conventional-release.outputs.new_release_published == 'true' }}
needs:
- parse-screenshot
- conventional-release
uses: ./.github/workflows/03-build-ios.yml
with:
screenshot: ${{ needs.parse-screenshot.outputs.contains_screenshot }}
ipa: "true"
secrets: inherit

integration-screenshot-android:
if: ${{ needs.parse-screenshot.outputs.contains_screenshot == 'true' }}
needs:
- parse-screenshot
- build-android
uses: ./.github/workflows/10-take-screenshot-android.yml
with:
api_level: 34
model: "['pixel_6']"

integration-screenshot-ios:
if: ${{ needs.parse-screenshot.outputs.contains_screenshot == 'true' }}
needs:
- parse-screenshot
- build-ios
uses: ./.github/workflows/10-take-screenshot-ios.yml
with:
model: "['iPhone 16 Pro Max', 'iPad Pro 13-inch (M4)']"

integration-screenshot-commit-android:
needs:
- integration-screenshot-android
uses: ./.github/workflows/11-commit-screenshot-android.yml
with:
locale: "['fr-FR']"
secrets: inherit

integration-screenshot-commit-ios:
needs:
- integration-screenshot-ios
uses: ./.github/workflows/11-commit-screenshot-ios.yml
with:
locale: "['fr-FR']"
secrets: inherit

upload-android:
if: ${{ needs.parse-screenshot.outputs.contains_screenshot == 'false' }}
needs:
- build-android
- conventional-release
uses: ./.github/workflows/04-upload-android.yml
with:
new_release: ${{ needs.conventional-release.outputs.new_release }}
new_release_notes: ${{ needs.conventional-release.outputs.new_release_notes }}
secrets: inherit

upload-ios:
if: ${{ needs.parse-screenshot.outputs.contains_screenshot == 'false' }}
needs:
- parse-screenshot
- build-ios
- conventional-release
uses: ./.github/workflows/04-upload-ios.yml
with:
new_release: ${{ needs.conventional-release.outputs.new_release }}
new_release_notes: ${{ needs.conventional-release.outputs.new_release_notes }}
secrets: inherit

upload-android-with-screenshots:
needs:
- integration-screenshot-commit-android
uses: ./.github/workflows/04-upload-android.yml
with:
new_release: ${{ needs.conventional-release.outputs.new_release }}
new_release_notes: ${{ needs.conventional-release.outputs.new_release_notes }}
secrets: inherit

upload-ios-with-screenshots:
needs:
- integration-screenshot-commit-ios
uses: ./.github/workflows/04-upload-ios.yml
with:
new_release: ${{ needs.conventional-release.outputs.new_release }}
new_release_notes: ${{ needs.conventional-release.outputs.new_release_notes }}
secrets: inherit
21 changes: 21 additions & 0 deletions .github/workflows/01-analyze-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
name: test-analyze
on:
workflow_call:

jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Flutter
uses: subosito/flutter-action@v2
with:
cache: true
cache-key: 'flutter-:os:-:channel:-:version:-:arch:-:hash:'
cache-path: "${{ runner.tool_cache }}/flutter/:channel:-:version:-:arch:"
- run: flutter pub get
- run: flutter analyze --no-pub #--no-fatal-infos
- run: flutter test
39 changes: 39 additions & 0 deletions .github/workflows/01-parse-screenshot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
name: parse-screenshot

on:
workflow_call:
inputs:
screenshot-text:
description: 'Text to search for in commit message'
required: true
type: string
outputs:
contains_screenshot:
description: 'If commit message contains screenshot keyword'
value: ${{ jobs.check_commit_message.outputs.contains_screenshot }}

jobs:
check_commit_message:
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
fetch-depth: 0

- name: Check Commit Message for '${{ inputs.screenshot-text }}'
id: check_commit
run: |
COMMIT_MESSAGE=$(git log --format=%B -n 1 ${{ github.sha }})
if [[ $COMMIT_MESSAGE == *"${{ inputs.screenshot-text }}"* ]]; then
echo "Contains Screenshot: true"
echo "contains_screenshot=true" >> $GITHUB_OUTPUT
else
echo "Contains Screenshot: false"
echo "contains_screenshot=false" >> $GITHUB_OUTPUT
fi
shell: bash

outputs:
contains_screenshot: ${{ steps.check_commit.outputs.contains_screenshot }}
41 changes: 41 additions & 0 deletions .github/workflows/02-conventional-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
name: conventional-release
on:
workflow_call:
secrets:
GH_TOKEN:
required: true

outputs:
new_release_published:
description: 'If a new release was published'
value: ${{ jobs.conventional-release.outputs.new_release_published }}
new_release_version:
description: 'The new release version'
value: ${{ jobs.conventional-release.outputs.new_release_version }}
new_release_notes:
description: 'The release notes for the new release'
value: ${{ jobs.conventional-release.outputs.new_release_notes }}

jobs:
conventional-release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 1
token: ${{ secrets.GH_TOKEN }}
fetch-tags: true

- name: Semantic Release
uses: codfish/semantic-release-action@v5
id: semantic
with:
additional-packages: |
['@semantic-release/changelog', '@semantic-release/exec', '@semantic-release/git']
env:
GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}

outputs:
new_release_published: ${{ steps.semantic.outputs.new_release_published }}
new_release_version: ${{ steps.semantic.outputs.new_release_version }}
new_release_notes: ${{ steps.semantic.outputs.new_release_notes }}
98 changes: 98 additions & 0 deletions .github/workflows/03-build-android.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
name: build-android
on:
workflow_call:
inputs:
screenshot:
type: string
required: true
apk:
description: 'Run APK build'
type: string
required: true
workflow_dispatch:
inputs:
screenshot:
description: 'Run screenshot build'
type: choice
options: ['true', 'false']
required: true
apk:
description: 'Run APK build'
type: choice
options: ['true', 'false']
required: true

jobs:
build-android:
runs-on: ubuntu-latest
timeout-minutes: 20
defaults:
run:
working-directory: android
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0

- name: Configure Keystore
run: |
echo "$PLAY_STORE_UPLOAD_KEY" | base64 --decode > app/upload-keystore.jks
echo "storeFile=upload-keystore.jks" >> key.properties
echo "keyAlias=$KEYSTORE_KEY_ALIAS" >> key.properties
echo "storePassword=$KEYSTORE_STORE_PASSWORD" >> key.properties
echo "keyPassword=$KEYSTORE_KEY_PASSWORD" >> key.properties
env:
PLAY_STORE_UPLOAD_KEY: ${{ secrets.PLAY_STORE_UPLOAD_KEY }}
KEYSTORE_KEY_ALIAS: ${{ secrets.KEYSTORE_KEY_ALIAS }}
KEYSTORE_KEY_PASSWORD: ${{ secrets.KEYSTORE_KEY_PASSWORD }}
KEYSTORE_STORE_PASSWORD: ${{ secrets.KEYSTORE_STORE_PASSWORD }}

- uses: actions/setup-java@v5
with:
distribution: 'zulu'
java-version: '17'

- name: Setup Fastlane
uses: ruby/setup-ruby@v1
with:
ruby-version: "3.2"
bundler-cache: true
working-directory: android

- run: bundle install

- run: bundle exec fastlane versioning
env:
PLAY_STORE_CONFIG_JSON: ${{ secrets.PLAY_STORE_CONFIG_JSON }}

- name: Flutter
uses: subosito/flutter-action@v2
with:
cache: true
cache-key: 'flutter-:os:-:channel:-:version:-:arch:-:hash:'
cache-path: "${{ runner.tool_cache }}/flutter/:channel:-:version:-:arch:"
- run: flutter build apk --debug --target=integration_test/screenshot_test.dart
if: ${{ inputs.screenshot == 'true' }}

- name: Archive integration test apk
if: ${{ inputs.screenshot == 'true' }}
uses: actions/upload-artifact@v7
with:
name: app-debug.apk
path: build/app/outputs/flutter-apk/app-debug.apk
if-no-files-found: error
retention-days: 3

# Build android Release

- run: flutter build appbundle --build-number ${{ env.ANDROID_VERSION_CODE }} --build-name ${{ env.ANDROID_VERSION_NAME }} --target lib/main.dart
if: ${{ inputs.apk == 'true' }}

- name: Archive appbundle
if: ${{ inputs.apk == 'true' }}
uses: actions/upload-artifact@v7
with:
name: app-release.aab
path: build/app/outputs/bundle/release/app-release.aab
if-no-files-found: error
retention-days: 3
Loading
Loading