mirror of
https://github.com/r0adkll/sign-android-release
synced 2026-09-23 13:18:38 +00:00
148 lines
4.1 KiB
Markdown
148 lines
4.1 KiB
Markdown
# Sign Android Release Action
|
|
|
|
This action will help you sign an Android `.apk` or `.aab` (Android App Bundle) file for release.
|
|
|
|
## Inputs
|
|
|
|
### `releaseDirectory`
|
|
|
|
**Required:** The relative directory path in your project where your Android release file will be located
|
|
|
|
### `signingKeyBase64`
|
|
|
|
**Required:** The base64 encoded signing key used to sign your app
|
|
|
|
This action will directly decode this input to a file to sign your release with. You can prepare your key by running this command on *nix systems.
|
|
|
|
```bash
|
|
openssl base64 < some_signing_key.jks | tr -d '\n' | tee some_signing_key.jks.base64.txt
|
|
```
|
|
Then copy the contents of the `.txt` file to your GH secrets
|
|
|
|
### `alias`
|
|
|
|
**Required:** The alias of your signing key
|
|
|
|
### `keyStorePassword`
|
|
|
|
**Required:** The password to your signing keystore
|
|
|
|
### `keyPassword`
|
|
|
|
**Optional:** The private key password for your signing keystore
|
|
|
|
## ENV: `BUILD_TOOLS_VERSION`
|
|
|
|
**Optional:** You can manually specify a version of build-tools to use. We use `34.0.0` by default.
|
|
|
|
## Outputs
|
|
|
|
Output variables are set both locally and in environment variables.
|
|
|
|
### `signedReleaseFile`/ ENV: `SIGNED_RELEASE_FILE`
|
|
|
|
The path to the single release file that have been signed with this action.
|
|
Not set if several release files have been signed.
|
|
|
|
### `signedReleaseFiles` / ENV: `SIGNED_RELEASE_FILES`
|
|
|
|
The paths to the release files that have been signed with this action,
|
|
separated by `:`.
|
|
|
|
## Example usage
|
|
|
|
### Single APK
|
|
|
|
The output variable `signedReleaseFile` can be used in a release action.
|
|
|
|
```yaml
|
|
steps:
|
|
- uses: r0adkll/sign-android-release@v1
|
|
name: Sign app APK
|
|
# ID used to access action output
|
|
id: sign_app
|
|
with:
|
|
releaseDirectory: app/build/outputs/apk/release
|
|
signingKeyBase64: ${{ secrets.SIGNING_KEY }}
|
|
alias: ${{ secrets.ALIAS }}
|
|
keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }}
|
|
keyPassword: ${{ secrets.KEY_PASSWORD }}
|
|
env:
|
|
# override default build-tools version (33.0.0) -- optional
|
|
BUILD_TOOLS_VERSION: "34.0.0"
|
|
|
|
# Example use of `signedReleaseFile` output -- not needed
|
|
- uses: actions/upload-artifact@v2
|
|
with:
|
|
name: Signed app bundle
|
|
path: ${{steps.sign_app.outputs.signedReleaseFile}}
|
|
```
|
|
|
|
### Multiple APKs, multiple variables
|
|
|
|
The output variables `signedReleaseFileX`
|
|
can be used to refer to each signed release file.
|
|
|
|
```yaml
|
|
steps:
|
|
- uses: r0adkll/sign-android-release@v1
|
|
id: sign_app
|
|
with:
|
|
releaseDirectory: app/build/outputs/apk/release
|
|
signingKeyBase64: ${{ secrets.SIGNING_KEY }}
|
|
alias: ${{ secrets.ALIAS }}
|
|
keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }}
|
|
keyPassword: ${{ secrets.KEY_PASSWORD }}
|
|
|
|
- name: Example Release
|
|
uses: "marvinpinto/action-automatic-releases@latest"
|
|
with:
|
|
repo_token: "${{ secrets.GITHUB_TOKEN }}"
|
|
automatic_release_tag: "latest"
|
|
prerelease: true
|
|
title: "Release X"
|
|
files: |
|
|
${{ steps.sign_app.signedReleaseFile0 }}
|
|
${{ steps.sign_app.signedReleaseFile1 }}
|
|
${{ steps.sign_app.signedReleaseFile2 }}
|
|
${{ steps.sign_app.signedReleaseFile3 }}
|
|
${{ steps.sign_app.signedReleaseFile4 }}
|
|
```
|
|
|
|
### Multiple APKs, single variable
|
|
|
|
The output variable `signedReleaseFiles` must be split first,
|
|
before being used in a release action.
|
|
|
|
```yaml
|
|
steps:
|
|
- uses: r0adkll/sign-android-release@v1
|
|
id: sign_app
|
|
with:
|
|
releaseDirectory: app/build/outputs/apk/release
|
|
signingKeyBase64: ${{ secrets.SIGNING_KEY }}
|
|
alias: ${{ secrets.ALIAS }}
|
|
keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }}
|
|
keyPassword: ${{ secrets.KEY_PASSWORD }}
|
|
|
|
- uses: jungwinter/split@v1
|
|
id: signed_files
|
|
with:
|
|
msg: ${{ steps.sign_app.signedReleaseFiles }}
|
|
separator: ':'
|
|
|
|
- name: Example Release
|
|
uses: "marvinpinto/action-automatic-releases@latest"
|
|
with:
|
|
repo_token: "${{ secrets.GITHUB_TOKEN }}"
|
|
automatic_release_tag: "latest"
|
|
prerelease: true
|
|
title: "Release X"
|
|
files: |
|
|
${{ steps.signed_files._0 }}
|
|
${{ steps.signed_files._1 }}
|
|
${{ steps.signed_files._2 }}
|
|
${{ steps.signed_files._3 }}
|
|
${{ steps.signed_files._4 }}
|
|
```
|