正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

チュートリアル: GitLab Mobile DevOpsでAndroidアプリをビルドする

このチュートリアルでは、GitLab CI/CDを使用してAndroidモバイルアプリをビルドし、認証情報で署名し、アプリストアに配布するパイプラインを作成します。

モバイルDevOpsをセットアップするには、次の手順を実行します:

  1. ビルド環境をセットアップする
  2. fastlaneとGradleでコード署名を構成する
  3. Google Playのインテグレーションとfastlaneを使用してAndroidアプリの配布をセットアップする

はじめる前

このチュートリアルを開始する前に、以下を確認してください:

  • CI/CDパイプラインにアクセスできるGitLabアカウント
  • GitLabリポジトリ内のモバイルアプリコード
  • Google Playデベロッパーアカウント
  • fastlaneをローカルにインストール

ビルド環境をセットアップする

GitLabホストされたRunnerを使用するか、自己管理Runnerをセットアップして、ビルド環境を完全に制御します。

Androidのビルドでは、複数のAndroid APIバージョンを提供するDockerイメージを使用します。

  1. .gitlab-ci.ymlファイルをリポジトリのルートに作成します。

  2. FabernovelからDockerイメージを追加します:

    test:
      image: fabernovel/android:api-33-v1.7.0
      stage: test
      script:
        - fastlane test

fastlaneとGradleでコード署名を構成する

Androidのコード署名をセットアップするには、次の手順を実行します:

  1. キーストアを作成します:

    1. 次のコマンドを実行してキーストアファイルを生成します:

      keytool -genkey -v -keystore release-keystore.jks -storepass password -alias release -keypass password \
      -keyalg RSA -keysize 2048 -validity 10000
    2. キーストア設定をrelease-keystore.propertiesファイルに配置します:

      storeFile=.secure_files/release-keystore.jks
      keyAlias=release
      keyPassword=password
      storePassword=password
    3. 両方のファイルをプロジェクト設定のセキュアファイルとしてアップロードします。

    4. 両方のファイルを.gitignoreファイルに追加して、バージョン管理にコミットされないようにします。

  2. 新しく作成したキーストアを使用するようにGradleを構成します。アプリのbuild.gradleファイルで:

    1. [プラグイン]セクションの直後に追加します:

      def keystoreProperties = new Properties()
      def keystorePropertiesFile = rootProject.file('.secure_files/release-keystore.properties')
      if (keystorePropertiesFile.exists()) {
        keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
      }
    2. androidブロック内の任意の場所に追加します:

      signingConfigs {
        release {
          keyAlias keystoreProperties['keyAlias']
          keyPassword keystoreProperties['keyPassword']
          storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
          storePassword keystoreProperties['storePassword']
        }
      }
    3. 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ストアにアップロードできます。

  1. Google Cloud PlatformでGoogleサービスアカウントを作成し、そのアカウントにGoogle Playのプロジェクトへのアクセス権を付与します。
  2. Google Playインテグレーションを有効にします:
    1. 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。
    2. 設定 > インテグレーションを選択します。
    3. Google Playを選択します。
    4. インテグレーションを有効にするで、有効チェックボックスをオンにします。
    5. Package name(パッケージ名)に、アプリのパッケージ名を入力します。たとえばcom.gitlab.app_nameなどです。
    6. **サービスアカウントキー (.json)**で、キーファイルをドラッグまたはアップロードします。
    7. 変更を保存を選択します。
  3. リリースステップをパイプラインに追加します。

以下は、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セクションを参照してください。