chore: Implement playstore CD

onboarding
Christian Pauly 4 years ago
parent edfbb16044
commit a5c7e4baaf

2
.gitignore vendored

@ -48,4 +48,6 @@ lib/generated_plugin_registrant.dart
/android/key.properties
**/android/app/.cxx
android/key.jks
android/keys.json
android/Gemfile.lock
lib/l10n_old

@ -62,15 +62,12 @@ build_android_debug:
- build/app/outputs/apk/debug/app-debug.apk
except:
- main
- tags
build_android_apk:
stage: coverage
before_script: [./scripts/prepare-android-release.sh]
script: [./scripts/build-android-apk.sh]
variables:
FDROID_KEY: ${FDROID_KEY}
FDROID_KEY_PASS: ${FDROID_KEY_PASS}
GOOGLE_SERVICES: ${GOOGLE_SERVICES}
artifacts:
when: on_success
paths:
@ -82,36 +79,21 @@ build_android_apk:
build_android_appbundle:
stage: coverage
before_script: [./scripts/prepare-android-release.sh]
script: [./scripts/build-android-appbundle.sh]
variables:
FDROID_KEY: ${FDROID_KEY}
FDROID_KEY_PASS: ${FDROID_KEY_PASS}
GOOGLE_SERVICES: ${GOOGLE_SERVICES}
script: [./scripts/release-playstore-beta.sh]
artifacts:
when: on_success
paths:
- build/android/app-release.aab
resource_group: playstore_release
only:
- main
upload_to_fdroid_repo:
stage: release
before_script:
##
## Install ssh-agent if not already installed.
##
- 'which ssh-agent || (sudo apt-get update -y && sudo apt-get install openssh-client -y )'
##
## Install rsync if not already installed.
##
- 'which rsync || (sudo apt-get update -y && sudo apt-get install rsync -y )'
##
## Install pcregrep if not already installed.
##
- 'which pcregrep || (sudo apt-get update -y && sudo apt-get install pcregrep -y )'
##
## Run ssh-agent (inside the build environment)
##
- eval $(ssh-agent -s)
- echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add -
- mkdir -p ~/.ssh
@ -123,8 +105,10 @@ upload_to_fdroid_repo:
- rsync -rav -e ssh ./ fluffy@fdroid.nordgedanken.dev:/fdroid/repo
- ssh fluffy@fdroid.nordgedanken.dev "cd fdroid && fdroid update"
needs: ["build_android_apk"]
resource_group: playstore_release
allow_failure: true
only:
- tags
- main
pages:
stage: deploy
@ -239,6 +223,12 @@ upload-windows:
- |
curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file package.tar.gz ${PACKAGE_REGISTRY_URL}/fluffychat-windows.tar.gz
upload-playstore:
extends: .release
stage: deploy
script: [./scripts/release-playstore.sh]
resource_group: playstore_release
release:
extends: .release
image: registry.gitlab.com/gitlab-org/release-cli:latest

@ -0,0 +1,3 @@
source "https://rubygems.org"
gem "fastlane"

@ -0,0 +1,2 @@
json_key_file("keys.json") # Path to the json secret file - Follow https://docs.fastlane.tools/actions/supply/#setup to get one
package_name("chat.fluffy.fluffychat") # e.g. com.krausefx.app

@ -0,0 +1,50 @@
# This file contains the fastlane.tools configuration
# You can find the documentation at https://docs.fastlane.tools
#
# For a list of all available actions, check out
#
# https://docs.fastlane.tools/actions
#
# For a list of all available plugins, check out
#
# https://docs.fastlane.tools/plugins/available-plugins
#
# Uncomment the line if you want fastlane to automatically update itself
update_fastlane
default_platform(:android)
platform :android do
lane :set_build_code_internal do
versions = google_play_track_version_codes(
track: "internal",
json_key: "./keys.json"
)
last_version = versions[0].to_i
Dir.chdir("../..") do
re = /version:\s([0-9]*\.[0-9]*\.[0-9]*)\+[0-9]/i
config = File.read("./pubspec.yaml")
version_name = config.match(re).captures
subst = "version: #{version_name[0]}+#{last_version+1}"
result = config.gsub(re, subst)
File.open("./pubspec.yaml", 'w') { |file| file.write(result) }
end
end
lane :deploy_internal_test do
versions = google_play_track_version_codes(
track: "internal",
json_key: "./keys.json"
)
last_version = versions[0].to_i
upload_to_play_store(track: 'internal', aab: '../build/app/outputs/bundle/release/app-release.aab', version_code: "#{last_version+1}")
end
lane :deploy_release do
upload_to_play_store(track: 'internal', track_promote_to: "production", deactivate_on_promote: false, skip_upload_changelogs: true)
end
end

