チュートリアル: GitLab Mobile DevOpsでAndroidアプリをビルドする
このチュートリアルでは、GitLab CI/CDを使用してAndroidモバイルアプリをビルドし、認証情報で署名し、アプリストアに配布するパイプラインを作成します。
モバイルDevOpsをセットアップするには、次の手順を実行します:
はじめる前
このチュートリアルを開始する前に、以下を確認してください:
- CI/CDパイプラインにアクセスできるGitLabアカウント
- GitLabリポジトリ内のモバイルアプリコード
- Google Playデベロッパーアカウント
fastlaneをローカルにインストール
ビルド環境をセットアップする
GitLabホストされたRunnerを使用するか、自己管理Runnerをセットアップして、ビルド環境を完全に制御します。
Androidのビルドでは、複数のAndroid APIバージョンを提供するDockerイメージを使用します。
.gitlab-ci.ymlファイルをリポジトリのルートに作成します。FabernovelからDockerイメージを追加します:
test: image: fabernovel/android:api-33-v1.7.0 stage: test script: - fastlane test
fastlaneとGradleでコード署名を構成する
Androidのコード署名をセットアップするには、次の手順を実行します:
キーストアを作成します:
次のコマンドを実行してキーストアファイルを生成します:
keytool -genkey -v -keystore release-keystore.jks -storepass password -alias release -keypass password \ -keyalg RSA -keysize 2048 -validity 10000キーストア設定を
release-keystore.propertiesファイルに配置します:storeFile=.secure_files/release-keystore.jks keyAlias=release keyPassword=password storePassword=password両方のファイルをプロジェクト設定のセキュアファイルとしてアップロードします。
両方のファイルを
.gitignoreファイルに追加して、バージョン管理にコミットされないようにします。
新しく作成したキーストアを使用するようにGradleを構成します。アプリの
build.gradleファイルで:[プラグイン]セクションの直後に追加します:
def keystoreProperties = new Properties() def keystorePropertiesFile = rootProject.file('.secure_files/release-keystore.properties') if (keystorePropertiesFile.exists()) { keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) }androidブロック内の任意の場所に追加します:signingConfigs { release { keyAlias keystoreProperties['keyAlias'] keyPassword keystoreProperties['keyPassword'] storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null storePassword keystoreProperties['storePassword'] } }signingConfigをリリースビルドタイプに追加します:signingConfig signingConfigs.release
以下は、この設定を含むfastlane/Fastfileファイルと.gitlab-ci.ymlファイルのサンプルです:
fastlane/Fastfile:default_platform(:android) platform :android do desc "Create and sign a new build" lane :build do gradle(tasks: ["clean", "assembleRelease", "bundleRelease"]) end end.gitlab-ci.yml:build: image: fabernovel/android:api-33-v1.7.0 stage: build script: - apt update -y && apt install -y curl - wget https://gitlab.com/gitlab-org/cli/-/releases/v1.74.0/downloads/glab_1.74.0_linux_amd64.deb - apt install ./glab_1.74.0_linux_amd64.deb - glab auth login --hostname $CI_SERVER_FQDN --job-token $CI_JOB_TOKEN - glab securefile download --all --output-dir .secure_files/ - fastlane build
Google PlayインテグレーションとfastlaneでAndroidアプリの配布をセットアップする
署名付きビルドは、モバイルDevOps配信インテグレーションを使用して、Google Playストアにアップロードできます。
- Google Cloud PlatformでGoogleサービスアカウントを作成し、そのアカウントにGoogle Playのプロジェクトへのアクセス権を付与します。
- Google Playインテグレーションを有効にします:
- 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。
- 設定 > インテグレーションを選択します。
- Google Playを選択します。
- インテグレーションを有効にするで、有効チェックボックスをオンにします。
- Package name(パッケージ名)に、アプリのパッケージ名を入力します。たとえば
com.gitlab.app_nameなどです。 - **サービスアカウントキー (.json)**で、キーファイルをドラッグまたはアップロードします。
- 変更を保存を選択します。
- リリースステップをパイプラインに追加します。
以下は、fastlane/Fastfileのサンプルです:
default_platform(:android)
platform :android do
desc "Submit a new Beta build to the Google Play store"
lane :beta do
upload_to_play_store(
track: 'internal',
aab: 'app/build/outputs/bundle/release/app-release.aab',
release_status: 'draft'
)
end
end以下は、.gitlab-ci.ymlのサンプルです:
beta:
image: fabernovel/android:api-33-v1.7.0
stage: beta
script:
- fastlane beta概要については、Google Playインテグレーションのデモをご覧ください。
おつかれさまでした。これで、アプリは自動ビルド、署名、および配布用にセットアップされました。最初のパイプラインをトリガーするマージリクエストを作成してみてください。
関連トピック
完全なビルド、署名、およびリリースパイプラインの例については、モバイルDevOps Androidデモプロジェクトを参照してください。
その他の参照資料については、GitLabブログのDevOpsセクションを参照してください。