Fix Google Play deploy #11628
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# This is a basic workflow to help you get started with Actions | |
name: Deploy | |
# Controls when the action will run. | |
on: | |
# Triggers the workflow on push or pull request events but only for the master branch | |
push: | |
tags: | |
- '*' # This doesn't mean that it HAS to have a tag, only that the workflow triggers when we push a tag | |
# Allows you to run this workflow manually from the Actions tab | |
workflow_dispatch: | |
jobs: | |
get-release-body: | |
runs-on: ubuntu-latest | |
outputs: | |
release_body: ${{ steps.read_release.outputs.release_body }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Read release.md and use it as a body of new release. This will fail for patch releases, since they have no readme. | |
continue-on-error: true | |
id: read_release | |
shell: bash | |
run: | | |
## To test this in Windows PS: cat .\changelog.md | wsl grep -Pzo --color '\\#{2}.3.15.7[^\\#]*?\\#{2}' | wsl head -n -2 | |
r=$(grep -Pzo '\#{2}.${{ github.ref_name }}[^\#]*\#' changelog.md) # grep to get only our release | |
# We replace all quotes in the readme with single quotes, so the whatsnew directory echo doesn't crash us | |
r=$(echo "$r" | tr '"' "'" | head -n -2 | tail -n +3) | |
## See https://trstringer.com/github-actions-multiline-strings/ | |
echo "--- Set variable manually in github env ---" | |
echo "release_body<<EOF" >> $GITHUB_OUTPUT | |
echo "$r" >> $GITHUB_OUTPUT | |
echo "EOF" >> $GITHUB_OUTPUT | |
build-jar: | |
runs-on: ubuntu-latest | |
needs: get-release-body | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-java@v4 | |
with: | |
distribution: 'temurin' | |
java-version: 17 | |
- name: Setup Android SDK | |
uses: android-actions/setup-android@v3 | |
- name: Setup Gradle | |
uses: gradle/actions/setup-gradle@v3 | |
- name: Compile kotlin and build classes | |
run: ./gradlew classes | |
- name: Run code checks | |
run: ./gradlew check | |
- name: Run unit tests | |
run: ./gradlew --no-build-cache cleanTest test tests:test | |
- name: build UncivServer.jar | |
continue-on-error: true | |
run: | | |
./gradlew desktop:dist | |
./gradlew desktop:zipLinuxFilesForJar | |
- name: Upload JAR | |
continue-on-error: true | |
uses: actions/upload-artifact@v4 | |
with: | |
name: UncivJar | |
path: | | |
desktop/build/libs/Unciv.jar | |
- name: Upload linux files | |
continue-on-error: true | |
uses: actions/upload-artifact@v4 | |
with: | |
name: UncivLinuxFiles | |
path: | | |
deploy/linuxFilesForJar.zip | |
- name: build UncivServer.jar | |
continue-on-error: true | |
run: | | |
./gradlew server:dist | |
- name: Upload Server | |
continue-on-error: true | |
uses: actions/upload-artifact@v4 | |
with: | |
name: UncivServer | |
path: server/build/libs/UncivServer.jar | |
android-build: | |
continue-on-error: true | |
runs-on: ubuntu-latest | |
needs: get-release-body | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-java@v4 | |
with: | |
distribution: 'temurin' | |
java-version: 17 | |
- name: Setup Android SDK | |
uses: android-actions/setup-android@v3 | |
- name: Setup Gradle | |
uses: gradle/actions/setup-gradle@v3 | |
- name: Prepare .aab (for Google Play) and .apk (for Github) files | |
shell: bash | |
run: | | |
mkdir whatsNewDirectory | |
echo "${{needs.get-release-body.outputs.release_body}}" > whatsNewDirectory/whatsnew-en-US | |
./gradlew :android:bundleRelease | |
./gradlew :android:assembleRelease | |
- name: Sign AAB for Google Play upload | |
uses: r0adkll/sign-android-release@v1 | |
with: | |
releaseDirectory: android/build/outputs/bundle/release | |
signingKeyBase64: ${{ secrets.BUNDLE_SIGNING_KEY_BASE64 }} | |
alias: ${{ secrets.BUNDLE_SIGNING_KEY_ALIAS }} | |
keyStorePassword: ${{ secrets.BUNDLE_SIGNING_KEYSTORE_PASSWORD }} | |
keyPassword: ${{ secrets.BUNDLE_SIGNING_KEY_PASSWORD }} | |
- name: Upload AAB to google play | |
uses: r0adkll/upload-google-play@v1.1.3 | |
continue-on-error: true | |
with: | |
serviceAccountJsonPlainText: ${{ secrets.GOOGLE_PLAY_SERVICE_ACCOUNT_JSON }} | |
packageName: com.unciv.app | |
releaseFiles: android/build/outputs/bundle/release/Unciv-release.aab | |
track: production | |
whatsNewDirectory: whatsNewDirectory | |
- name: Sign APK for Github upload | |
uses: r0adkll/sign-android-release@v1 | |
with: | |
releaseDirectory: android/build/outputs/apk/release | |
signingKeyBase64: ${{ secrets.BUNDLE_SIGNING_KEY_BASE64 }} | |
alias: ${{ secrets.BUNDLE_SIGNING_KEY_ALIAS }} | |
keyStorePassword: ${{ secrets.BUNDLE_SIGNING_KEYSTORE_PASSWORD }} | |
keyPassword: ${{ secrets.BUNDLE_SIGNING_KEY_PASSWORD }} | |
env: | |
BUILD_TOOLS_VERSION: "34.0.0" | |
- name: Move APK to deploy folder | |
shell: bash | |
run: | | |
mv android/build/outputs/apk/release/Unciv-release-unsigned-signed.apk Unciv-signed.apk | |
- name: Upload APK | |
uses: actions/upload-artifact@v4 | |
with: | |
name: UncivAPK | |
path: Unciv-signed.apk | |
packr-build: | |
runs-on: ubuntu-latest | |
needs: build-jar | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-java@v4 | |
with: | |
distribution: 'temurin' | |
java-version: 17 | |
- name: Setup Gradle | |
uses: gradle/actions/setup-gradle@v3 | |
- name: Download JAR | |
uses: actions/download-artifact@v4 | |
# See 'Upload JAR' step in 'build' job | |
with: | |
name: UncivJar | |
- name: Display structure of downloaded files | |
run: ls -R | |
- name: Packr build | |
run: | | |
mkdir -p desktop/build/libs | |
mv Unciv.jar desktop/build/libs | |
wget -q -O packr-all-4.0.0.jar https://github.com/libgdx/packr/releases/download/4.0.0/packr-all-4.0.0.jar | |
wget -q -O jre-linux-64.tar.gz https://api.adoptium.net/v3/binary/latest/11/ga/linux/x64/jre/hotspot/normal/eclipse | |
./gradlew desktop:packrLinux64 | |
wget -q -O jdk-windows-64.zip https://api.adoptium.net/v3/binary/latest/11/ga/windows/x64/jre/hotspot/normal/eclipse | |
./gradlew desktop:packrWindows64 | |
- name: Upload packed zips | |
uses: actions/upload-artifact@v4 | |
with: | |
name: UncivDeploymentZips | |
path: | | |
deploy/Unciv-Windows64.zip | |
deploy/Unciv-Linux64.zip | |
upload-to-itch: | |
runs-on: ubuntu-latest | |
needs: [packr-build] | |
continue-on-error: true | |
steps: | |
- name: Download packed zips | |
uses: actions/download-artifact@v4 | |
with: | |
name: UncivDeploymentZips | |
- name: Upload to itch.io | |
env: | |
BUTLER_API_KEY: ${{ secrets.BUTLER_API_KEY }} | |
run: | | |
wget -q -O butler.zip https://broth.itch.ovh/butler/linux-amd64/LATEST/archive/default | |
unzip butler.zip | |
chmod +x butler | |
./butler push Unciv-Linux64.zip yairm210/unciv:Linux64 --userversion ${{ github.ref_name }} | |
./butler push Unciv-Windows64.zip yairm210/unciv:Windows64 --userversion ${{ github.ref_name }} | |
upload-github-release-and-post-to-discord: | |
needs: [get-release-body, android-build, packr-build] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Download all artifacts | |
uses: actions/download-artifact@v4 | |
- name: consolidate deploy folder | |
run: | | |
mkdir deploy | |
mv UncivJar/Unciv.jar deploy | |
mv UncivLinuxFiles/linuxFilesForJar.zip deploy | |
mv UncivDeploymentZips/Unciv-Windows64.zip deploy | |
mv UncivDeploymentZips/Unciv-Linux64.zip deploy | |
mv UncivAPK/Unciv-signed.apk deploy | |
mv UncivServer/UncivServer.jar deploy | |
- name: Check if this is a real release or a test version, for Github release | |
id: check-version-tag | |
run: | | |
if [[ ${{ github.ref_name }} =~ [0-9]\.[0-9]+\.[0-9]+ ]]; then | |
echo "real_release=true" >> $GITHUB_OUTPUT | |
fi | |
- name: Upload binaries to Github release | |
continue-on-error: true | |
uses: svenstaro/upload-release-action@v2 | |
with: | |
repo_token: ${{ secrets.GITHUB_TOKEN }} | |
file: deploy/* | |
tag: ${{ github.ref }} | |
prerelease: ${{ steps.check-version-tag.outputs.real_release != 'true' }} | |
overwrite: true | |
file_glob: true | |
# <--- Use environment variables that was created earlier - see https://github.com/svenstaro/upload-release-action | |
# Single-quotes do not solve the multiline problem. | |
body: | | |
## ${{ github.ref_name }} | |
${{needs.get-release-body.outputs.release_body}} | |
- name: Post announcement on Discord | |
continue-on-error: true | |
## On patch releases, don't notify Discord | |
if: needs.get-release-body.outputs.release_body != '' | |
env: | |
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }} | |
uses: Ilshidur/action-discord@0.3.2 | |
with: | |
args: | # See https://discordjs.guide/miscellaneous/parsing-mention-arguments.html#how-discord-mentions-work | |
<@&663705024265715743> | |
*${{ github.ref_name }} rolling out!* | |
${{needs.get-release-body.outputs.release_body}} | |
AUR-update: | |
continue-on-error: true | |
runs-on: ubuntu-latest | |
needs: [get-release-body, upload-github-release-and-post-to-discord] | |
steps: | |
- name: Get AUR PKGBUILD | |
run: | | |
curl --silent --output PKGBUILD 'https://aur.archlinux.org/cgit/aur.git/plain/PKGBUILD?h=unciv-bin' | |
sed -E -e "s#(_pkgver=).*#\1${{ github.ref_name }}#" -e "s#(pkgrel=).*#\10#" -i PKGBUILD | |
- name: Publish AUR package | |
uses: Thyrum/github-actions-deploy-aur@master | |
with: | |
pkgname: unciv-bin | |
pkgbuild: ./PKGBUILD | |
commit_username: ${{ secrets.AUR_COMMIT_USERNAME }} | |
commit_email: ${{ secrets.AUR_COMMIT_EMAIL }} | |
ssh_private_key: ${{ secrets.AUR_SSH_PRIVATE_KEY }} | |
commit_message: | | |
Update to ${{ github.ref_name }} | |
${{needs.get-release-body.outputs.release_body}} | |
ssh_keyscan_types: rsa,dsa,ecdsa,ed25519 | |
updpkgsums: true | |
allow_empty_commits: false |