2
3

More than 1 year has passed since last update.

[Android] Github Actionsでリリースビルド

Last updated at Posted at 2023-09-29

こちらで、PR時のビルドチェックを記載しましたが、リリースビルドする方法も記事にしたいと思います。

準備

準備として、Githubの設定で、Actions secrets and variablesのsecretsにkey情報を保存します。
保存する情報としては、下記になります。
KEY_ALIAS
KEY_PASSWORD
STORE_PASSWORD
KEYSTORE_BASE64

KEYSTORE_BASE64は、署名書をbase64に変換した文字列を格納します。
下記のコマンドを実施して表示された文字列を保存してください。

cat release.keystore | base64

Github Actions

name: Tag Release

on:
  workflow_dispatch:
    inputs:
      tag:
        required: true

permissions:
  actions: read

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - name: Setup JDK
        uses: actions/setup-java@v3
        with:
          distribution: adopt
          java-version: 17
          cache: gradle
      - name: Setup Gradle
        uses: gradle/gradle-build-action@v2
      - name: Run
        run: echo "${{ secrets.KEYSTORE_BASE64 }}" | base64 -d > ./keystore.jks
      - name: Build With Gradle
        env:
          KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
          KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
          STORE_PASSWORD: ${{ secrets.STORE_PASSWORD }}
        run: |
          ./gradlew assembleRelease --no-daemon
      - name: Release
        uses: softprops/action-gh-release@v1
        with:
          name: ${{ github.event.inputs.tag }}
          body: ${{ github.event.inputs.tag }}
          tag_name: ${{ github.event.inputs.tag }}

説明

  • workflow_dispatchは、Actionsから直接入力するようにします。こちらでは、タグ名を入力するようにしています。
on:
  workflow_dispatch:
    inputs:
      tag:
        required: true
  • secretsで設定したKEYSTORE_BASE64をjksファイルに保存します。
      - name: Run
        run: echo "${{ secrets.KEYSTORE_BASE64 }}" | base64 -d > ./keystore.jks
  • secretsで設定した値をGithub Actionsの環境変数に書き込みます。
      - name: Build With Gradle
        env:
          KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
          KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
          STORE_PASSWORD: ${{ secrets.STORE_PASSWORD }}
        run: |
          ./gradlew assembleRelease --no-daemon
  • Githubのタグを作成します。
      - name: Release
        uses: softprops/action-gh-release@v1
        with:
          name: ${{ github.event.inputs.tag }}
          body: ${{ github.event.inputs.tag }}
          tag_name: ${{ github.event.inputs.tag }}

Gradle

Gradle側でも設定を行います。
Gradleで、ビルドした際にGithub Actionsの環境変数を読み取ります。

build.gradle.kts
    signingConfigs {
        create("release") {
            storeFile = File(rootProject.projectDir, "keystore.jks")
            keyAlias = System.getenv("KEY_ALIAS")
            keyPassword = System.getenv("KEY_PASSWORD")
            storePassword = System.getenv("STORE_PASSWORD")
        }
    }

    buildTypes {
        release {
            isMinifyEnabled = false
            signingConfig = signingConfigs.getByName("release")
            proguardFiles(
                getDefaultProguardFile("proguard-android-optimize.txt"),
                "proguard-rules.pro"
            )
        }
    }

Githubで、タグを作成してもビルドをしてくれる訳ではないので、こちらでビルドとタグ作成をまとめて行えると便利になりますので、参考にしていただければと思います。

2
3
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
2
3