# You can copy and paste this template into a new `.gitlab-ci.yml` file. # You should not add this template to an existing `.gitlab-ci.yml` file by using the `include:` keyword. # # To contribute improvements to CI/CD templates, please follow the Development guide at: # https://docs.gitlab.com/ee/development/cicd/templates.html # This specific template is located at: # https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Dart.gitlab-ci.yml # https://hub.docker.com/_/dart image: dart:2.17 variables: # To learn more go to https://dart.dev/tools/dart-test # Or run `dart test --help` PUB_VARS: "--platform vm --timeout 30s --concurrency=6 --test-randomize-ordering-seed=random --reporter=expanded" .use-pub-cache-bin: # Define commands that need to be executed before each job. before_script: # Set PUB_CACHE either here or in the CI/CD Settings if you have multiple jobs that use dart commands. # PUB_CACHE is used by the `dart pub` command, it needs to be set so package dependencies are stored at the project-level for CI/CD operations. - export PUB_CACHE=".pub-cache" - export PATH="$PATH:$HOME/$PUB_CACHE/bin" # Cache generated files and plugins between builds. .upload-cache: cache: when: 'on_success' paths: - .pub-cache/bin/ - .pub-cache/global_packages/ - .pub-cache/hosted/ - .dart_tool/ - .packages # Cache downloaded dependencies and plugins between builds. # To keep cache across branches add 'key: "$CI_JOB_NAME"' .download-cache: cache: paths: - .dart_tool/ - .packages policy: pull install-dependencies: stage: .pre extends: - .use-pub-cache-bin - .upload-cache script: - dart pub get --no-precompile build: stage: build needs: - install-dependencies extends: - .use-pub-cache-bin - .upload-cache script: - dart pub get --offline --precompile unit-test: stage: test needs: - build extends: - .use-pub-cache-bin - .download-cache script: - dart test $PUB_VARS lint-test: stage: test needs: - install-dependencies extends: - .use-pub-cache-bin - .download-cache script: - dart analyze . format-test: stage: test needs: - install-dependencies extends: - .use-pub-cache-bin - .download-cache script: - dart format --set-exit-if-changed bin/ lib/ test/