SlideShare ist ein Scribd-Unternehmen logo
1 von 34
Downloaden Sie, um offline zu lesen
Fastlane for Android
による継続的デリバリー
Fumiya Nakamura / @nafu003
ライブ共有型スポーツアプリ
「Player!(プレイヤー)」
株式会社ookami
すべてのスポーツを
スマホで
リアルで
一つの場所で
ライブの熱狂を
いつでもどこでも
電車の中でもTVがなくても、これ
からはスポーツをいつでもどこでも。
スポーツニュースを
まとめ読み
あなたのかわりに、あなたがほ
しいニュースをさがしてきます。
専門家や著名人も使う
スポーツSNS
世界中にコメンテーターがいます。
あなたもその一人かもしれません。
サービス概要
https://github.com/fastlane/fastlane
4
https://github.com/fastlane/fastlane/releases/tag/1.34.0
5
fastlane
• Use fastlane to
1. Build using gradle
2. Beta Distribution
3. Upload builds and metadata to Google Play
6
fastlane
• Use fastlane to
1. Build using gradle
2. Beta Distribution
3. Upload builds and metadata to Google Play
7
Build
Distribution
Import
8
Workflow
9
Workflow
Push
10
Beta Distribution
• Tools
• Fabric (Crashlytics Beta)
• Fastlane
• CircleCI
11
Beta Distribution
• Tools
• Fabric (Crashlytics Beta)
• Fastlane
• CircleCI
12
Beta Distribution
13
fastlane / Fastfile
Build
Distribution
Import
lane :beta do
# Build
gradle(task: “assembleStaging”)
# Push to Crashlytics
crashlytics(
groups: “developer”,
notifications: false
)
# Post to Slack
slack(
message: “Successfully deployed new App Update.”
)
end
Beta Distribution
14
fastlane / Fastfile
Build
Distribution
Import
lane :beta do
# Build
gradle(task: “assembleStaging”)
# Push to Crashlytics
crashlytics(
groups: “developer”,
notifications: false
)
# Post to Slack
slack(
message: “Successfully deployed new App Update.”
)
end
Beta Distribution
15
fastlane / Fastfile
Build
Distribution
Import
lane :beta do
# Build
gradle(task: “assembleStaging”)
# Push to Crashlytics
crashlytics(
groups: “developer”,
notifications: false
)
# Post to Slack
slack(
message: “Successfully deployed new App Update.”
)
end
Beta Distribution
16
fastlane / Fastfile
Build
Distribution
Import
lane :beta do
# Build
gradle(task: “assembleStaging”)
# Push to Crashlytics
crashlytics(
groups: “developer”,
notifications: false
)
# Post to Slack
slack(
message: “Successfully deployed new App Update.”
)
end
Beta Distribution
17
fastlane / Fastfile
Build
Distribution
Import
lane :beta do
# Build
gradle(task: “assembleStaging”)
# Push to Crashlytics
crashlytics(
groups: “developer”,
notifications: false
)
# Post to Slack
slack(
message: “Successfully deployed new App Update.”
)
end
Action
Action
Action
Beta Distribution
• Tools
• Fabric (Crashlytics Beta)
• Fastlane
• CircleCI
18
• Execute workflows with fastlane
machine:
java:
version: openjdk7
ruby:
version: 2.2.3
dependencies:
pre:
- echo y | android update sdk --no-ui --al--filter tool,extra-android-
m2repository,extra-android-support,extra-google-google_play_services,extra-
google-m2repository,android-23
- echo y | android update sdk --no-ui --al --filter build-tools-23.0.2
deployment:
beta:
branch: master
commands:
- bundle exec fastlane beta
Beta Distribution
circle.yml
https://circleci.com/docs/configuration
• Execute workflows with fastlane
machine:
java:
version: openjdk7
ruby:
version: 2.2.3
dependencies:
pre:
- echo y | android update sdk --no-ui --al--filter tool,extra-android-
m2repository,extra-android-support,extra-google-google_play_services,extra-
google-m2repository,android-23
- echo y | android update sdk --no-ui --al --filter build-tools-23.0.2
deployment:
beta:
branch: master
commands:
- bundle exec fastlane beta
Beta Distribution
circle.yml
Configure the virtual machine
https://circleci.com/docs/configuration
• Execute workflows with fastlane
machine:
java:
version: openjdk7
ruby:
version: 2.2.3
dependencies:
pre:
- echo y | android update sdk --no-ui --al--filter tool,extra-android-
m2repository,extra-android-support,extra-google-google_play_services,extra-
google-m2repository,android-23
- echo y | android update sdk --no-ui --al --filter build-tools-23.0.2
deployment:
beta:
branch: master
commands:
- bundle exec fastlane beta
Beta Distribution
circle.yml
Specify dependencies
https://circleci.com/docs/configuration
• Execute workflows with fastlane
machine:
java:
version: openjdk7
ruby:
version: 2.2.3
dependencies:
pre:
- echo y | android update sdk --no-ui --al--filter tool,extra-android-
m2repository,extra-android-support,extra-google-google_play_services,extra-
google-m2repository,android-23
- echo y | android update sdk --no-ui --al --filter build-tools-23.0.2
deployment:
beta:
branch: master
commands:
- bundle exec fastlane beta
Beta Distribution
circle.yml
Deploy using fastlane
https://circleci.com/docs/configuration
fastlane
• Use fastlane to
1. Build using gradle
2. Beta Distribution
3. Upload builds and metadata to Google Play
23
Release Distribution
24
fastlane / Fastfile
Build
Distribution
Import
lane :deploy do
# Generate key files
dir = “./fastlane/certs”
add_key(
keystore_path: File.join(dir, “release.keystore”),
play_p12_path: File.join(dir, “play.p12”)
)
# Build
gradle(task: “assembleRelease”)
# Upload to Google Play
supply(
track: “alpha”
)
# Delete key files

