Wir haben CI / CD in Github-Aktionen überprüft. Darunter habe ich eine Vorlage erstellt, die regelmäßig auf andere Entwicklungsprojekte angewendet werden kann. Das Projekt der erstellten Vorlage lautet wie folgt. github-actions-examples
Dieses Mal werde ich es hier als Memorandum zum Aufbau einer solchen Umgebung beschreiben. Darüber hinaus wurde das oben genannte Projekt in verschiedenen anderen Umgebungen ausprobiert. Dieses Mal konzentrieren wir uns auf die Methode der automatischen Erstellung mit "Android-Anwendung" in Github-Aktionen. Ich werde es vorstellen.
In diesem Artikel finden Sie Informationen zur automatischen Bereitstellung auf der Website und zu den Grundeinstellungen in Github-Aktionen. Erstellen einer Umgebung für die automatische Bereitstellung mit Github-Aktionen (Website)
Darüber hinaus überprüfen wir derzeit die Umgebungskonstruktion des automatischen Builds mit "iOS" und "Unity". Ich möchte dies einführen, sobald die Methode festgelegt ist.
Release Build
ausgeführtBuild
Bitte beachten Sie jeweils die folgenden Inhalte
Release Build
: [android-release-build.yml](https://github.com/TakuKobayashi/github- Aktionsbeispiele / blob / master / .github / workflows / android-release-build.yml)Erstellen Sie eine Android-App als Java-Anwendung. Dieses Mal werden wir JDK zum Erstellen verwenden (auch wenn wir mit Kotlin entwickeln). Verwenden Sie in Github-Aktionen action / setup-java, um "JDK" einzurichten. Ich kann. Dieses Mal werden wir auch mit "Java Version 1.8" erstellen. Geben Sie daher die zu verwendende Version an. Beschreiben Sie Folgendes in der yml-Datei.
jobs:
build:
steps:
...
- name: setup JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
Nachdem Sie das JDK eingerichtet haben, müssen Sie als Nächstes das Android SDK herunterladen und einrichten. Das "Android SDK" wird normalerweise in Android Studio heruntergeladen, diesmal jedoch in der CLI. Laden Sie es daher so herunter, dass Android Studio nicht verwendet wird. Laden Sie die "Zip-Datei" herunter, die das "Android SDK" im Abschnitt "Nur Befehlszeilentools" von Android Studio enthält. Diese "Zip-Datei" hängt von der Version der "Android SDK" -Tools ab. Geben Sie die URL ein, die die Version angibt, die Sie herunterladen und verwenden möchten. Der folgende Vorgang ist der Vorgang des Herunterladens und Entpackens der Zip-Datei.
wget --quiet --output-document=android-sdk.zip https://dl.google.com/android/repository/sdk-tools-linux-${{ matrix.sdk-tools }}.zip
unzip -d android-sdk-linux android-sdk.zip
Geben Sie für "matrix.sdk-tools" den Wert der obigen Version von "Android SDK" an. In diesem Beispiel verwenden wir "4333796".
Übergeben Sie nach dem Herunterladen und Dekomprimieren des "Android SDK" die Einstellungen für die Verwendung von "Build-Tools", "Plattform-Tools" und der Umgebungsvariablen "PATH".
echo y | android-sdk-linux/tools/bin/sdkmanager "platforms;android-${{ matrix.compile-sdk }}" >/dev/null
echo y | android-sdk-linux/tools/bin/sdkmanager "platform-tools" >/dev/null
echo y | android-sdk-linux/tools/bin/sdkmanager "build-tools;${{ matrix.build-tools }}" >/dev/null
export ANDROID_HOME=$PWD/android-sdk-linux
export PATH=$PATH:$PWD/android-sdk-linux/platform-tools/
Akzeptieren Sie dann den Weihrauch, um das Android SDK zu verwenden.
set +o pipefail
yes | android-sdk-linux/tools/bin/sdkmanager --licenses
set -o pipefail
Nachdem Sie das "Android SDK" eingerichtet haben, können Sie Ihre Android-App erstellen.
Verwenden Sie "Gradle", um die App auf Android zu erstellen. Die "Gradle" -Einstellungen werden automatisch durch Ausführen von "gradlew" eingerichtet. (Verschiedene Gradlew-Befehle werden auch mit "gradlew" ausgeführt.) Aktualisieren Sie die Berechtigungen, damit die "gradlew" -Datei ausgeführt werden kann.
chmod +x ./gradlew
Es ist so eingestellt, dass es wie oben beschrieben erstellt wird. Wenn Sie jedoch so erstellen, wie es ist, wird "Warnung" angezeigt. Erstellen Sie daher die folgende Datei, um "Warnung" zu vermeiden.
sudo touch /root/.android/repositories.cfg
Debug Build
Wenn die Umgebung zum Erstellen von Android-Apps bereit ist, führen Sie zuerst "Debug Build" aus.
Debug Build
kann durch Ausführen des folgenden Befehls erstellt werden.
./gradlew assembleDebug
Eine Signatur ist erforderlich, um eine Android-App zu erstellen, aber "Debug Build", das keinen Signaturschlüssel angibt, wird in "~ / .android / debug.keystore" generiert, wenn das "Android SDK" installiert wird. Der Build wird unter Verwendung des vorhandenen "Keystore for Debug" durchgeführt.
【Referenz】 Ich habe den Keystore auf Debug überprüft
Release Build
Im Fall von "Debug Build" wurde der Build mit dem "Debug Keystore" von Android durchgeführt. Wenn Sie jedoch die erstellte Android-Anwendung an Google Play Store usw. verteilen, wird sie von der Anwendung verteilt, die mit dem Standard-Signaturschlüssel erstellt wurde. Kann ich nicht machen. Zum Verteilen können Sie eine Anwendung erstellen, die an den Store verteilt werden soll, indem Sie selbst einen Signaturschlüssel erstellen und mit dem erstellten Signaturschlüssel erstellen (hier wird ein solcher Build als "Release Build" bezeichnet). Masu) Im Folgenden zeigen wir Ihnen unter Github-Aktionen, wie Sie "Release Build" ausführen. Informationen zum Erstellen eines Schlüssels finden Sie unter hier.
Um den erstellten Signaturschlüssel und die Erstellung anzugeben, wird er beim Erstellen angewendet, indem die Signaturschlüsseldatei in "app / batch.gradle" angegeben wird.
Zu diesem Zeitpunkt sind die Informationen von storeFile`` storePassword`` keyAlias`` keyPassword
erforderlich. Geben Sie diese Informationen daher in app / batch.gradle
an.
Da es sich bei diesen Informationen jedoch um eine Umgebungsvariable handelt, die Sie geheim halten und verwalten möchten, beschreiben Sie die obigen Informationen in "local.properties", die die Umgebungsvariable unter Android beschreiben, und fügen Sie den Inhalt in "app / build.gradle" ein. Durch das Laden wird beim Erstellen darauf verwiesen. (local.properties
ist standardmäßig in .gitignore
aufgeführt)
Die Beschreibung in app / batch.gradle
lautet wie folgt.
build.gradle
Properties properties = new Properties()
def localPropertiesFile = project.rootProject.file('local.properties');
if(!localPropertiesFile.exists()){
//Wenn keine localPropertiesFile vorhanden ist, erstellen Sie sie
localPropertiesFile.createNewFile();
}
properties.load(localPropertiesFile.newDataInputStream())
Wenn im obigen Beispiel "local.properties" zum Zeitpunkt der Erstellung nicht vorhanden ist, erstellen Sie eine neue und laden Sie, falls vorhanden, die vorhandene Datei, um sie auf die Einstellungen anzuwenden. (Wenn Sie dies nicht tun, wird ein Build-Fehler angezeigt, wenn local.properties
nicht vorhanden ist (z. B. wenn Sie Debug Build
ausführen).)
Um den Lesewert von "local.properties" auf den Build anzuwenden, wenn "Build freigeben", schreiben Sie wie folgt.
build.gradle
android {
...
signingConfigs {
release {
//Beschreiben Sie nur, wenn eine bestimmte Datei vorhanden ist
if(!properties.getProperty("RELEASE_STORE_FILE", "").empty){
storeFile file(properties.getProperty("RELEASE_STORE_FILE", ""))
}
storePassword properties.getProperty("RELEASE_STORE_PASSWORD", "")
keyAlias properties.getProperty("RELEASE_KEY_ALIAS", "")
keyPassword properties.getProperty("RELEASE_KEY_PASSWORD", "")
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}
}
Legen Sie zu diesem Zeitpunkt die folgenden Umgebungsvariablen in "local.properties" fest.
local.properties
RELEASE_STORE_FILE=Dateipfad der Signaturschlüsseldatei(Absoluter Pfad)String
RELEASE_STORE_PASSWORD=Kennwortzeichenfolge speichern
RELEASE_KEY_ALIAS=Schlüsselaliaszeichenfolge
RELEASE_KEY_PASSWORD=Schlüsselkennwortzeichenfolge
Normalerweise ist die Signaturschlüsseldatei eine Binärdatei. Sie müssen sie also irgendwo speichern und abrufen oder in Ihr Projekt einbetten. Es gibt jedoch ein Problem, dass die Signaturschlüsseldatei vielen Entwicklern bekannt ist.
Speichern Sie dieses Mal die Signaturschlüsselverwaltung in Github Secrets und wenden Sie sie als geheime Umgebungsvariable </ font> an
Die Dateigröße des Signaturschlüssels ist trivial. Verwenden Sie daher "base64", um die Binärdatei zu stringifizieren. Durch Speichern dieser Zeichenfolge in "Github Secrets" und Zurückspeichern in eine Binärdatei, wenn Github Actions ausgeführt wird, kann die Schlüsselverwaltung geheim gehalten werden. Es wird möglich sein. Geben Sie zunächst die Signaturschlüsseldatei in eine Zeichenfolge mit base64 aus.
base64 Android Build Signierschlüssel.keystore
Führen Sie diesen Befehl aus und registrieren Sie die Ausgabezeichenfolge in "Github Secrets".
In Github Actions werden die hier festgelegten Informationen zu "Github Secrets" angewendet. Schreiben Sie sie daher wie folgt in eine Binärdatei mit "base64 -d>". Ich werde.
echo ${ANDROID_REALSE_BASE64_KEY} | base64 -d > ./release-application-key
release-application-key
ist der Dateiname des Signaturschlüssels, der vorübergehend gespeichert werden soll.Beschreiben Sie beim Ausführen von Github-Aktionen die folgenden Informationen in local.properties
mit den Informationen, die zum Ausführen von Release Build
erforderlich sind.
local.properties
RELEASE_STORE_FILE=Dateipfad der Signaturschlüsseldatei(Absoluter Pfad)String
RELEASE_STORE_PASSWORD=Kennwortzeichenfolge speichern
RELEASE_KEY_ALIAS=Schlüsselaliaszeichenfolge
RELEASE_KEY_PASSWORD=Schlüsselkennwortzeichenfolge
Alle diese Informationen sollten in Github Secrets festgelegt werden, und die Einstellungen sollten wie unten gezeigt zu "local.properties" hinzugefügt werden.
echo ${ANDROID_REALSE_BASE64_KEY} | base64 -d > ./release-application-key
echo "RELEASE_STORE_FILE=`pwd`/release-application-key" >> ./local.properties
echo "RELEASE_STORE_PASSWORD=${ANDROID_REALSE_KEY_PASSWORD}" >> ./local.properties
echo "RELEASE_KEY_ALIAS=key0" >> ./local.properties
echo "RELEASE_KEY_PASSWORD=${ANDROID_REALSE_KEY_PASSWORD}" >> ./local.properties
Dies führt dazu, dass der Build mit dem Wert ausgeführt wird, der auf "local.properties" angewendet wird, wenn er in Github-Aktionen ausgeführt wird.
Durch Ausführen des folgenden Befehls [apk file](https://ja.wikipedia.org/wiki/APK_(%E3%83%95%E3%82%A1%E3%82%A4%E3%83%] Führen Sie "Release Build" durch, um AB% E5% BD% A2% E5% BC% 8F)) auszugeben.
./gradlew assembleRelease
Führen Sie als Nächstes den folgenden Befehl aus, um "Release Build" auszuführen, der [aab-Datei] ausgibt (https://developer.android.com/guide/app-bundle?hl=ja).
./gradlew bundleRelease
[Apk-Datei](https://ja.wikipedia.org/wiki/APK_(%E3%83%95%E3%82%A1%E3), nachdem sowohl "Debug Build" als auch "Release Build" den Build abgeschlossen haben % 82% A4% E3% 83% AB% E5% BD% A2% E5% BC% 8F)), aab-Datei Fügen Sie die folgenden Elemente hinzu, damit Sie verschiedene Artefakte herunterladen können, z
- uses: actions/upload-artifact@master
with:
name: outputs
path: app/build/outputs/
Auf diese Weise können Sie die Artefakte wie folgt herunterladen:
[apk-Datei](https://ja.wikipedia.org/wiki/APK_(%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E5%BD%A2%] E5% BC% 8F)) Ergebnisse sind output / apk / release / app-release.apk
, aab file Die Artefakte von befinden sich in output / bundle / release / app-release.aab
.
Hier geht es darum, wie mit Github-Aktionen automatisch native Android-Apps erstellt werden. Wenn Sie es so schnell wie möglich in das Projekt einführen möchten, lesen Sie bitte die folgenden Inhalte (kopieren Sie sie) und führen Sie sie ein.
Ich würde gerne hinzufügen.
Recommended Posts