From 40ec7a0d38201384fbcde94c9f004762084b34e5 Mon Sep 17 00:00:00 2001 From: Thatsaphorn Atchariyaphap Date: Sun, 21 Sep 2025 00:40:13 +0200 Subject: [PATCH] Add CI/CD pipelines for Flutter and backend projects --- .gitlab-ci.yml | 14 ++ backend/.gitlab-ci.yml | 11 ++ finlog_app/.gitlab-ci.yml | 39 ++++++ finlog_app/app/pubspec.lock | 213 ------------------------------- finlog_app/app/pubspec.yaml | 1 + finlog_app/fluttery/pubspec.yaml | 1 + finlog_app/pubspec.yaml | 9 ++ 7 files changed, 75 insertions(+), 213 deletions(-) create mode 100644 .gitlab-ci.yml create mode 100644 backend/.gitlab-ci.yml create mode 100644 finlog_app/.gitlab-ci.yml delete mode 100644 finlog_app/app/pubspec.lock create mode 100644 finlog_app/pubspec.yaml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..2585751 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,14 @@ +image: alpine:3.20@sha256:4bcff63911fcb4448bd4fdacec207030997caf25e9bea4045fa6c8c44de311d1 + +stages: + - prepare + - test + - build + +variables: + CI_REGISTRY_IMAGE: $CI_REGISTRY/$CI_PROJECT_PATH + PROJECT_NAME: $CI_PROJECT_NAME + +include: + - local: 'backend/.gitlab-ci.yml' + - local: 'finlog_app/.gitlab-ci.yml' \ No newline at end of file diff --git a/backend/.gitlab-ci.yml b/backend/.gitlab-ci.yml new file mode 100644 index 0000000..a126f41 --- /dev/null +++ b/backend/.gitlab-ci.yml @@ -0,0 +1,11 @@ +build_backend: + stage: build + image: maven:3.9.11-eclipse-temurin-21@sha256:674ec814977fd05dc5cd3627802efb756351f27d4f029bc47b8a7b5156bb9231 + script: + - cd backend + - mvn package + artifacts: + paths: + - backend/common/target/ + - backend/server/target + expire_in: 1 hour diff --git a/finlog_app/.gitlab-ci.yml b/finlog_app/.gitlab-ci.yml new file mode 100644 index 0000000..2cdbc5a --- /dev/null +++ b/finlog_app/.gitlab-ci.yml @@ -0,0 +1,39 @@ +default: + image: ghcr.io/cirruslabs/flutter:3.35.4 + variables: + PUB_CACHE: "$CI_PROJECT_DIR/.pub-cache" + cache: + key: "flutter-${CI_COMMIT_REF_SLUG}" + policy: pull-push + paths: + - .pub-cache/ + - finlog_app/.dart_tool/ + - finlog_app/app/.dart_tool/ + - finlog_app/fluttery/.dart_tool/ + +stages: + - prepare + - test + +# 1) Einmal pub get im Workspace-Root +prepare_flutter_workspace: + stage: prepare + script: + - cd finlog_app + - flutter --version + - flutter pub get + +# 2) Tests PARALLEL (beide hängen nur von prepare ab) +fluttery_test: + stage: test + needs: ["prepare_flutter_workspace"] + script: + - cd finlog_app/fluttery + - flutter test + +app_test: + stage: test + needs: ["prepare_flutter_workspace"] + script: + - cd finlog_app/app + - flutter test diff --git a/finlog_app/app/pubspec.lock b/finlog_app/app/pubspec.lock deleted file mode 100644 index c1b51d3..0000000 --- a/finlog_app/app/pubspec.lock +++ /dev/null @@ -1,213 +0,0 @@ -# Generated by pub -# See https://dart.dev/tools/pub/glossary#lockfile -packages: - async: - dependency: transitive - description: - name: async - sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb" - url: "https://pub.dev" - source: hosted - version: "2.13.0" - boolean_selector: - dependency: transitive - description: - name: boolean_selector - sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea" - url: "https://pub.dev" - source: hosted - version: "2.1.2" - characters: - dependency: transitive - description: - name: characters - sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 - url: "https://pub.dev" - source: hosted - version: "1.4.0" - clock: - dependency: transitive - description: - name: clock - sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b - url: "https://pub.dev" - source: hosted - version: "1.1.2" - collection: - dependency: transitive - description: - name: collection - sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" - url: "https://pub.dev" - source: hosted - version: "1.19.1" - cupertino_icons: - dependency: "direct main" - description: - name: cupertino_icons - sha256: ba631d1c7f7bef6b729a622b7b752645a2d076dba9976925b8f25725a30e1ee6 - url: "https://pub.dev" - source: hosted - version: "1.0.8" - fake_async: - dependency: transitive - description: - name: fake_async - sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44" - url: "https://pub.dev" - source: hosted - version: "1.3.3" - flutter: - dependency: "direct main" - description: flutter - source: sdk - version: "0.0.0" - flutter_lints: - dependency: "direct dev" - description: - name: flutter_lints - sha256: "5398f14efa795ffb7a33e9b6a08798b26a180edac4ad7db3f231e40f82ce11e1" - url: "https://pub.dev" - source: hosted - version: "5.0.0" - flutter_test: - dependency: "direct dev" - description: flutter - source: sdk - version: "0.0.0" - leak_tracker: - dependency: transitive - description: - name: leak_tracker - sha256: "33e2e26bdd85a0112ec15400c8cbffea70d0f9c3407491f672a2fad47915e2de" - url: "https://pub.dev" - source: hosted - version: "11.0.2" - leak_tracker_flutter_testing: - dependency: transitive - description: - name: leak_tracker_flutter_testing - sha256: "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1" - url: "https://pub.dev" - source: hosted - version: "3.0.10" - leak_tracker_testing: - dependency: transitive - description: - name: leak_tracker_testing - sha256: "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1" - url: "https://pub.dev" - source: hosted - version: "3.0.2" - lints: - dependency: transitive - description: - name: lints - sha256: c35bb79562d980e9a453fc715854e1ed39e24e7d0297a880ef54e17f9874a9d7 - url: "https://pub.dev" - source: hosted - version: "5.1.1" - matcher: - dependency: transitive - description: - name: matcher - sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 - url: "https://pub.dev" - source: hosted - version: "0.12.17" - material_color_utilities: - dependency: transitive - description: - name: material_color_utilities - sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec - url: "https://pub.dev" - source: hosted - version: "0.11.1" - meta: - dependency: transitive - description: - name: meta - sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c - url: "https://pub.dev" - source: hosted - version: "1.16.0" - path: - dependency: transitive - description: - name: path - sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" - url: "https://pub.dev" - source: hosted - version: "1.9.1" - sky_engine: - dependency: transitive - description: flutter - source: sdk - version: "0.0.0" - source_span: - dependency: transitive - description: - name: source_span - sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c" - url: "https://pub.dev" - source: hosted - version: "1.10.1" - stack_trace: - dependency: transitive - description: - name: stack_trace - sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1" - url: "https://pub.dev" - source: hosted - version: "1.12.1" - stream_channel: - dependency: transitive - description: - name: stream_channel - sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d" - url: "https://pub.dev" - source: hosted - version: "2.1.4" - string_scanner: - dependency: transitive - description: - name: string_scanner - sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43" - url: "https://pub.dev" - source: hosted - version: "1.4.1" - term_glyph: - dependency: transitive - description: - name: term_glyph - sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e" - url: "https://pub.dev" - source: hosted - version: "1.2.2" - test_api: - dependency: transitive - description: - name: test_api - sha256: "522f00f556e73044315fa4585ec3270f1808a4b186c936e612cab0b565ff1e00" - url: "https://pub.dev" - source: hosted - version: "0.7.6" - vector_math: - dependency: transitive - description: - name: vector_math - sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b - url: "https://pub.dev" - source: hosted - version: "2.2.0" - vm_service: - dependency: transitive - description: - name: vm_service - sha256: "45caa6c5917fa127b5dbcfbd1fa60b14e583afdc08bfc96dda38886ca252eb60" - url: "https://pub.dev" - source: hosted - version: "15.0.2" -sdks: - dart: ">=3.9.2 <4.0.0" - flutter: ">=3.18.0-18.0.pre.54" diff --git a/finlog_app/app/pubspec.yaml b/finlog_app/app/pubspec.yaml index 15107e4..09d2538 100644 --- a/finlog_app/app/pubspec.yaml +++ b/finlog_app/app/pubspec.yaml @@ -3,6 +3,7 @@ description: "A new Flutter project." # The following line prevents the package from being accidentally published to # pub.dev using `flutter pub publish`. This is preferred for private packages. publish_to: 'none' # Remove this line if you wish to publish to pub.dev +resolution: workspace # The following defines the version and build number for your application. # A version number is three numbers separated by dots, like 1.2.43 diff --git a/finlog_app/fluttery/pubspec.yaml b/finlog_app/fluttery/pubspec.yaml index ab82806..6c6bdb1 100644 --- a/finlog_app/fluttery/pubspec.yaml +++ b/finlog_app/fluttery/pubspec.yaml @@ -2,6 +2,7 @@ name: fluttery description: "A new Flutter project." version: 0.0.1 homepage: +resolution: workspace environment: sdk: ^3.9.2 diff --git a/finlog_app/pubspec.yaml b/finlog_app/pubspec.yaml new file mode 100644 index 0000000..769aae4 --- /dev/null +++ b/finlog_app/pubspec.yaml @@ -0,0 +1,9 @@ +name: finlog_app +publish_to: none + +environment: + sdk: ^3.9.2 + +workspace: + - app + - fluttery