remove_key
end
Release Distribution
25
fastlane / Fastfile
Build
Distribution
Import
lane :deploy do
# Generate key files
dir = “./fastlane/certs”
add_key(
keystore_path: File.join(dir, “release.keystore”),
play_p12_path: File.join(dir, “play.p12”)
)
# Build
gradle(task: “assembleRelease”)
# Upload to Google Play
supply(
track: “alpha”
)
# Delete key files

remove_key
end
Release Distribution
26
fastlane / Fastfile
Build
Distribution
Import
lane :deploy do
# Generate key files
dir = “./fastlane/certs”
add_key(
keystore_path: File.join(dir, “release.keystore”),
play_p12_path: File.join(dir, “play.p12”)
)
# Build
gradle(task: “assembleRelease”)
# Upload to Google Play
supply(
track: “alpha”
)
# Delete key files

remove_key
end
Release Distribution
27
fastlane / Fastfile
Build
Distribution
Import
lane :deploy do
# Generate key files
dir = “./fastlane/certs”
add_key(
keystore_path: File.join(dir, “release.keystore”),
play_p12_path: File.join(dir, “play.p12”)
)
# Build
gradle(task: “assembleRelease”)
# Upload to Google Play
supply(
track: “alpha”
)
# Delete key files

remove_key
end
Release Distribution
28
fastlane / Appfile
# Follow https://github.com/fastlane/supply#setup to get one
issuer “fastlane@api-123456789-12345.iam.gserviceaccount.com”
# Path to the keyfile
keyfile “./fastlane/certs/play.p12"
# e.g. com.krausefx.app
package_name “your.package.name”
• Setup for connecting to Google Play
Release Distribution
29
fastlane / Fastfile
Build
Distribution
Import
lane :deploy do
# Generate key files
dir = “./fastlane/certs”
add_key(
keystore_path: File.join(dir, “release.keystore”),
play_p12_path: File.join(dir, “play.p12”)
)
# Build
gradle(task: “assembleRelease”)
# Upload to Google Play
supply(
track: “alpha”
)
# Delete key files

remove_key
end
Release Distribution
30
fastlane / Fastfile
Build
Distribution
Import
lane :deploy do
# Generate key files
dir = “./fastlane/certs”
add_key(
keystore_path: File.join(dir, “release.keystore”),
play_p12_path: File.join(dir, “play.p12”)
)
# Build
gradle(task: “assembleRelease”)
# Upload to Google Play
supply(
track: “alpha”
)
# Delete key files

