matrix-dart-sdk/.gitlab-ci.yml

154 lines
4.4 KiB
YAML

stages:
- coverage
- builddocs
- deploy
workflow:
rules:
- if: $CI_MERGE_REQUEST_IID
- if: $CI_COMMIT_TAG
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
coverage:
tags:
- linux
stage: coverage
image: debian:testing
dependencies: []
script:
- apt update
- apt install -y curl gnupg2 git unzip
- git clone https://github.com/flutter/flutter.git -b stable
- export PATH="$PATH:`pwd`/flutter/bin"
- sed -i 's/#\([^ ]\)/\1/g' pubspec.yaml
- flutter doctor
- apt update
- apt install -y lcov libolm3 sqlite3 libsqlite3-dev
- ln -s /usr/lib/dart/bin/pub /usr/bin/
- useradd -m test
- chown -R 'test:' '.'
- chmod +x ./scripts/prepare.sh
- chmod +x ./scripts/test.sh
- rm -r example
- ./scripts/prepare.sh test
- ./scripts/test.sh test
artifacts:
paths:
- coverage/
coverage_without_olm:
tags:
- linux
stage: coverage
image: debian:testing
dependencies: []
script:
- apt update
- apt install -y curl gnupg2 git sqlite3 libsqlite3-dev
- curl https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -
- curl https://storage.googleapis.com/download.dartlang.org/linux/debian/dart_stable.list > /etc/apt/sources.list.d/dart_stable.list
- apt update
- apt install -y dart
- ln -s /usr/lib/dart/bin/pub /usr/bin/
# Need to check if famedlysdk works without OpenSSL.
# Cannot uninstall OpenSSL, because it may be used internally.
# Break famedlysdk's FFI to OpenSSL instead:
- sed -i 's/libcrypto/libnocrypto/g' lib/src/utils/crypto/ffi.dart
- pub get
- pub run test
e2ee_test:
tags:
- linux
stage: coverage
image: debian:testing
dependencies: []
script:
- apt update
- apt install -y curl gnupg2 git
- curl https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -
- curl https://storage.googleapis.com/download.dartlang.org/linux/debian/dart_stable.list > /etc/apt/sources.list.d/dart_stable.list
- apt update
- apt install -y dart lcov libolm3 sqlite3 libsqlite3-dev
- ln -s /usr/lib/dart/bin/pub /usr/bin/
- useradd -m test
- chown -R 'test:' '.'
- chmod +x ./scripts/prepare.sh
- chmod +x ./scripts/test_driver.sh
- printf "abstract class TestUser {\n static const String homeserver = '$TEST_HOMESERVER';\n static const String username = '$TEST_USER1';\n static const String username2 = '$TEST_USER2';\n static const String password = '$TEST_USER_PASSWORD';\n}" > ./test_driver/test_config.dart
- su -c ./scripts/prepare.sh test
- su -c ./scripts/test_driver.sh test
timeout: 16m
resource_group: e2ee_test
code_analyze:
tags:
- docker
stage: coverage
image: cirrusci/flutter
dependencies: []
script:
- flutter format lib/ test/ test_driver/ --set-exit-if-changed
- flutter analyze
build_api_doc:
tags:
- docker
stage: builddocs
image: registry.gitlab.com/famedly/containers/flutter-dockerimages:stable
script:
- flutter pub global activate dartdoc
- export PATH="$PATH":"/opt/flutter/flutter/.pub-cache/bin"
- dartdoc --exclude "dart:async,dart:collection,dart:convert,dart:core,dart:developer,dart:io,dart:isolate,dart:math,dart:typed_data,dart:ui"
artifacts:
paths:
- doc/api/
build_doc:
tags:
- docker
stage: builddocs
image: registry.gitlab.com/larodar/mdbook-dtmo:latest
script:
- cd docs
- mdbook-dtmo build -d public
- mv public ../doc-public
artifacts:
paths:
- doc-public
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
pages:
tags:
- linux
stage: deploy
image: alpine:latest
script:
- mv doc/api/ ./home/api
- mv doc-public ./home/doc
- mv home public
dependencies:
- build_api_doc
- build_doc
artifacts:
paths:
- public
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
# Adds license-scanning job. Because Gitlab does not support pub.dev
# we added https://github.com/oss-review-toolkit/ort
#include:
# - template: Security/License-Scanning.gitlab-ci.yml
#license_scanning:
# stage: coverage
# image:
# name: "registry.gitlab.com/gitlab-org/security-products/analyzers/ort/ort:latest"
# script:
# - /opt/ort/bin/ort analyze -i $CI_PROJECT_DIR -o $CI_PROJECT_DIR/ --allow-dynamic-versions
# - /opt/ort/bin/ort scan -i $CI_PROJECT_DIR/analyzer-result.yml -o $CI_PROJECT_DIR/ || true
# - /opt/ort/bin/ort report -f GitLabLicenseModel -i $CI_PROJECT_DIR/scan-result.yml -o $CI_PROJECT_DIR/