2018/01/16
Automatisera testutskick av React Native-appar
På PiJa använder vi Travis CI för våra automatiska byggen.
Följande är en komplett guide för att sätta upp automatiserade utskick av testversioner för både iOS och Android vid varje ny commit mot develop branchen.
Steg 1 - Manuella testutskick med Crashlytics Beta
Bli medlem på Fabric.io och skapa en ny organisation.
Installera bundler http://bundler.io/
Installera Fabric och Crashlytics
iOS
Android
- Starta android studio
- Ladda ner och installera android studio pluginent från Fabric.
- Öppna ditt project och starta Fabric pluginet
- Välj ditt project i Fabric pluginet och välj organisation
- Följ instruktionerna för Crashlytics
- När Crashlytics har installerats i din android app klicka på build alternativet och "Generate Signed APK..."
- Välj appen och fortsätt till nästa steg
- Skapa en ny keystore. (exempel på detta: <Projekt namn>/android/keystores/release.keystore)
Skapa en APK i android studio
- Logga in med lösenorden som du precis har skapat och skapa en release APK.
Skapa en APK med react native
- Skapa en global gradle fil i sökvägen user/.gradle/gradle.properties
- I gradle.properties filen skapar du 2 variabler "PROJEKTNAMN_STORE_PASS=lösenord för din keystore" och "PROJEKTNAMN_ALIAS_PASS=lösenord för release alias"
- När filen har sparats så ska gradle.properties (Global Properties) finnas i ditt projekt i android studio under "Gradle Scripts"
- Öppna sedan build.gradle och skapa "signingConfigs" efter "splits"
signingConfigs {
release {
if (project.hasProperty('PROJEKTNAMN_STORE_PASS')) {
storeFile file('../keystores/release.keystore')
storePassword PROJEKTNAMN_STORE_PASS
keyAlias 'release'
keyPassword PROJEKTNAMN_ALIAS_PASS
}
if (System.getenv("TRAVIS")) {
storeFile file('../keystores/release.keystore')
storePassword System.getenv("ANDROID_KEYSTORE_PASS")
keyAlias 'release' keyPassword System.getenv("ANDROID_ALIAS_PASS")
}
}
}
- Kör sedan "react-native run-android --variant=release" i roten på ditt projekt i terminalen.
Gör ett utskick
- När en release apk har skapats gå sedan in i Fabric pluginet och välj ditt projekt som du har skapat.
- Dra in release APK filen </p>
Steg 2 - Förenkla byggena med Fastlane
Skapa en testgrupp för de automatiska utskicken med fastlane på Fabric.io
- Gå till Fabric.io och välj antingen iOS eller Android projektet
- Klicka på Beta sedan manage groups och skapa din testgrupp. Notera alias i små bokstäver.
- Skapa 2 stycken Gemfiles:
android/Gemfile
ios/Gemfile
- I Båda gemfilerna ska det finnas:
source "https://rubygems.org"
gem "fastlane"
Kör sedan
iOS
Android
- Gå till roten av ditt projekt i terminalen
- Gå till android mappen
- Initisiera Fastlane med "bundle exec fastlane init"
2 filer skapas: Fastfile och Appfile
- Öppna Fastfile och ändra på raden där det står crashlytics under lane :beta till:
Skapa en .env fil under fastlane mappen. Denna fil ska inte committas till versionshantering
Lägg till
CRASHLYTICS_API_TOKEN=organisationens_api_token
CRASHLYTICS_BUILD_SECRET=organisationens_build_secret
Öppna Fastfile och skapa en beta lane
desc "Submit a new Beta Build to Crashlytics Beta"
lane :beta do
gradle(task: "clean assembleRelease")
crashlytics(
groups: "aliaspåtestgrupp"
)
end
- Testa om det funkar genom att köra kommandot "bundle exec fastlane beta" i terminalen
Steg 3 - Köra Fastlane beta på Travis CI
- Skapa en travis.yml fil
- Skapa 2 nya filer:
travis/android.sh
travis/ios.sh
- I
android.sh
filen ska det stå:
#!/bin/bash
if [[ $TRAVIS_BRANCH == 'develop' ]]
then
(cd android && bundle exec fastlane android beta)
fi
#!/bin/bash
if [[ $TRAVIS_BRANCH == 'develop' ]]
then
(cd ios && bundle exec fastlane ios travisbeta)
fi
iOS
Android
- Under
install:
(i android delen) i din travis.yml fil
- gem install bundler
- "(cd android && bundle install --path vendor/bundle)"
- Skapa en rad som heter
script:
och under den raden skriv:
- 'if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then bash ./travis/android.sh; fi'