remove_key
end
Custom Action
Custom Action
Release Distribution
31
fastlane / Fastfile - Custom Action
module Fastlane
module Actions
class AddKeyAction < Action
def self.run(params)
keystore_path = params[:keystore_path]
play_p12_path = params[:play_p12_path]
encryption_secret = ENV["ENCRYPTION_SECRET"]
sh "openssl aes-256-cbc -k #{encryption_secret} -in #{keystore_path}.enc -d -a -out #{keystore_path}"
sh "openssl aes-256-cbc -k #{encryption_secret} -in #{play_p12_path}.enc -d -a -out #{play_p12_path}"
end
end
end
end
module Fastlane
module Actions
class RemoveKeyAction < Action
def self.run(params)
sh "rm -rf fastlane/certs"
end
end
end
end
Release Distribution
32
fastlane / metadata
fastlane
├── Appfile
├── Fastfile
├── actions
│   ├── add_key.rb
│   └── remove_key.rb
├── certs
│   ├── play.p12.enc
│   └── release.keystore.enc
└── metadata
   └── android
   └── ja-JP
   ├── full_description.txt
   ├── images
   │   ├── featureGraphic.png
   │   ├── icon.png
   │   ├── phoneScreenshots
   │   │   ├── 1.jpeg
   │   │   └── 2.jpeg
   │   ├── sevenInchScreenshots
   │   ├── tenInchScreenshots
   │   ├── tvScreenshots
   │   └── wearScreenshots
   ├── short_description.txt
   ├── title.txt
   └── video.txt
fastlane
• Use fastlane to
1. Build using gradle
2. Beta Distribution
3. Upload builds and metadata to Google Play
33
WE ARE HIRING!

Weitere ähnliche Inhalte

Was ist angesagt?

(Live) build and run golang web server on android.avi
(Live) build and run golang web server on android.avi(Live) build and run golang web server on android.avi
(Live) build and run golang web server on android.aviSeongJae Park
 
Develop Android app using Golang
Develop Android app using GolangDevelop Android app using Golang
Develop Android app using GolangSeongJae Park
 
Scaffolding a mean stack
Scaffolding a mean stackScaffolding a mean stack
Scaffolding a mean stackSean Katz
 
Android1.5~8.0 Walkthrough
Android1.5~8.0 WalkthroughAndroid1.5~8.0 Walkthrough
Android1.5~8.0 WalkthroughYuki Matsumura
 
Fearless Internationalization and Localization Across the Nations
Fearless Internationalization and Localization Across the NationsFearless Internationalization and Localization Across the Nations
Fearless Internationalization and Localization Across the NationsSiena Aguayo
 
[I/O Extended 2019 Incheon] 클라우드 게이밍 : Stadia면 다릅니다.
[I/O Extended 2019 Incheon] 클라우드 게이밍 : Stadia면 다릅니다.[I/O Extended 2019 Incheon] 클라우드 게이밍 : Stadia면 다릅니다.
[I/O Extended 2019 Incheon] 클라우드 게이밍 : Stadia면 다릅니다.Kay Sung Hyuk
 
Embedded Android Workshop with Nougat
Embedded Android Workshop with NougatEmbedded Android Workshop with Nougat
Embedded Android Workshop with NougatOpersys inc.
 
Android best practices 2015
Android best practices 2015Android best practices 2015
Android best practices 2015Sean Katz
 
Continuous Delivery - FIT VUT
Continuous Delivery - FIT VUTContinuous Delivery - FIT VUT
Continuous Delivery - FIT VUTJuraj Michálek
 
GWT - AppDays - (25 aprile 2014, pordenone)
GWT - AppDays - (25 aprile 2014, pordenone)GWT - AppDays - (25 aprile 2014, pordenone)
GWT - AppDays - (25 aprile 2014, pordenone)firenze-gtug
 
Brillo/Weave Internals
Brillo/Weave InternalsBrillo/Weave Internals
Brillo/Weave InternalsOpersys inc.
 
Building a Django App with Heroku
Building a Django App with HerokuBuilding a Django App with Heroku
Building a Django App with Herokuexplorro
 