@ -0,0 +1,39 @@
fastlane documentation
================
# Installation
Make sure you have the latest version of the Xcode command line tools installed:
```
xcode-select --install
```
Install _fastlane_ using
```
[sudo] gem install fastlane -NV
```
or alternatively using `brew install fastlane`
# Available Actions
## Android
### android set_build_code_beta
```
fastlane android set_build_code_beta
```
### android deploy_beta_test
```
fastlane android deploy_beta_test
```
### android deploy_release
```
fastlane android deploy_release
```
----
This README.md is auto-generated and will be re-generated every time [fastlane](https://fastlane.tools) is run.
More information about fastlane can be found on [fastlane.tools](https://fastlane.tools).
The documentation of fastlane can be found on [docs.fastlane.tools](https://docs.fastlane.tools).

@ -0,0 +1 @@
Check out https://gitlab.com/ChristianPauly/fluffychat-flutter/-/blob/main/CHANGELOG.md for the changelog.

@ -0,0 +1,32 @@
FluffyChat is an open, nonprofit and cute matrix messenger app for Ubuntu Touch, Android and iOS.
Open
Opensource and open development where everyone can join.
Nonprofit
FluffyChat is donation funded.
Cute ♥
Cute design and many theme settings including a dark mode.
One-to-one and groupchats
Unlimited groups and direct chats.
Easy
FluffyChat is made as simple to use as possible.
Free
Free to use for everyone without ads.
Decentralized
There is no "FluffyChat server" you are forced to use. Use the server you find trustworthy or host your own.
Compatible
Compatible with Riot, Fractal, Nekho and all matrix messengers.
FluffyChat comes with a dream
Imagine a world where everyone can choose the messenger they like and is still able to chat with all of their friends.
A world where there are no companies spying on you when you send selfies to friends and lovers.
And a world where apps are made for fluffyness and not for profit. ♥

Binary file not shown.

After

Width:  |  Height:  |  Size: 233 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 196 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 721 KiB

@ -0,0 +1 @@
Chat with your friends with FluffyChat.

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<testsuites>
<testsuite name="fastlane.lanes">
<testcase classname="fastlane.lanes" name="0: update_fastlane" time="0.094148">
</testcase>
<testcase classname="fastlane.lanes" name="1: default_platform" time="0.000809">
</testcase>
<testcase classname="fastlane.lanes" name="2: google_play_track_version_codes" time="1.408525">
</testcase>
</testsuite>
</testsuites>

@ -1,7 +1,7 @@
name: fluffychat
description: Chat with your friends.
publish_to: none
version: 0.22.1+50
version: 0.22.1+0
environment:
sdk: ">=2.6.0 <3.0.0"

@ -1,7 +1,14 @@
#!/usr/bin/env bash
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 ../..
cd android
echo $FDROID_KEY | base64 --decode --ignore-garbage > key.jks
echo "storePassword=${FDROID_KEY_PASS}" >> key.properties
echo "keyPassword=${FDROID_KEY_PASS}" >> key.properties
echo "keyAlias=key" >> key.properties
echo "storeFile=../key.jks" >> key.properties
echo $PLAYSTORE_DEPLOY_KEY >> keys.json
bundle install
bundle update fastlane
bundle exec fastlane set_build_code_internal
cd app
echo $GOOGLE_SERVICES >> google-services.json/..
cd ../..

@ -5,3 +5,6 @@ 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/
cd android
bundle exec fastlane deploy_internal_test
cd ..

@ -0,0 +1,7 @@
#!/usr/bin/env bash
cd android
bundle install
bundle update fastlane
echo $PLAYSTORE_DEPLOY_KEY >> keys.json
bundle exec fastlane deploy_release
cd ..
Loading…
Cancel
Save