7
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

GitHub ActionsでAABファイル生成のCDを構築する方法

Posted at

はじめに

GitHub Actionsを使い、AABファイルを生成するCDを構築します。

本記事で書かないこと

事前準備: ローカルでAABファイルを生成できるようにする

私が以前書いた記事を参考にして、ローカルでAABファイルを生成できるようにします。
https://qiita.com/uhooi/items/3bee37d763642c703738

キーストアのエンコード

2021/02/06現在、GitHubではファイルを安全に管理する方法がないため、機密ファイルは文字列に変換する必要があります。

キーストアをBase64形式でエンコードします。
ローカルで以下のコマンドを実行します。

$ base64 ./app/release.keystore

標準出力された内容から 改行を削除して コピーします。
Base64形式でエンコードした結果は常に同じなので、メモる必要はありません。

Repository secretsへの追加

以下をGitHubの安全な場所(Repository secrets)で保持します。

  • Base64形式でエンコードしたキーストア( ENCODED_RELEASE_KEYSTORE
  • 鍵のパスワード( RELEASE_KEYSTORE_KEY_PASSWORD
  • キーストアのパスワード( RELEASE_KEYSTORE_STORE_PASSWORD

スクリーンショット 2021-02-06 13.33.43.png

設定ファイルの紹介

設定ファイルの内容を上から順に紹介します。

name

GitHub ActionsでAndroidアプリのCIを構築する方法 と同様なので省略します。

generate-aab.yml
name: "Generate AAB"

on

GitHub ActionsでAndroidアプリのCIを構築する方法 と同様なので省略します。

私はリリースブランチのプッシュをトリガーにしています。

generate-aab.yml
on:
  push:
    branches:
      - release/*
    paths-ignore:
      - docs/**
      - README.md
      - LICENSE

jobs

今回はジョブを1つのみ用意しています。

generate-aab

AABファイルを生成するジョブです。

基本的にはローカルでAABファイルを生成するコマンドをそのまま実行しているだけなので、詳細は省略します。

リリース用のビルドなので、Gradleのキャッシュは使っていません。
アップロード時にAABファイルが存在しなかったらエラーにしています。

generate-aab.yml
jobs:
  generate-aab:
    runs-on: ubuntu-latest
    steps:
    # チェックアウト
    - uses: actions/checkout@v2

    # JDKのセットアップ
    - name: set up JDK 1.8
      uses: actions/setup-java@v1
      with:
        java-version: 1.8

    # 依存関係の出力
    - name: Displays the Android dependencies of the project
      run: ./gradlew androidDependencies

    # キーストアのデコード
    - name: Decode Keystore
      run: echo ${{ secrets.ENCODED_RELEASE_KEYSTORE }} | base64 --decode > ./app/release.keystore

    # AABの生成
    - name: Generate AAB
      run: ./gradlew :app:bundleRelease
      env:
        RELEASE_KEYSTORE_STORE_PASSWORD: ${{ secrets.RELEASE_KEYSTORE_STORE_PASSWORD }}
        RELEASE_KEYSTORE_KEY_PASSWORD: ${{ secrets.RELEASE_KEYSTORE_KEY_PASSWORD }}

    # AABのアップロード
    - name: Upload AAB Artifact
      uses: actions/upload-artifact@v2
      with:
        name: aab
        path: app/build/outputs/bundle/release/app-release.aab
        if-no-files-found: error

設定ファイルの全体図

最後に設定ファイルの全体図を載せます。

generate-aab.yml
name: "Generate AAB"

on:
  push:
    branches:
      - release/*
    paths-ignore:
      - docs/**
      - README.md
      - LICENSE

jobs:
  generate-aab:
    runs-on: ubuntu-latest
    steps:
    # チェックアウト
    - uses: actions/checkout@v2

    # JDKのセットアップ
    - name: set up JDK 1.8
      uses: actions/setup-java@v1
      with:
        java-version: 1.8

    # 依存関係の出力
    - name: Displays the Android dependencies of the project
      run: ./gradlew androidDependencies

    # キーストアのデコード
    - name: Decode Keystore
      run: echo ${{ secrets.ENCODED_RELEASE_KEYSTORE }} | base64 --decode > ./app/release.keystore

    # AABの生成
    - name: Generate AAB
      run: ./gradlew :app:bundleRelease
      env:
        RELEASE_KEYSTORE_STORE_PASSWORD: ${{ secrets.RELEASE_KEYSTORE_STORE_PASSWORD }}
        RELEASE_KEYSTORE_KEY_PASSWORD: ${{ secrets.RELEASE_KEYSTORE_KEY_PASSWORD }}

    # AABのアップロード
    - name: Upload AAB Artifact
      uses: actions/upload-artifact@v2
      with:
        name: aab
        path: app/build/outputs/bundle/release/app-release.aab
        if-no-files-found: error

おわりに

GitHub ActionsでAABファイルを生成できました!

参考リンク

7
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?