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