Groovy Testing Aug2009
Groovy Testing Aug2009Groovy Testing Aug2009
Groovy Testing Aug2009guest4a266c
 
Android Things Latest News / Aug 25, 2017
Android Things Latest News / Aug 25, 2017Android Things Latest News / Aug 25, 2017
Android Things Latest News / Aug 25, 2017Masahiro Hidaka
 
C language in our world 2017
C language in our world 2017C language in our world 2017
C language in our world 2017Juraj Michálek
 
Development of Mobile Applications
Development of Mobile ApplicationsDevelopment of Mobile Applications
Development of Mobile ApplicationsDávid Kaya
 
[ABC2018Spring]Flutterアプリ開発入門
[ABC2018Spring]Flutterアプリ開発入門[ABC2018Spring]Flutterアプリ開発入門
[ABC2018Spring]Flutterアプリ開発入門Kenichi Kambara
 
GitHub Features Presentation
GitHub Features PresentationGitHub Features Presentation
GitHub Features PresentationVictor Alagwu
 

Was ist angesagt? (20)

(Live) build and run golang web server on android.avi
(Live) build and run golang web server on android.avi(Live) build and run golang web server on android.avi
(Live) build and run golang web server on android.avi
 
Develop Android app using Golang
Develop Android app using GolangDevelop Android app using Golang
Develop Android app using Golang
 
Scaffolding a mean stack
Scaffolding a mean stackScaffolding a mean stack
Scaffolding a mean stack
 
Android1.5~8.0 Walkthrough
Android1.5~8.0 WalkthroughAndroid1.5~8.0 Walkthrough
Android1.5~8.0 Walkthrough
 
Android developing in a wrong way
Android developing in a wrong wayAndroid developing in a wrong way
Android developing in a wrong way
 
Fearless Internationalization and Localization Across the Nations
Fearless Internationalization and Localization Across the NationsFearless Internationalization and Localization Across the Nations
Fearless Internationalization and Localization Across the Nations
 
[I/O Extended 2019 Incheon] 클라우드 게이밍 : Stadia면 다릅니다.
[I/O Extended 2019 Incheon] 클라우드 게이밍 : Stadia면 다릅니다.[I/O Extended 2019 Incheon] 클라우드 게이밍 : Stadia면 다릅니다.
[I/O Extended 2019 Incheon] 클라우드 게이밍 : Stadia면 다릅니다.
 
Embedded Android Workshop with Nougat
Embedded Android Workshop with NougatEmbedded Android Workshop with Nougat
Embedded Android Workshop with Nougat
 
Android best practices 2015
Android best practices 2015Android best practices 2015
Android best practices 2015
 
Continuous Delivery - FIT VUT
Continuous Delivery - FIT VUTContinuous Delivery - FIT VUT
Continuous Delivery - FIT VUT
 
GWT - AppDays - (25 aprile 2014, pordenone)
GWT - AppDays - (25 aprile 2014, pordenone)GWT - AppDays - (25 aprile 2014, pordenone)
GWT - AppDays - (25 aprile 2014, pordenone)
 
Brillo/Weave Internals
Brillo/Weave InternalsBrillo/Weave Internals
Brillo/Weave Internals
 
Building a Django App with Heroku
Building a Django App with HerokuBuilding a Django App with Heroku
Building a Django App with Heroku
 
Groovy Testing Aug2009
Groovy Testing Aug2009Groovy Testing Aug2009
Groovy Testing Aug2009
 
Android Things Latest News / Aug 25, 2017
Android Things Latest News / Aug 25, 2017Android Things Latest News / Aug 25, 2017
Android Things Latest News / Aug 25, 2017
 
Flutter 1
Flutter 1Flutter 1
Flutter 1
 
C language in our world 2017
C language in our world 2017C language in our world 2017
C language in our world 2017
 
Development of Mobile Applications
Development of Mobile ApplicationsDevelopment of Mobile Applications
Development of Mobile Applications
 
[ABC2018Spring]Flutterアプリ開発入門
[ABC2018Spring]Flutterアプリ開発入門[ABC2018Spring]Flutterアプリ開発入門
[ABC2018Spring]Flutterアプリ開発入門
 
