Commit e81b90e3 authored by Jason Lenny's avatar Jason Lenny Committed by Eric Eastwood
Browse files

WIP: Add FastLane CI app publishing

parent 876bb6c4
......@@ -9,8 +9,10 @@ variables:
ANDROID_SDK_TOOLS: "24.4.1"
before_script:
# install OS packages
- apt-get --quiet update --yes
- apt-get --quiet install --yes wget tar unzip lib32stdc++6 lib32z1
- apt-get --quiet install --yes wget tar unzip lib32stdc++6 lib32z1 build-essential ruby ruby-dev
# install Android SDK
- wget --quiet --output-document=android-sdk.tgz https://dl.google.com/android/android-sdk_r${ANDROID_SDK_TOOLS}-linux.tgz
- tar --extract --gzip --file=android-sdk.tgz
- echo y | android-sdk-linux/tools/android --silent update sdk --no-ui --all --filter android-${ANDROID_COMPILE_SDK}
......@@ -22,23 +24,66 @@ before_script:
- export ANDROID_HOME=$PWD/android-sdk-linux
- export PATH=$PATH:$PWD/android-sdk-linux/platform-tools/
- chmod +x ./gradlew
# install FastLane
- gem install bundle
- bundle install
# fetch latest assets from https://gitlab.com/gitlab-org/gitter/webapp to be used in debug or release builds
- wget --output-document=artifacts.zip --quiet "https://gitlab.com/gitlab-org/gitter/webapp/-/jobs/artifacts/master/download?job=mobile-asset-build"
- unzip artifacts.zip
- mkdir -p app/src/main/assets/www
- mv output/android/www/* app/src/main/assets/www/
# save key/keystore files
- echo $GOOGLE_PLAY_SERVICE_ACCOUNT_API_KEY_JSON > gitter_key.json
- echo "$SIGNING_JKS_FILE" > my-release-key.jks
after_script:
- rm gitter_key.json
- rm my-release-key.jks
stages:
- build
- test
- build_test
- deploy
build_test:
stage: build_test
script:
# build binaries
- bundle exec fastlane buildDebug
- bundle exec fastlane test
artifacts:
paths:
- app/build/outputs/
publishAlpha:
stage: deploy
when: manual
script:
# publish to alpha
- bundle exec fastlane alpha
artifacts:
paths:
- app/build/outputs/
build:
stage: build
publishBeta:
stage: deploy
when: manual
script:
- ./gradlew assembleDebug
# publish to beta
- bundle exec fastlane beta
artifacts:
paths:
- app/build/outputs/
unitTests:
stage: test
publishStore:
stage: deploy
when: manual
script:
- ./gradlew test
# publish to store
- bundle exec fastlane deploy
- rm ~/gitter_key.json
artifacts:
paths:
- app/build/outputs/
# This can't be enabled because `ERROR: x86 emulation currently requires hardware acceleration!`, https://gitlab.com/gitlab-org/gitlab-runner/issues/2242
#
......
GEM
remote: https://rubygems.org/
specs:
CFPropertyList (3.0.0)
addressable (2.5.2)
public_suffix (>= 2.0.2, < 4.0)
atomos (0.1.3)
babosa (1.0.2)
claide (1.0.2)
colored (1.2)
colored2 (3.1.2)
commander-fastlane (4.4.6)
highline (~> 1.7.2)
declarative (0.0.10)
declarative-option (0.1.0)
domain_name (0.5.20180417)
unf (>= 0.0.5, < 1.0.0)
dotenv (2.5.0)
emoji_regex (0.1.1)
excon (0.62.0)
faraday (0.15.3)
multipart-post (>= 1.2, < 3)
faraday-cookie_jar (0.0.6)
faraday (>= 0.7.4)
http-cookie (~> 1.0.0)
faraday_middleware (0.12.2)
faraday (>= 0.7.4, < 1.0)
fastimage (2.1.4)
fastlane (2.108.0)
CFPropertyList (>= 2.3, < 4.0.0)
addressable (>= 2.3, < 3.0.0)
babosa (>= 1.0.2, < 2.0.0)
bundler (>= 1.12.0, < 2.0.0)
colored
commander-fastlane (>= 4.4.6, < 5.0.0)
dotenv (>= 2.1.1, < 3.0.0)
emoji_regex (~> 0.1)
excon (>= 0.45.0, < 1.0.0)
faraday (~> 0.9)
faraday-cookie_jar (~> 0.0.6)
faraday_middleware (~> 0.9)
fastimage (>= 2.1.0, < 3.0.0)
gh_inspector (>= 1.1.2, < 2.0.0)
google-api-client (>= 0.21.2, < 0.24.0)
highline (>= 1.7.2, < 2.0.0)
json (< 3.0.0)
mini_magick (~> 4.5.1)
multi_json
multi_xml (~> 0.5)
multipart-post (~> 2.0.0)
plist (>= 3.1.0, < 4.0.0)
public_suffix (~> 2.0.0)
rubyzip (>= 1.2.2, < 2.0.0)
security (= 0.1.3)
simctl (~> 1.6.3)
slack-notifier (>= 2.0.0, < 3.0.0)
terminal-notifier (>= 1.6.2, < 2.0.0)
terminal-table (>= 1.4.5, < 2.0.0)
tty-screen (>= 0.6.3, < 1.0.0)
tty-spinner (>= 0.8.0, < 1.0.0)
word_wrap (~> 1.0.0)
xcodeproj (>= 1.6.0, < 2.0.0)
xcpretty (~> 0.3.0)
xcpretty-travis-formatter (>= 0.0.3)
gh_inspector (1.1.3)
google-api-client (0.23.9)
addressable (~> 2.5, >= 2.5.1)
googleauth (>= 0.5, < 0.7.0)
httpclient (>= 2.8.1, < 3.0)
mime-types (~> 3.0)
representable (~> 3.0)
retriable (>= 2.0, < 4.0)
signet (~> 0.9)
googleauth (0.6.7)
faraday (~> 0.12)
jwt (>= 1.4, < 3.0)
memoist (~> 0.16)
multi_json (~> 1.11)
os (>= 0.9, < 2.0)
signet (~> 0.7)
highline (1.7.10)
http-cookie (1.0.3)
domain_name (~> 0.5)
httpclient (2.8.3)
json (2.1.0)
jwt (2.1.0)
memoist (0.16.0)
mime-types (3.2.2)
mime-types-data (~> 3.2015)
mime-types-data (3.2018.0812)
mini_magick (4.5.1)
multi_json (1.13.1)
multi_xml (0.6.0)
multipart-post (2.0.0)
nanaimo (0.2.6)
naturally (2.2.0)
os (1.0.0)
plist (3.4.0)
public_suffix (2.0.5)
representable (3.0.4)
declarative (< 0.1.0)
declarative-option (< 0.2.0)
uber (< 0.2.0)
retriable (3.1.2)
rouge (2.0.7)
rubyzip (1.2.2)
security (0.1.3)
signet (0.11.0)
addressable (~> 2.3)
faraday (~> 0.9)
jwt (>= 1.5, < 3.0)
multi_json (~> 1.10)
simctl (1.6.5)
CFPropertyList
naturally
slack-notifier (2.3.2)
terminal-notifier (1.8.0)
terminal-table (1.8.0)
unicode-display_width (~> 1.1, >= 1.1.1)
tty-cursor (0.6.0)
tty-screen (0.6.5)
tty-spinner (0.8.0)
tty-cursor (>= 0.5.0)
uber (0.1.0)
unf (0.1.4)
unf_ext
unf_ext (0.0.7.5)
unicode-display_width (1.4.0)
word_wrap (1.0.0)
xcodeproj (1.7.0)
CFPropertyList (>= 2.3.3, < 4.0)
atomos (~> 0.1.3)
claide (>= 1.0.2, < 2.0)
colored2 (~> 3.1)
nanaimo (~> 0.2.6)
xcpretty (0.3.0)
rouge (~> 2.0.7)
xcpretty-travis-formatter (1.0.0)
xcpretty (~> 0.2, >= 0.0.7)
PLATFORMS
ruby
DEPENDENCIES
fastlane
BUNDLED WITH
1.16.3
......@@ -12,6 +12,9 @@ else {
secretProperties.setProperty("oauth_client_secret", "\"${System.getenv('oauth_client_secret')}\"")
secretProperties.setProperty("oauth_redirect_uri", "\"${System.getenv('oauth_redirect_uri')}\"")
secretProperties.setProperty("google_project_id", "\"${System.getenv('google_project_id') ?: "null"}\"")
secretProperties.setProperty("signing_keystore_password", "${System.getenv('SIGNING_KEYSTORE_PASSWORD')}")
secretProperties.setProperty("signing_key_password", "${System.getenv('SIGNING_KEY_PASSWORD')}")
secretProperties.setProperty("signing_key_alias", "${System.getenv('SIGNING_KEY_ALIAS')}")
}
android {
......@@ -30,10 +33,21 @@ android {
buildConfigField("String", "oauth_redirect_uri", "${secretProperties['oauth_redirect_uri']}")
buildConfigField("String", "google_project_id", "${secretProperties['google_project_id']}" ?: "null")
}
signingConfigs {
release {
// You need to specify either an absolute path or include the
// keystore file in the same directory as the build.gradle file.
storeFile file("../my-release-key.jks")
storePassword "${secretProperties['signing_keystore_password']}"
keyAlias "${secretProperties['signing_key_alias']}"
keyPassword "${secretProperties['signing_key_password']}"
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
}
}
......
json_key_file("~/gitter_key.json") # Path to the json secret file - Follow https://docs.fastlane.tools/actions/supply/#setup to get one
package_name("im.gitter.gitter") # e.g. com.krausefx.app
# 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
desc "Builds the debug code"
lane :buildDebug do
gradle(task: "assembleDebug")
end
desc "Builds the release code"
lane :buildRelease do
gradle(task: "assembleRelease")
end
desc "Runs all the tests"
lane :test do
gradle(task: "test")
end
desc "Submit a new Alpha Build to Play Store beta track"
lane :alpha do
gradle(task: "assembleRelease")
upload_to_play_store(track: 'alpha')
end
desc "Submit a new Beta Build to Play Store beta track"
lane :beta do
gradle(task: "assembleRelease")
upload_to_play_store(track: 'beta')
end
desc "Deploy a new version to the Google Play"
lane :deploy do
gradle(task: "assembleRelease")
upload_to_play_store
end
end
You can now see your communities in the drawer! Slide it out and check out the other rooms in your community that you may have not known about.
\ No newline at end of file
Fixed errors when joining or leaving a room
\ No newline at end of file
New notification to try out!
\ No newline at end of file
New notifications to try out!
\ No newline at end of file
Improved notifications
\ No newline at end of file
Improved notifications with extra fixes for Marshmallow and Lollipop.
\ No newline at end of file
A recent change to the Android webview component meant that Gitter for Android stopped working. Thanks for all the reports of this, and sorry for the inconvenience! This release fixes the problem.
\ No newline at end of file
Gitter is where developers come to talk. We provide free public chat rooms for developer communities and open source projects, as well as private chat rooms for technical teams and businesses.
KEY FEATURES
- Unlimited public chat rooms for free
- Unlimited and searchable chat history
- Unlimited integrations
- Built on top of GitHub, the world’s largest network of software developers
- Private chat rooms free up to 25 users
TRUSTED BY
Gitter is home to over 30,000 developer communities, including The .NET Foundation, Google Material Design, Angular.js, Backbone, Node.js, Scala, The W3C and many more.
PRAISE FOR GITTER
“Gitter helped us shape our distributed company culture. We use Github everyday, and Gitter is how we communicate around our work. Team spirit has gone up and we can see how much more people collaborate.” - Nuno Job, Founder YLD
“Gitter was an essential tool, not only for organising LXJS but to create a thriving community amongst our attendees before, during and even after the conference.” - David Dias, LXJS Conference Organiser
“Gitter has helped to bring the Marionette community together, turning into a thriving collaborative environment that has been exceedingly beneficial to both our endusers and maintainers” - Sam Saccone, Marionette.js Lead
PROBLEMS? FEEDBACK?
The more you tell us, the better Gitter gets. In case of any questions, and in order to find out more about the product, visit our support site: https://gitter.zendesk.com
You can also give us direct feedback in the Gitter HQ channel: https://gitter.im/orgs/gitterHQ
Let us know how we can improve!
\ No newline at end of file
Where developers come to talk.
\ No newline at end of file
Gitter: Chat for Github & more
\ No newline at end of file
Gitterは開発者たちが話をしに集まってくる場所です。
開発者コミュニティとオープンソースプロジェクトのための無料でオープンなチャットルームだけでなく、テクニカルチームとビジネス向けのプライベートチャットルームも提供しています。
主な特徴
無制限のオープンチャットルームが無料
無制限かつ検索可能なチャット履歴
無制限の統合
ソフトウェア開発者の世界最大のネットワーク、GitHub上に構築
プライベートチャットルームは、25人のユーザーまで無料
高い信頼性
Gitterは、NET Foundation、Googleマテリアルデザイン、Angular.js、Backbone、Node.js、Scala、W3Cなどを含む、3万人以上の開発者のコミュニティーです。
Gitterへの称賛
「Gitterは、私たちの分散型の企業文化を形成する助けになりました。
当社ではGithubを毎日利用しており、Gitterこそが、仕事についてのコミュニケーションをとる手法になっています。
チーム精神が向上して、これまでよりも多くの人々が協力しているのがわかります。」 - YLD創設者 Nuno Job
「LXJSの運営管理をするためだけではなく、会議の前、会議中、そして会議後にも参加者の活発なコミュニティを作る為に、Gitterは必要不可欠なツールでした。」 - LXJS会議主催 David Dias
「Gitterは、Marionetteのコミュニティをひとつにまとめ、エンドユーザと開発者の双方に非常に有益な、活発な共同作業環境を作り出すのにのに一役買いました。」- Marionette.jsリード開発者 Sam Saccone 
問題が起きたら?
フィードバックがある時は?
皆様よりご意見をいただけばいただくほど、Gitterも進化します。
お問合せがある場合、また当製品の詳細な情報をご希望の場合には、当社のサポートサイトをご参照ください: https://gitter.zendesk.com Gitter HQチャンネルで直接フィードバックも可能です。Gitter HQチャンネル: https://gitter.im/orgs/gitterHQ
当製品をどのように改善できるかお知らせください!
\ No newline at end of file
Gitterは開発者たちが話をしに集まってくる場所です。
\ No newline at end of file
Gitter
\ No newline at end of file
Gitter to miejsce gdzie programiści przychodzą porozmawiać. Zapewniamy bezpłatny dostęp do publicznych pokojów czatowych dla społeczności programistów i projektów open source, jak i prywatne czaty dla zespołów technicznych i firm.
KLUCZOWE CECHY
- Nieograniczona liczba publicznych pokojów czatowych za darmo
- Nieograniczona historia czatu z mozliwoscia przeszukiwania
- Nieograniczona integracje
- Zbudowany na GitHub, największej sieci na świecie dla programistów
- Prywatne pokoje czatowe za darmo do 25 użytkowników
ZAUFALI NAM
Gitter jest domem dla ponad 30.000 społeczności programistów, w tym Fundacji .NET, Google Materiał Design, angularjs, kręgosłup, node.js, Scala, W3C i wielu innych.
Pochwała dla Gitter
"Gitter pomógł nam kształtować naszą rozproszoną kulturę firmy. Używamy GitHub codziennie, a Gitter umożliwia komunikowanie się wokół naszej pracy. Duch zespołu wzrósł, a my możemy obserwowac, jak dużo więcej osób współpracuje ze soba. "- Nuno Job, założyciel YLD
"Gitter był podstawowym narzędziem nie tylko do organizowania LXJS, ale do stworzenia aktywnej społeczności wśród naszych uczestników przed, w trakcie, a nawet po zakończeniu konferencji." - David Dias, LXJS Organizator konferencji
"Gitter pomógł zbudować społeczność Marionette, kreując kwitnące środowisko współpracy, która była niezwykle korzystna dla obu naszych użytkowników i opiekunów" - Sam Saccone, Marionette.js
PROBLEMY? FEEDBACK?
Im więcej nam powiesz, tym lepszy stanie się Gitter. W razie jakichkolwiek pytań, i aby dowiedzieć się więcej o produkcie, odwiedź naszą stronę: https://gitter.zendesk.com
Można również zostawic nam informacje w kanale Gitter HQ: https://gitter.im/orgs/gitterHQ
Daj nam znać jak możemy się poprawić!
\ No newline at end of file
Gitter to miejsce gdzie programiści przychodzą porozmawiać.
\ No newline at end of file
Gitter - Chat dla Programistów
\ No newline at end of file
Nós oferecemos salas públicas gratuitas de bate-papo para comunidades de desenvolvedores e projetos de código aberto, bem como salas de bate-papo privadas para equipes técnicas e negócios.
CARACTERÍSTICAS PRINCIPAIS
- Salas de bate-papo públicas ilimitadas e gratuitas
- Histórico de bate-papo pesquisável e ilimitado
- Integrações ilimitadas
- Construído sobre a GitHub, a maior rede mundial de desenvolvedores de software
- Salas de bate-papo privadas gratuitas para até 25 usuários
RESPEITADO POR
O Gitter é o lar de mais de 30 mil comunidades de desenvolvedores, incluindo estas: The.NET Foundation, Google Material Design, Angular.js, Backbone, Node.js, Scala, The W3C e muitas outras.
ELOGIOS AO GITTER
"O Gitter nos ajudou a moldar a cultura da nossa companhia. Usamos o Github todos os dias, e através do Gitter nos comunicamos no nosso trabalho. O espírito de equipe cresceu e podemos notar o quão mais as pessoas colaboram. "- Nuno Job, fundador da YLD
"O Gitter foi uma ferramenta essencial, não apenas para organizar o LXJS, mas para criar uma comunidade pujante entre os nossos participantes antes, durante e mesmo depois da conferência." - David Dias, organizador de conferências da LXJS
“Gitter has helped to bring the Marionette community together, turning into a thriving collaborative environment that has been exceedingly beneficial to both our endusers and maintainers” - Sam Saccone, Marionette.js Lead
"O Gitter ajudou a unir a comunidade da Marionette, produzindo um ambiente vibrante de colaboração que tem sido extremamente benéfico para os nossos usuários finais e mantenedores" - Sam Saccone, líder da Marionette.js
PROBLEMAS? COMENTÁRIOS?
Quanto mais você fala conosco, melhor o Gitter se torna.
Em caso de dúvidas, e para saber mais sobre o produto, visite nosso site de suporte: https://gitter.zendesk.com Você também pode comentar diretamente no canal Gitter HQ: https://gitter.im/orgs/gitterHQ
Diga-nos como podemos melhorar!
\ No newline at end of file
O Gitter é o lugar onde os desenvolvedores conversam entre si.
\ No newline at end of file
Gitter
\ No newline at end of file
Мы предлагаем бесплатные публичные чат-комнаты для сообществ разработчиков и проектов с открытым исходным кодом, а также закрытые чаты для технических команд и бизнеса.
КЛЮЧЕВЫЕ ОСОБЕННОСТИ
Неограниченное количество бесплатных публичных чатов
Неограниченная история чата с возможностью поиска
Неограниченные интеграции
Построен на основе GitHub, крупнейшей в мире сети разработчиков программного обеспечения
Приватные чат-комнаты бесплатны до 25 пользователей
НАМ ДОВЕРЯЮТ
Gitter является домом для более чем 30000 разработчиков, в том числе:.NET Foundation, Google Material Design, Angular.js, Backbone, Node.js, Scala, W3C и многого другого.
БЛАГОДАРНЫЕ ОТЗЫВЫ О GITTER
"Gitter помог нам сформировать свою распределенную корпоративную культуру.Мы пользуемся GitHub ежедневно, и Gitter - это то, при помощи чего общаемся по вопросам, касающимся нашей работы.
Командный дух вырос, и мы можем видеть, насколько больше людей теперь работают сообща", - Nuno Job, основатель YLD
"Gitter был важным инструментом не только для организации LXJS, но и для создания успешного сообщества среди наших посетителей до, во время и даже после конференции." - Дэвид Диас, организатор конференции LXJS
"Gitter помог организовать сообщество Marionette, превратив его в успешную среду для совместной работы, которая была чрезвычайно выгодной и для наших конечных пользователей, и для технических специалистов" - Сэм Сакконе, руководитель Marionette.js Lead
ПРОБЛЕМЫ?
ОБРАТНАЯ СВЯЗЬ?
Чем больше вы расскажете нам, тем лучше станет Gitter.
Если у вас возникнут какие-либо вопросы, или вы захотите узнать подробности о нашем продукте, зайдите на сайт поддержки: https://gitter.zendesk.com Также вы можете оставить нам комментарий на канале Gitter HQ: https://gitter.im/orgs/gitterHQ
Помогите нам стать ещё лучше!
\ No newline at end of file
Gitter - место, куда разработчики приходят пообщаться.
\ No newline at end of file
Gitter - Чат для GitHub
\ No newline at end of file
Gitter是开发商前来洽谈的地方。
We provide free public chat rooms for developer communities and open source projects, as well as private chat rooms for technical teams and businesses.
我们为开发者社区和开源项目提供免费的公共聊天室,为技术团队和企业提供私人聊天室。
KEY FEATURES
主要特征
Unlimited public chat rooms for free
免费无限公共聊天室
Unlimited and searchable chat history
无限和可搜索聊天记录
Unlimited integrations
无限整合
Built on top of GitHub, the world’s largest network of software developers
基于世界最大的软件开发商GitHub所构建
Private chat rooms free up to 25 users
免费私人聊天室可容纳25位用户
TRUSTED BY
取信于
Gitter is home to over 30,000 developer communities, including The .NET Foundation, Google Material Design, Angular.js, Backbone, Node.js, Scala, The W3C and many more.
Gitter是超过30,000个开发者社区的家,其中包括:NET基金会丶谷歌材料设计丶Angular.js丶Backbone丶Node.js丶 Scala和The W3C 等等。
PRAISE FOR GITTER
Gitter所获赞誉
“Gitter helped us shape our distributed company culture.
“Gitter 帮助我们塑造了分布式的企业文化。
We use Github everyday, and Gitter is how we communicate around our work.
我们每日都使用Github,我们在工作时用Gitter交流。
Team spirit has gone up and we can see how much more people collaborate.” - Nuno Job, Founder YLD
团队精神已提升,我们可以看到更多人合作程度。“——YLD创办人,Nuno Job
“Gitter was an essential tool, not only for organising LXJS but to create a thriving community amongst our attendees before, during and even after the conference.” - David Dias, LXJS Conference Organiser
“Gitter是一件必不可少的工具,它不仅用于组织LXJS会议,还在会前、会中,甚至是会后,都在与会者之间创建了一个繁荣的社区。”——David Dias,LXJS会议组织者
“Gitter has helped to bring the Marionette community together, turning into a thriving collaborative environment that has been exceedingly beneficial to both our endusers and maintainers” - Sam Saccone, Marionette.js Lead
“Gitter有助于让Marionette社区团结一起,转变成一种紧密合作的环境,为直接用户和维护人员带来非常有益的环境“ ——Marionette.js领导,Sam Saccone
PROBLEMS?
疑问?
FEEDBACK?
反馈?
The more you tell us, the better Gitter gets.
您告诉我们越多,Gitter越能得以改善。
In case of any questions, and in order to find out more about the product, visit our support site: https://gitter.zendesk.com You can also give us direct feedback in the Gitter HQ channel: https://gitter.im/orgs/gitterHQ
如有任何疑问,并了解更多的产品信息,请访问我们的支持网站:https://gitter.zendesk.com 您也可以在Gitter HQ通道直接给我们反馈 https://gitter.im/orgs/gitterHQ
Let us know how we can improve!
让我们知道我们如何改善!
\ No newline at end of file