diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 61393c74..2157c2bf 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -14,31 +14,21 @@ stages: - coverage - publish - release +- deploy code_analyze: stage: coverage - dependencies: [] - script: - - flutter format lib/ test/ test_driver/ --set-exit-if-changed - - flutter analyze + script: [./scripts/code_analyze.sh] test: stage: coverage - dependencies: [] - script: - - flutter test + script: [flutter test] build_web: stage: coverage image: registry.gitlab.com/famedly/containers/flutter-dockerimages:beta - script: - - sudo apt update - - sudo apt install curl -y - - ./scripts/prepare-web.sh - - flutter clean - - flutter pub get - - flutter build web --release --verbose - # upload elsewhere, if wanted + before_script: [sudo apt update && sudo apt install curl -y] + script: [./scripts/build-web.sh] artifacts: paths: - build/web/ @@ -66,9 +56,7 @@ build_windows: build_android_debug: stage: coverage - script: - - truncate -s $(head -n -2 android/app/build.gradle | wc -c) android/app/build.gradle - - flutter build apk --debug -v + script: [./scripts/build-android-debug.sh] artifacts: when: on_success paths: @@ -76,20 +64,9 @@ build_android_debug: except: - main - build_android_apk: stage: coverage - script: - - cd android && echo $FDROID_KEY | base64 --decode --ignore-garbage > key.jks && cd .. - - cd android && echo "storePassword=${FDROID_KEY_PASS}" >> key.properties && cd .. - - cd android && echo "keyPassword=${FDROID_KEY_PASS}" >> key.properties && cd .. - - cd android && echo "keyAlias=key" >> key.properties && cd .. - - cd android && echo "storeFile=../key.jks" >> key.properties && cd .. - - cd android/app && echo $GOOGLE_SERVICES >> google-services.json && cd ../.. - - flutter pub get - - flutter build apk --release - - mkdir -p build/android - - cp build/app/outputs/apk/release/app-release.apk build/android/ + script: [./scripts/build-android-apk.sh] artifacts: when: on_success paths: @@ -98,27 +75,16 @@ build_android_apk: - main - tags - build_android_appbundle: stage: coverage - script: - - cd android && echo $FDROID_KEY | base64 --decode --ignore-garbage > key.jks && cd .. - - cd android && echo "storePassword=${FDROID_KEY_PASS}" >> key.properties && cd .. - - cd android && echo "keyPassword=${FDROID_KEY_PASS}" >> key.properties && cd .. - - cd android && echo "keyAlias=key" >> key.properties && cd .. - - cd android && echo "storeFile=../key.jks" >> key.properties && cd .. - - cd android/app && echo $GOOGLE_SERVICES >> google-services.json && cd ../.. - - flutter build appbundle --target-platform android-arm,android-arm64,android-x64 - - mkdir -p build/android - - cp build/app/outputs/bundle/release/app-release.aab build/android/ + script: [./scripts/build-android-appbundle.sh] artifacts: when: on_success paths: - build/android/app-release.aab only: - main - - + upload_to_fdroid_repo: stage: publish before_script: @@ -152,17 +118,9 @@ upload_to_fdroid_repo: - tags pages: - stage: publish - image: ruby:2.3 - script: - - rm assets -r - - cp _config.yml ./build/web/ - - cp Gemfile ./build/web/ - - cp Gemfile.lock ./build/web/ - - cd build/web/ && bundle install && cd ../../ - - cd build/web/ && bundle exec jekyll build -d public && cd ../../ - - mv build/web/public ./ - needs: ["build_web"] + stage: deploy + image: alpine:latest + script: [mv build/web/ public] artifacts: paths: - public @@ -172,13 +130,8 @@ pages: build_linux: stage: coverage image: registry.gitlab.com/famedly/containers/flutter-dockerimages:dev - dependencies: [] - script: - - sudo apt update - - sudo apt install clang cmake ninja-build pkg-config libgtk-3-dev libblkid-dev - - flutter config --enable-linux-desktop - - flutter pub get - - flutter build linux --release -v + before_script: [sudo apt update && sudo apt install clang cmake ninja-build pkg-config libgtk-3-dev libblkid-dev -y] + script: [./scripts/build-linux.sh] artifacts: when: on_success paths: @@ -190,19 +143,7 @@ snap:edge: image: "cibuilds/snapcraft:core18" only: - main - script: - ## Manually install the flutter-dev snap, so we can use the flutter extension - - 'curl -L $(curl -H "X-Ubuntu-Series: 16" "https://api.snapcraft.io/api/v1/snaps/details/flutter?channel=latest/stable" | jq ".download_url" -r) --output flutter.snap' - - sudo mkdir -p /snap/flutter - - sudo unsquashfs -d /snap/flutter/current flutter.snap - - rm -f flutter.snap - - sudo ln -sf /snap/flutter/current/flutter.sh /snap/bin/flutter - - sudo ln -sf /snap/flutter/current/env.sh /snap/bin/env.sh - - snapcraft - - echo $SNAPCRAFT_LOGIN_FILE | base64 --decode --ignore-garbage > snapcraft.login - - snapcraft login --with snapcraft.login - - snapcraft push --release=edge *.snap - - snapcraft logout + script: [./scripts/publish-snap-edge.sh] artifacts: paths: - './*.snap' @@ -214,12 +155,7 @@ snap:publish: image: "cibuilds/snapcraft:core18" only: - tags - script: - - snapcraft - - echo $SNAPCRAFT_LOGIN_FILE | base64 --decode --ignore-garbage > snapcraft.login - - snapcraft login --with snapcraft.login - - snapcraft push --release=stable *.snap - - snapcraft logout + script: [./scripts/publish-snap-stable.sh] artifacts: paths: - './*.snap' @@ -242,20 +178,15 @@ update-dependencies: before_script: - eval $(ssh-agent -s) - echo "$SSH_PRIVATE_BOT_KEY" | tr -d '\r' | ssh-add - > /dev/null - - mkdir -p ~/.ssh - chmod 700 ~/.ssh - - - ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts + - ssh-keyscan -t rsa gitlab.com >> ~/.ssh/known_hosts - chmod 644 ~/.ssh/known_hosts - - git config --global user.email "bot@fluffy.chat" - git config --global user.name "Dependency Update Bot" - sudo apt-get update && sudo apt-get install -y curl script: - - flutter pub get - - flutter pub pub run dapackages:dapackages.dart ./pubspec.yaml - - flutter pub get + - ./scripts/update-dependencies.sh - git remote set-url --push origin git@gitlab.com:$CI_PROJECT_PATH - 'git diff --exit-code || (git checkout -B ${UPDATE_BRANCH} && git add . && git commit -m "chore: Update dependencies" && git push -f origin ${UPDATE_BRANCH} && ./scripts/open-mr.sh)' diff --git a/CHANGELOG.md b/CHANGELOG.md index 47fc3b1b..aedee61e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,22 +4,37 @@ Chat with your friends. ## Unreleased ### Chore +* update flutter_matrix_html [ed27bee] +* update flutter_matrix_html [af36533] +* Update dependencies [57256fb] +* Update dependencies [40825e1] * Switch to adaptive dialogs [9ea7afc] * Switch from bottoast to flushbar [e219593] * Clean up CI [7e84675] * Remove unused dependency [d12de2d] ### Feature +* Add svg support and better image handling [f70bbc3] +* add config.json [4b7fb6b] * persistent upload of release artifacts [1b2481b] * Option to hide redacted and unknown events [36315a4] * Better encryption / verification [1ff986e] ### Fixes +* iOS [26731ab] +* resolve some sentry issues [61f35e8] +* resolve some sentry issues [2c3693e] +* iOS build [9fee409] +* Automatic update deps job [255c05d] * Don't re-render message widgets on insertion of new messages, making e.g. audio playing not stop [25b2997] * Add missing safearea [caab868] * no pushers enpdoint [b3942ad] * Sentry and small null fix [5dc22be] +### Refactor +* CI [5ac773e] +* SDK update [7e23280] + ## v0.21.1 - 2020-10-28 ### Chore diff --git a/scripts/build-android-apk.sh b/scripts/build-android-apk.sh new file mode 100755 index 00000000..4d709aa9 --- /dev/null +++ b/scripts/build-android-apk.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +flutter channel stable +flutter upgrade +flutter pub get +flutter build apk --release +mkdir -p build/android +cp build/app/outputs/apk/release/app-release.apk build/android/ \ No newline at end of file diff --git a/scripts/build-android-appbundle.sh b/scripts/build-android-appbundle.sh new file mode 100755 index 00000000..10321cad --- /dev/null +++ b/scripts/build-android-appbundle.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +flutter channel stable +flutter upgrade +flutter pub get +flutter build appbundle --target-platform android-arm,android-arm64,android-x64 +mkdir -p build/android +cp build/app/outputs/bundle/release/app-release.aab build/android/ \ No newline at end of file diff --git a/scripts/build-android-debug.sh b/scripts/build-android-debug.sh new file mode 100755 index 00000000..fc837b1b --- /dev/null +++ b/scripts/build-android-debug.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash +flutter channel stable +flutter upgrade +truncate -s $(head -n -2 android/app/build.gradle | wc -c) android/app/build.gradle +flutter build apk --debug -v \ No newline at end of file diff --git a/scripts/build-ios.sh b/scripts/build-ios.sh new file mode 100755 index 00000000..9bb4f362 --- /dev/null +++ b/scripts/build-ios.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash +flutter channel stable +flutter upgrade +flutter clean +flutter pub get +cd ios +pod install +pod update +cd .. +flutter build ios --release \ No newline at end of file diff --git a/scripts/build-linux.sh b/scripts/build-linux.sh new file mode 100755 index 00000000..b4aaa8cb --- /dev/null +++ b/scripts/build-linux.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +flutter channel dev +flutter upgrade +flutter config --enable-linux-desktop +flutter clean +flutter pub get +flutter build linux --release -v \ No newline at end of file diff --git a/scripts/build-macos.sh b/scripts/build-macos.sh new file mode 100755 index 00000000..f110fa52 --- /dev/null +++ b/scripts/build-macos.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash +flutter channel dev +flutter upgrade +flutter config --enable-macos-desktop +flutter clean +flutter pub get +cd macos +pod install +pod update +cd .. +flutter build macos --release \ No newline at end of file diff --git a/scripts/build-snap.sh b/scripts/build-snap.sh new file mode 100755 index 00000000..9d6e4488 --- /dev/null +++ b/scripts/build-snap.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +'curl -L $(curl -H "X-Ubuntu-Series: 16" "https://api.snapcraft.io/api/v1/snaps/details/flutter?channel=latest/stable" | jq ".download_url" -r) --output flutter.snap' +sudo mkdir -p /snap/flutter +sudo unsquashfs -d /snap/flutter/current flutter.snap +rm -f flutter.snap +sudo ln -sf /snap/flutter/current/flutter.sh /snap/bin/flutter +sudo ln -sf /snap/flutter/current/env.sh /snap/bin/env.sh +snapcraft \ No newline at end of file diff --git a/scripts/build-web.sh b/scripts/build-web.sh new file mode 100755 index 00000000..2b8fc7c8 --- /dev/null +++ b/scripts/build-web.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +flutter channel beta +flutter upgrade +flutter config --enable-web +/bin/bash ./scripts/prepare-web.sh +flutter clean +flutter pub get +flutter build web --release --verbose \ No newline at end of file diff --git a/scripts/code_analyze.sh b/scripts/code_analyze.sh new file mode 100755 index 00000000..d3ba7b60 --- /dev/null +++ b/scripts/code_analyze.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash +flutter format lib/ test/ test_driver/ --set-exit-if-changed +flutter analyze \ No newline at end of file diff --git a/scripts/prepare-android-release.sh b/scripts/prepare-android-release.sh new file mode 100755 index 00000000..bc2e964e --- /dev/null +++ b/scripts/prepare-android-release.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +/bin/bash ./scripts/prepare-android-release.sh +cd android && echo $FDROID_KEY | base64 --decode --ignore-garbage > key.jks && cd .. +cd android && echo "storePassword=${FDROID_KEY_PASS}" >> key.properties && cd .. +cd android && echo "keyPassword=${FDROID_KEY_PASS}" >> key.properties && cd .. +cd android && echo "keyAlias=key" >> key.properties && cd .. +cd android && echo "storeFile=../key.jks" >> key.properties && cd .. +cd android/app && echo $GOOGLE_SERVICES >> google-services.json && cd ../.. \ No newline at end of file diff --git a/scripts/publish-snap-edge.sh b/scripts/publish-snap-edge.sh new file mode 100755 index 00000000..3b5779d4 --- /dev/null +++ b/scripts/publish-snap-edge.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +/bin/bash ./scripts/build-snap.sh +echo $SNAPCRAFT_LOGIN_FILE | base64 --decode --ignore-garbage > snapcraft.login +snapcraft login --with snapcraft.login +snapcraft push --release=edge *.snap +snapcraft logout \ No newline at end of file diff --git a/scripts/publish-snap-stable.sh b/scripts/publish-snap-stable.sh new file mode 100755 index 00000000..fb58971f --- /dev/null +++ b/scripts/publish-snap-stable.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +/bin/bash ./scripts/build-snap.sh +echo $SNAPCRAFT_LOGIN_FILE | base64 --decode --ignore-garbage > snapcraft.login +snapcraft login --with snapcraft.login +snapcraft push --release=stable *.snap +snapcraft logout \ No newline at end of file diff --git a/scripts/update-changelog.sh b/scripts/update-changelog.sh new file mode 100755 index 00000000..f513e45e --- /dev/null +++ b/scripts/update-changelog.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +flutter pub global activate changelog +export PATH="$PATH":"$HOME/development/flutter/.pub-cache/bin" +changelog -c \ No newline at end of file diff --git a/scripts/update-dependencies.sh b/scripts/update-dependencies.sh new file mode 100755 index 00000000..7fd1f649 --- /dev/null +++ b/scripts/update-dependencies.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +flutter pub get +flutter pub pub run dapackages:dapackages.dart ./pubspec.yaml +flutter pub get \ No newline at end of file