GitHub Features Presentation
GitHub Features PresentationGitHub Features Presentation
GitHub Features Presentation
 

Ähnlich wie Fastlane for Androidによる継続的デリバリー

Connect.Tech- Level Up Your Game With TravisCI
Connect.Tech- Level Up Your Game With TravisCIConnect.Tech- Level Up Your Game With TravisCI
Connect.Tech- Level Up Your Game With TravisCIstable|kernel
 
A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024
A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024
A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024Cloud Native NoVA
 
Princeton Wintersession: Software Quality Assurance Tooling
Princeton Wintersession: Software Quality Assurance ToolingPrinceton Wintersession: Software Quality Assurance Tooling
Princeton Wintersession: Software Quality Assurance ToolingHenry Schreiner
 
OpenStack Murano introduction
OpenStack Murano introductionOpenStack Murano introduction
OpenStack Murano introductionVictor Zhang
 
Linux Security and How Web Browser Sandboxes Really Work (NDC Oslo 2017)
Linux Security  and How Web Browser Sandboxes Really Work (NDC Oslo 2017)Linux Security  and How Web Browser Sandboxes Really Work (NDC Oslo 2017)
Linux Security and How Web Browser Sandboxes Really Work (NDC Oslo 2017)Patricia Aas
 
Android build on windows
Android build on windowsAndroid build on windows
Android build on windowsAddweup
 
Linux Security and How Web Browser Sandboxes Really Work (Security Researcher...
Linux Security and How Web Browser Sandboxes Really Work (Security Researcher...Linux Security and How Web Browser Sandboxes Really Work (Security Researcher...
Linux Security and How Web Browser Sandboxes Really Work (Security Researcher...Patricia Aas
 
How to Develop Progressive Web Apps in Flutter – Step by Step Guide.pptx
How to Develop Progressive Web Apps in Flutter – Step by Step Guide.pptxHow to Develop Progressive Web Apps in Flutter – Step by Step Guide.pptx
How to Develop Progressive Web Apps in Flutter – Step by Step Guide.pptxBOSC Tech Labs
 
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017MarcinStachniuk
 
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)Fabrice Bernhard
 
Prizm Installation Guide
Prizm Installation GuidePrizm Installation Guide
Prizm Installation Guidevjvarenya
 
Uyuni, the solution to manage your IT infrastructure
Uyuni, the solution to manage your IT infrastructure Uyuni, the solution to manage your IT infrastructure
Uyuni, the solution to manage your IT infrastructure Uyuni Project
 
Uyuni, the solution to manage your IT infrastructure
Uyuni, the solution to manage your IT infrastructure Uyuni, the solution to manage your IT infrastructure
Uyuni, the solution to manage your IT infrastructure Pau Garcia Quiles
 
JDD 2017: 7 things which you should care about before release your code to pr...
JDD 2017: 7 things which you should care about before release your code to pr...JDD 2017: 7 things which you should care about before release your code to pr...
JDD 2017: 7 things which you should care about before release your code to pr...PROIDEA
 
Lecture02web 140phpapp01
Lecture02web 140phpapp01Lecture02web 140phpapp01
Lecture02web 140phpapp01letuan9999
 
FRIDA 101 Android
FRIDA 101 AndroidFRIDA 101 Android
FRIDA 101 AndroidTony Thomas
 
Radiomic Features.pdf
Radiomic Features.pdfRadiomic Features.pdf
Radiomic Features.pdfLallHussain
 

Ähnlich wie Fastlane for Androidによる継続的デリバリー (20)

Fastlane
FastlaneFastlane
Fastlane
 
Connect.Tech- Level Up Your Game With TravisCI
Connect.Tech- Level Up Your Game With TravisCIConnect.Tech- Level Up Your Game With TravisCI
Connect.Tech- Level Up Your Game With TravisCI
 
A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024
A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024
A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024
 
GlassFish v3 Update Center
GlassFish v3 Update CenterGlassFish v3 Update Center
GlassFish v3 Update Center
 
Princeton Wintersession: Software Quality Assurance Tooling
Princeton Wintersession: Software Quality Assurance ToolingPrinceton Wintersession: Software Quality Assurance Tooling
Princeton Wintersession: Software Quality Assurance Tooling
 
OpenStack Murano introduction
OpenStack Murano introductionOpenStack Murano introduction
OpenStack Murano introduction
 
Linux Security and How Web Browser Sandboxes Really Work (NDC Oslo 2017)
Linux Security  and How Web Browser Sandboxes Really Work (NDC Oslo 2017)Linux Security  and How Web Browser Sandboxes Really Work (NDC Oslo 2017)
Linux Security and How Web Browser Sandboxes Really Work (NDC Oslo 2017)
 
Kranthi kumar implement_ci_cd_my_notes
Kranthi kumar implement_ci_cd_my_notesKranthi kumar implement_ci_cd_my_notes
Kranthi kumar implement_ci_cd_my_notes
 
Android build on windows
Android build on windowsAndroid build on windows
Android build on windows
 
Linux Security and How Web Browser Sandboxes Really Work (Security Researcher...
Linux Security and How Web Browser Sandboxes Really Work (Security Researcher...Linux Security and How Web Browser Sandboxes Really Work (Security Researcher...
Linux Security and How Web Browser Sandboxes Really Work (Security Researcher...
 
How to Develop Progressive Web Apps in Flutter – Step by Step Guide.pptx
How to Develop Progressive Web Apps in Flutter – Step by Step Guide.pptxHow to Develop Progressive Web Apps in Flutter – Step by Step Guide.pptx
How to Develop Progressive Web Apps in Flutter – Step by Step Guide.pptx
 
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017
 
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
 
Prizm Installation Guide
Prizm Installation GuidePrizm Installation Guide
Prizm Installation Guide
 
Uyuni, the solution to manage your IT infrastructure
Uyuni, the solution to manage your IT infrastructure Uyuni, the solution to manage your IT infrastructure
Uyuni, the solution to manage your IT infrastructure
 
Uyuni, the solution to manage your IT infrastructure
Uyuni, the solution to manage your IT infrastructure Uyuni, the solution to manage your IT infrastructure
Uyuni, the solution to manage your IT infrastructure
 
JDD 2017: 7 things which you should care about before release your code to pr...
JDD 2017: 7 things which you should care about before release your code to pr...JDD 2017: 7 things which you should care about before release your code to pr...
JDD 2017: 7 things which you should care about before release your code to pr...
 
Lecture02web 140phpapp01
Lecture02web 140phpapp01Lecture02web 140phpapp01
Lecture02web 140phpapp01
 
FRIDA 101 Android
FRIDA 101 AndroidFRIDA 101 Android
FRIDA 101 Android
 
Radiomic Features.pdf
Radiomic Features.pdfRadiomic Features.pdf
Radiomic Features.pdf
 

Kürzlich hochgeladen

call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfThe Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfayushiqss
 
Generic or specific? Making sensible software design decisions
Generic or specific? Making sensible software design decisionsGeneric or specific? Making sensible software design decisions
Generic or specific? Making sensible software design decisionsBert Jan Schrijver
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrainmasabamasaba
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfkalichargn70th171
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfonteinmasabamasaba
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionOnePlan Solutions
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareJim McKeeth
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...masabamasaba
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdfPearlKirahMaeRagusta1
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...SelfMade bd
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...masabamasaba
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrandmasabamasaba
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park masabamasaba
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyviewmasabamasaba
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfonteinmasabamasaba
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech studentsHimanshiGarg82
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park masabamasaba
 

Kürzlich hochgeladen (20)

call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfThe Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
 
Generic or specific? Making sensible software design decisions
Generic or specific? Making sensible software design decisionsGeneric or specific? Making sensible software design decisions
Generic or specific? Making sensible software design decisions
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 

Fastlane for Androidによる継続的デリバリー

  • 6. fastlane • Use fastlane to 1. Build using gradle 2. Beta Distribution 3. Upload builds and metadata to Google Play 6
  • 7. fastlane • Use fastlane to 1. Build using gradle 2. Beta Distribution 3. Upload builds and metadata to Google Play 7
  • 11. Beta Distribution • Tools • Fabric (Crashlytics Beta) • Fastlane • CircleCI 11
  • 12. Beta Distribution • Tools • Fabric (Crashlytics Beta) • Fastlane • CircleCI 12
  • 13. Beta Distribution 13 fastlane / Fastfile Build Distribution Import lane :beta do # Build gradle(task: “assembleStaging”) # Push to Crashlytics crashlytics( groups: “developer”, notifications: false ) # Post to Slack slack( message: “Successfully deployed new App Update.” ) end
  • 14. Beta Distribution 14 fastlane / Fastfile Build Distribution Import lane :beta do # Build gradle(task: “assembleStaging”) # Push to Crashlytics crashlytics( groups: “developer”, notifications: false ) # Post to Slack slack( message: “Successfully deployed new App Update.” ) end
  • 15. Beta Distribution 15 fastlane / Fastfile Build Distribution Import lane :beta do # Build gradle(task: “assembleStaging”) # Push to Crashlytics crashlytics( groups: “developer”, notifications: false ) # Post to Slack slack( message: “Successfully deployed new App Update.” ) end
  • 16. Beta Distribution 16 fastlane / Fastfile Build Distribution Import lane :beta do # Build gradle(task: “assembleStaging”) # Push to Crashlytics crashlytics( groups: “developer”, notifications: false ) # Post to Slack slack( message: “Successfully deployed new App Update.” ) end
  • 17. Beta Distribution 17 fastlane / Fastfile Build Distribution Import lane :beta do # Build gradle(task: “assembleStaging”) # Push to Crashlytics crashlytics( groups: “developer”, notifications: false ) # Post to Slack slack( message: “Successfully deployed new App Update.” ) end Action Action Action
  • 18. Beta Distribution • Tools • Fabric (Crashlytics Beta) • Fastlane • CircleCI 18
  • 19. • Execute workflows with fastlane machine: java: version: openjdk7 ruby: version: 2.2.3 dependencies: pre: - echo y | android update sdk --no-ui --al--filter tool,extra-android- m2repository,extra-android-support,extra-google-google_play_services,extra- google-m2repository,android-23 - echo y | android update sdk --no-ui --al --filter build-tools-23.0.2 deployment: beta: branch: master commands: - bundle exec fastlane beta Beta Distribution circle.yml https://circleci.com/docs/configuration
  • 20. • Execute workflows with fastlane machine: java: version: openjdk7 ruby: version: 2.2.3 dependencies: pre: - echo y | android update sdk --no-ui --al--filter tool,extra-android- m2repository,extra-android-support,extra-google-google_play_services,extra- google-m2repository,android-23 - echo y | android update sdk --no-ui --al --filter build-tools-23.0.2 deployment: beta: branch: master commands: - bundle exec fastlane beta Beta Distribution circle.yml Configure the virtual machine https://circleci.com/docs/configuration
  • 21. • Execute workflows with fastlane machine: java: version: openjdk7 ruby: version: 2.2.3 dependencies: pre: - echo y | android update sdk --no-ui --al--filter tool,extra-android- m2repository,extra-android-support,extra-google-google_play_services,extra- google-m2repository,android-23 - echo y | android update sdk --no-ui --al --filter build-tools-23.0.2 deployment: beta: branch: master commands: - bundle exec fastlane beta Beta Distribution circle.yml Specify dependencies https://circleci.com/docs/configuration
  • 22. • Execute workflows with fastlane machine: java: version: openjdk7 ruby: version: 2.2.3 dependencies: pre: - echo y | android update sdk --no-ui --al--filter tool,extra-android- m2repository,extra-android-support,extra-google-google_play_services,extra- google-m2repository,android-23 - echo y | android update sdk --no-ui --al --filter build-tools-23.0.2 deployment: beta: branch: master commands: - bundle exec fastlane beta Beta Distribution circle.yml Deploy using fastlane https://circleci.com/docs/configuration
  • 23. fastlane • Use fastlane to 1. Build using gradle 2. Beta Distribution 3. Upload builds and metadata to Google Play 23
  • 24. Release Distribution 24 fastlane / Fastfile Build Distribution Import lane :deploy do # Generate key files dir = “./fastlane/certs” add_key( keystore_path: File.join(dir, “release.keystore”), play_p12_path: File.join(dir, “play.p12”) ) # Build gradle(task: “assembleRelease”) # Upload to Google Play supply( track: “alpha” ) # Delete key files
 remove_key end
  • 25. Release Distribution 25 fastlane / Fastfile Build Distribution Import lane :deploy do # Generate key files dir = “./fastlane/certs” add_key( keystore_path: File.join(dir, “release.keystore”), play_p12_path: File.join(dir, “play.p12”) ) # Build gradle(task: “assembleRelease”) # Upload to Google Play supply( track: “alpha” ) # Delete key files
 remove_key end
  • 26. Release Distribution 26 fastlane / Fastfile Build Distribution Import lane :deploy do # Generate key files dir = “./fastlane/certs” add_key( keystore_path: File.join(dir, “release.keystore”), play_p12_path: File.join(dir, “play.p12”) ) # Build gradle(task: “assembleRelease”) # Upload to Google Play supply( track: “alpha” ) # Delete key files
 remove_key end
  • 27. Release Distribution 27 fastlane / Fastfile Build Distribution Import lane :deploy do # Generate key files dir = “./fastlane/certs” add_key( keystore_path: File.join(dir, “release.keystore”), play_p12_path: File.join(dir, “play.p12”) ) # Build gradle(task: “assembleRelease”) # Upload to Google Play supply( track: “alpha” ) # Delete key files
 remove_key end
  • 28. Release Distribution 28 fastlane / Appfile # Follow https://github.com/fastlane/supply#setup to get one issuer “fastlane@api-123456789-12345.iam.gserviceaccount.com” # Path to the keyfile keyfile “./fastlane/certs/play.p12" # e.g. com.krausefx.app package_name “your.package.name” • Setup for connecting to Google Play
  • 29. Release Distribution 29 fastlane / Fastfile Build Distribution Import lane :deploy do # Generate key files dir = “./fastlane/certs” add_key( keystore_path: File.join(dir, “release.keystore”), play_p12_path: File.join(dir, “play.p12”) ) # Build gradle(task: “assembleRelease”) # Upload to Google Play supply( track: “alpha” ) # Delete key files
 remove_key end
  • 30. Release Distribution 30 fastlane / Fastfile Build Distribution Import lane :deploy do # Generate key files dir = “./fastlane/certs” add_key( keystore_path: File.join(dir, “release.keystore”), play_p12_path: File.join(dir, “play.p12”) ) # Build gradle(task: “assembleRelease”) # Upload to Google Play supply( track: “alpha” ) # Delete key files
 remove_key end Custom Action Custom Action
  • 31. Release Distribution 31 fastlane / Fastfile - Custom Action module Fastlane module Actions class AddKeyAction < Action def self.run(params) keystore_path = params[:keystore_path] play_p12_path = params[:play_p12_path] encryption_secret = ENV["ENCRYPTION_SECRET"] sh "openssl aes-256-cbc -k #{encryption_secret} -in #{keystore_path}.enc -d -a -out #{keystore_path}" sh "openssl aes-256-cbc -k #{encryption_secret} -in #{play_p12_path}.enc -d -a -out #{play_p12_path}" end end end end module Fastlane module Actions class RemoveKeyAction < Action def self.run(params) sh "rm -rf fastlane/certs" end end end end
  • 32. Release Distribution 32 fastlane / metadata fastlane ├── Appfile ├── Fastfile ├── actions │   ├── add_key.rb │   └── remove_key.rb ├── certs │   ├── play.p12.enc │   └── release.keystore.enc └── metadata    └── android    └── ja-JP    ├── full_description.txt    ├── images    │   ├── featureGraphic.png    │   ├── icon.png    │   ├── phoneScreenshots    │   │   ├── 1.jpeg    │   │   └── 2.jpeg    │   ├── sevenInchScreenshots    │   ├── tenInchScreenshots    │   ├── tvScreenshots    │   └── wearScreenshots    ├── short_description.txt    ├── title.txt    └── video.txt
  • 33. fastlane • Use fastlane to 1. Build using gradle 2. Beta Distribution 3. Upload builds and metadata to Google Play 33