mirror of
				https://git.tardis.systems/mirrors/yuzu
				synced 2025-10-31 10:44:49 +01:00 
			
		
		
		
	Merge pull request #12909 from t895/play-store-automation
ci: android: Play store publishing setup
This commit is contained in:
		
						commit
						c000a5ff09
					
				
							
								
								
									
										21
									
								
								.ci/scripts/android/eabuild.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								.ci/scripts/android/eabuild.sh
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,21 @@ | ||||
| #!/bin/bash -ex | ||||
| 
 | ||||
| # SPDX-FileCopyrightText: 2024 yuzu Emulator Project | ||||
| # SPDX-License-Identifier: GPL-3.0-or-later | ||||
| 
 | ||||
| export NDK_CCACHE="$(which ccache)" | ||||
| ccache -s | ||||
| 
 | ||||
| export ANDROID_KEYSTORE_FILE="${GITHUB_WORKSPACE}/ks.jks" | ||||
| base64 --decode <<< "${EA_PLAY_ANDROID_KEYSTORE_B64}" > "${ANDROID_KEYSTORE_FILE}" | ||||
| export ANDROID_KEY_ALIAS="${PLAY_ANDROID_KEY_ALIAS}" | ||||
| export ANDROID_KEYSTORE_PASS="${PLAY_ANDROID_KEYSTORE_PASS}" | ||||
| export SERVICE_ACCOUNT_KEY_PATH="${GITHUB_WORKSPACE}/sa.json" | ||||
| base64 --decode <<< "${EA_SERVICE_ACCOUNT_KEY_B64}" > "${SERVICE_ACCOUNT_KEY_PATH}" | ||||
| ./gradlew "publishEaReleaseBundle" | ||||
| 
 | ||||
| ccache -s | ||||
| 
 | ||||
| if [ ! -z "${ANDROID_KEYSTORE_B64}" ]; then | ||||
|     rm "${ANDROID_KEYSTORE_FILE}" | ||||
| fi | ||||
							
								
								
									
										21
									
								
								.ci/scripts/android/mainlinebuild.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								.ci/scripts/android/mainlinebuild.sh
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,21 @@ | ||||
| #!/bin/bash -ex | ||||
| 
 | ||||
| # SPDX-FileCopyrightText: 2024 yuzu Emulator Project | ||||
| # SPDX-License-Identifier: GPL-3.0-or-later | ||||
| 
 | ||||
| export NDK_CCACHE="$(which ccache)" | ||||
| ccache -s | ||||
| 
 | ||||
| export ANDROID_KEYSTORE_FILE="${GITHUB_WORKSPACE}/ks.jks" | ||||
| base64 --decode <<< "${MAINLINE_PLAY_ANDROID_KEYSTORE_B64}" > "${ANDROID_KEYSTORE_FILE}" | ||||
| export ANDROID_KEY_ALIAS="${PLAY_ANDROID_KEY_ALIAS}" | ||||
| export ANDROID_KEYSTORE_PASS="${PLAY_ANDROID_KEYSTORE_PASS}" | ||||
| export SERVICE_ACCOUNT_KEY_PATH="${GITHUB_WORKSPACE}/sa.json" | ||||
| base64 --decode <<< "${MAINLINE_SERVICE_ACCOUNT_KEY_B64}" > "${SERVICE_ACCOUNT_KEY_PATH}" | ||||
| ./gradlew "publishMainlineReleaseBundle" | ||||
| 
 | ||||
| ccache -s | ||||
| 
 | ||||
| if [ ! -z "${ANDROID_KEYSTORE_B64}" ]; then | ||||
|     rm "${ANDROID_KEYSTORE_FILE}" | ||||
| fi | ||||
							
								
								
									
										66
									
								
								.github/workflows/android-ea-play-release.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								.github/workflows/android-ea-play-release.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,66 @@ | ||||
| # SPDX-FileCopyrightText: 2024 yuzu Emulator Project | ||||
| # SPDX-License-Identifier: GPL-2.0-or-later | ||||
| 
 | ||||
| name: yuzu-android-ea-play-release | ||||
| 
 | ||||
| on: | ||||
|   workflow_dispatch: | ||||
|     inputs: | ||||
|       release-track: | ||||
|         description: 'Play store release track (internal/alpha/beta/production)' | ||||
|         required: true | ||||
|         default: 'alpha' | ||||
| 
 | ||||
| jobs: | ||||
|   android: | ||||
|     runs-on: ubuntu-latest | ||||
|     if: ${{ github.repository == 'yuzu-emu/yuzu' }} | ||||
|     steps: | ||||
|       - uses: actions/checkout@v3 | ||||
|         name: Checkout | ||||
|         with: | ||||
|           fetch-depth: 0 | ||||
|           submodules: true | ||||
|           token: ${{ secrets.ALT_GITHUB_TOKEN }} | ||||
|       - run: npm install execa@5 | ||||
|       - uses: actions/github-script@v5 | ||||
|         name: 'Merge and publish Android EA changes' | ||||
|         env: | ||||
|           ALT_GITHUB_TOKEN: ${{ secrets.ALT_GITHUB_TOKEN }} | ||||
|           BUILD_EA: true | ||||
|         with: | ||||
|           script: | | ||||
|             const execa = require("execa"); | ||||
|             const mergebot = require('./.github/workflows/android-merge.js').mergebot; | ||||
|             process.chdir('${{ github.workspace }}'); | ||||
|             mergebot(github, context, execa); | ||||
|       - name: Get tag name | ||||
|         run: echo "GIT_TAG_NAME=$(cat tag-name.txt)" >> $GITHUB_ENV | ||||
|       - name: Set up JDK 17 | ||||
|         uses: actions/setup-java@v3 | ||||
|         with: | ||||
|           java-version: '17' | ||||
|           distribution: 'temurin' | ||||
|       - name: Install dependencies | ||||
|         run: | | ||||
|           sudo apt-get update | ||||
|           sudo apt-get install -y ccache apksigner glslang-dev glslang-tools | ||||
|       - name: Build | ||||
|         run: ./.ci/scripts/android/eabuild.sh | ||||
|         env: | ||||
|           EA_PLAY_ANDROID_KEYSTORE_B64: ${{ secrets.PLAY_ANDROID_KEYSTORE_B64 }} | ||||
|           PLAY_ANDROID_KEY_ALIAS: ${{ secrets.PLAY_ANDROID_KEY_ALIAS }} | ||||
|           PLAY_ANDROID_KEYSTORE_PASS: ${{ secrets.PLAY_ANDROID_KEYSTORE_PASS }} | ||||
|           EA_SERVICE_ACCOUNT_KEY_B64: ${{ secrets.EA_SERVICE_ACCOUNT_KEY_B64 }} | ||||
|           STORE_TRACK: ${{ github.event.inputs.release-track }} | ||||
|           AUTO_VERSIONED: true | ||||
|           BUILD_EA: true | ||||
|       - name: Create release | ||||
|         uses: softprops/action-gh-release@v1 | ||||
|         with: | ||||
|           tag_name: ${{ env.EA_TAG_NAME }} | ||||
|           name: ${{ env.EA_TAG_NAME }} | ||||
|           draft: false | ||||
|           prerelease: false | ||||
|           repository: yuzu/yuzu-android | ||||
|           token: ${{ secrets.ALT_GITHUB_TOKEN }} | ||||
							
								
								
									
										59
									
								
								.github/workflows/android-mainline-play-release.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								.github/workflows/android-mainline-play-release.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,59 @@ | ||||
| # SPDX-FileCopyrightText: 2024 yuzu Emulator Project | ||||
| # SPDX-License-Identifier: GPL-2.0-or-later | ||||
| 
 | ||||
| name: yuzu-android-mainline-play-release | ||||
| 
 | ||||
| on: | ||||
|   workflow_dispatch: | ||||
|     inputs: | ||||
|       release-tag: | ||||
|         description: 'Tag # from yuzu-android that you want to build and publish' | ||||
|         required: true | ||||
|         default: '200' | ||||
|       release-track: | ||||
|         description: 'Play store release track (internal/alpha/beta/production)' | ||||
|         required: true | ||||
|         default: 'alpha' | ||||
| 
 | ||||
| jobs: | ||||
|   android: | ||||
|     runs-on: ubuntu-latest | ||||
|     if: ${{ github.repository == 'yuzu-emu/yuzu' }} | ||||
|     steps: | ||||
|       - uses: actions/checkout@v3 | ||||
|         name: Checkout | ||||
|         with: | ||||
|           fetch-depth: 0 | ||||
|           submodules: true | ||||
|           token: ${{ secrets.ALT_GITHUB_TOKEN }} | ||||
|       - run: npm install execa@5 | ||||
|       - uses: actions/github-script@v5 | ||||
|         name: 'Pull mainline tag' | ||||
|         env: | ||||
|           MAINLINE_TAG: ${{ github.event.inputs.release-tag }} | ||||
|         with: | ||||
|           script: | | ||||
|             const execa = require("execa"); | ||||
|             const mergebot = require('./.github/workflows/android-merge.js').getMainlineTag; | ||||
|             process.chdir('${{ github.workspace }}'); | ||||
|             mergebot(execa); | ||||
|       - name: Set up JDK 17 | ||||
|         uses: actions/setup-java@v3 | ||||
|         with: | ||||
|           java-version: '17' | ||||
|           distribution: 'temurin' | ||||
|       - name: Install dependencies | ||||
|         run: | | ||||
|           sudo apt-get update | ||||
|           sudo apt-get install -y ccache apksigner glslang-dev glslang-tools | ||||
|       - name: Build | ||||
|         run: | | ||||
|           echo "GIT_TAG_NAME=android-${{ github.event.inputs.releast-tag }}" >> $GITHUB_ENV | ||||
|           ./.ci/scripts/android/mainlinebuild.sh | ||||
|         env: | ||||
|           MAINLINE_PLAY_ANDROID_KEYSTORE_B64: ${{ secrets.PLAY_ANDROID_KEYSTORE_B64 }} | ||||
|           PLAY_ANDROID_KEY_ALIAS: ${{ secrets.PLAY_ANDROID_KEY_ALIAS }} | ||||
|           PLAY_ANDROID_KEYSTORE_PASS: ${{ secrets.PLAY_ANDROID_KEYSTORE_PASS }} | ||||
|           SERVICE_ACCOUNT_KEY_B64: ${{ secrets.MAINLINE_SERVICE_ACCOUNT_KEY_B64 }} | ||||
|           STORE_TRACK: ${{ github.event.inputs.release-track }} | ||||
|           AUTO_VERSIONED: true | ||||
							
								
								
									
										129
									
								
								.github/workflows/android-merge.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										129
									
								
								.github/workflows/android-merge.js
									
									
									
									
										vendored
									
									
								
							| @ -6,9 +6,12 @@ | ||||
| 
 | ||||
| const fs = require("fs"); | ||||
| // which label to check for changes
 | ||||
| const CHANGE_LABEL = 'android-merge'; | ||||
| const CHANGE_LABEL_MAINLINE = 'android-merge'; | ||||
| const CHANGE_LABEL_EA = 'android-ea-merge'; | ||||
| // how far back in time should we consider the changes are "recent"? (default: 24 hours)
 | ||||
| const DETECTION_TIME_FRAME = (parseInt(process.env.DETECTION_TIME_FRAME)) || (24 * 3600 * 1000); | ||||
| const BUILD_EA = process.env.BUILD_EA == 'true'; | ||||
| const MAINLINE_TAG = process.env.MAINLINE_TAG; | ||||
| 
 | ||||
| async function checkBaseChanges(github) { | ||||
|     // query the commit date of the latest commit on this branch
 | ||||
| @ -40,20 +43,7 @@ async function checkBaseChanges(github) { | ||||
| 
 | ||||
| async function checkAndroidChanges(github) { | ||||
|     if (checkBaseChanges(github)) return true; | ||||
|     const query = `query($owner:String!, $name:String!, $label:String!) {
 | ||||
|         repository(name:$name, owner:$owner) { | ||||
|             pullRequests(labels: [$label], states: OPEN, first: 100) { | ||||
|                 nodes { number headRepository { pushedAt } } | ||||
|             } | ||||
|         } | ||||
|     }`;
 | ||||
|     const variables = { | ||||
|         owner: 'yuzu-emu', | ||||
|         name: 'yuzu', | ||||
|         label: CHANGE_LABEL, | ||||
|     }; | ||||
|     const result = await github.graphql(query, variables); | ||||
|     const pulls = result.repository.pullRequests.nodes; | ||||
|     const pulls = getPulls(github, false); | ||||
|     for (let i = 0; i < pulls.length; i++) { | ||||
|         let pull = pulls[i]; | ||||
|         if (new Date() - new Date(pull.headRepository.pushedAt) <= DETECTION_TIME_FRAME) { | ||||
| @ -83,7 +73,13 @@ async function tagAndPush(github, owner, repo, execa, commit=false) { | ||||
|     }; | ||||
|     const tags = await github.graphql(query, variables); | ||||
|     const tagList = tags.repository.refs.nodes; | ||||
|     const lastTag = tagList[0] ? tagList[0].name : 'dummy-0'; | ||||
|     let lastTag = 'android-1'; | ||||
|     for (let i = 0; i < tagList.length; ++i) { | ||||
|         if (tagList[i].name.includes('android-')) { | ||||
|             lastTag = tagList[i].name; | ||||
|             break; | ||||
|         } | ||||
|     } | ||||
|     const tagNumber = /\w+-(\d+)/.exec(lastTag)[1] | 0; | ||||
|     const channel = repo.split('-')[1]; | ||||
|     const newTag = `${channel}-${tagNumber + 1}`; | ||||
| @ -101,6 +97,48 @@ async function tagAndPush(github, owner, repo, execa, commit=false) { | ||||
|     console.info('Successfully pushed new changes.'); | ||||
| } | ||||
| 
 | ||||
| async function tagAndPushEA(github, owner, repo, execa) { | ||||
|     let altToken = process.env.ALT_GITHUB_TOKEN; | ||||
|     if (!altToken) { | ||||
|         throw `Please set ALT_GITHUB_TOKEN environment variable. This token should have write access to ${owner}/${repo}.`; | ||||
|     } | ||||
|     const query = `query ($owner:String!, $name:String!) {
 | ||||
|         repository(name:$name, owner:$owner) { | ||||
|             refs(refPrefix: "refs/tags/", orderBy: {field: TAG_COMMIT_DATE, direction: DESC}, first: 10) { | ||||
|                 nodes { name } | ||||
|             } | ||||
|         } | ||||
|     }`;
 | ||||
|     const variables = { | ||||
|         owner: owner, | ||||
|         name: repo, | ||||
|     }; | ||||
|     const tags = await github.graphql(query, variables); | ||||
|     const tagList = tags.repository.refs.nodes; | ||||
|     let lastTag = 'ea-1'; | ||||
|     for (let i = 0; i < tagList.length; ++i) { | ||||
|         if (tagList[i].name.includes('ea-')) { | ||||
|             lastTag = tagList[i].name; | ||||
|             break; | ||||
|         } | ||||
|     } | ||||
|     const tagNumber = /\w+-(\d+)/.exec(lastTag)[1] | 0; | ||||
|     const newTag = `ea-${tagNumber + 1}`; | ||||
|     console.log(`New tag: ${newTag}`); | ||||
|     console.info('Pushing tags to GitHub ...'); | ||||
|     await execa("git", ["remote", "add", "android", "https://github.com/yuzu-emu/yuzu-android.git"]); | ||||
|     await execa("git", ["fetch", "android"]); | ||||
| 
 | ||||
|     await execa("git", ['tag', newTag]); | ||||
|     await execa("git", ['push', 'android', `${newTag}`]); | ||||
| 
 | ||||
|     fs.writeFile('tag-name.txt', newTag, (err) => { | ||||
|         if (err) throw 'Could not write tag name to file!' | ||||
|     }) | ||||
| 
 | ||||
|     console.info('Successfully pushed new changes.'); | ||||
| } | ||||
| 
 | ||||
| async function generateReadme(pulls, context, mergeResults, execa) { | ||||
|     let baseUrl = `https://github.com/${context.repo.owner}/${context.repo.repo}/`; | ||||
|     let output = | ||||
| @ -202,10 +240,7 @@ async function resetBranch(execa) { | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| async function mergebot(github, context, execa) { | ||||
|     // Reset our local copy of master to what appears on yuzu-emu/yuzu - master
 | ||||
|     await resetBranch(execa); | ||||
| 
 | ||||
| async function getPulls(github) { | ||||
|     const query = `query ($owner:String!, $name:String!, $label:String!) {
 | ||||
|         repository(name:$name, owner:$owner) { | ||||
|             pullRequests(labels: [$label], states: OPEN, first: 100) { | ||||
| @ -215,13 +250,49 @@ async function mergebot(github, context, execa) { | ||||
|             } | ||||
|         } | ||||
|     }`;
 | ||||
|     const variables = { | ||||
|     const mainlineVariables = { | ||||
|         owner: 'yuzu-emu', | ||||
|         name: 'yuzu', | ||||
|         label: CHANGE_LABEL, | ||||
|         label: CHANGE_LABEL_MAINLINE, | ||||
|     }; | ||||
|     const result = await github.graphql(query, variables); | ||||
|     const pulls = result.repository.pullRequests.nodes; | ||||
|     const mainlineResult = await github.graphql(query, mainlineVariables); | ||||
|     const pulls = mainlineResult.repository.pullRequests.nodes; | ||||
|     if (BUILD_EA) { | ||||
|         const eaVariables = { | ||||
|             owner: 'yuzu-emu', | ||||
|             name: 'yuzu', | ||||
|             label: CHANGE_LABEL_EA, | ||||
|         }; | ||||
|         const eaResult = await github.graphql(query, eaVariables); | ||||
|         const eaPulls = eaResult.repository.pullRequests.nodes; | ||||
|         return pulls.concat(eaPulls); | ||||
|     } | ||||
|     return pulls; | ||||
| } | ||||
| 
 | ||||
| async function getMainlineTag(execa) { | ||||
|     console.log(`::group::Getting mainline tag android-${MAINLINE_TAG}`); | ||||
|     let hasFailed = false; | ||||
|     try { | ||||
|         await execa("git", ["remote", "add", "mainline", "https://github.com/yuzu-emu/yuzu-android.git"]); | ||||
|         await execa("git", ["fetch", "mainline", "--tags"]); | ||||
|         await execa("git", ["checkout", `tags/android-${MAINLINE_TAG}`]); | ||||
|         await execa("git", ["submodule", "update", "--init", "--recursive"]); | ||||
|     } catch (err) { | ||||
|         console.log('::error title=Failed pull tag'); | ||||
|         hasFailed = true; | ||||
|     } | ||||
|     console.log("::endgroup::"); | ||||
|     if (hasFailed) { | ||||
|         throw 'Failed pull mainline tag. Aborting!'; | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| async function mergebot(github, context, execa) { | ||||
|     // Reset our local copy of master to what appears on yuzu-emu/yuzu - master
 | ||||
|     await resetBranch(execa); | ||||
| 
 | ||||
|     const pulls = await getPulls(github); | ||||
|     let displayList = []; | ||||
|     for (let i = 0; i < pulls.length; i++) { | ||||
|         let pull = pulls[i]; | ||||
| @ -231,11 +302,17 @@ async function mergebot(github, context, execa) { | ||||
|     console.table(displayList); | ||||
|     await fetchPullRequests(pulls, "https://github.com/yuzu-emu/yuzu", execa); | ||||
|     const mergeResults = await mergePullRequests(pulls, execa); | ||||
|     await generateReadme(pulls, context, mergeResults, execa); | ||||
|     await tagAndPush(github, 'yuzu-emu', `yuzu-android`, execa, true); | ||||
| 
 | ||||
|     if (BUILD_EA) { | ||||
|         await tagAndPushEA(github, 'yuzu-emu', `yuzu-android`, execa); | ||||
|     } else { | ||||
|         await generateReadme(pulls, context, mergeResults, execa); | ||||
|         await tagAndPush(github, 'yuzu-emu', `yuzu-android`, execa, true); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| module.exports.mergebot = mergebot; | ||||
| module.exports.checkAndroidChanges = checkAndroidChanges; | ||||
| module.exports.tagAndPush = tagAndPush; | ||||
| module.exports.checkBaseChanges = checkBaseChanges; | ||||
| module.exports.getMainlineTag = getMainlineTag; | ||||
|  | ||||
							
								
								
									
										4
									
								
								.github/workflows/android-publish.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.github/workflows/android-publish.yml
									
									
									
									
										vendored
									
									
								
							| @ -1,4 +1,4 @@ | ||||
| # SPDX-FileCopyrightText: 2023 yuzu Emulator Project | ||||
| # SPDX-FileCopyrightText: 2024 yuzu Emulator Project | ||||
| # SPDX-License-Identifier: GPL-2.0-or-later | ||||
| 
 | ||||
| name: yuzu-android-publish | ||||
| @ -16,7 +16,7 @@ on: | ||||
| jobs: | ||||
|   android: | ||||
|     runs-on: ubuntu-latest | ||||
|     if: ${{ github.event.inputs.android != 'false' && github.repository == 'yuzu-emu/yuzu-android' }} | ||||
|     if: ${{ github.event.inputs.android != 'false' && github.repository == 'yuzu-emu/yuzu' }} | ||||
|     steps: | ||||
|       # this checkout is required to make sure the GitHub Actions scripts are available | ||||
|       - uses: actions/checkout@v3 | ||||
|  | ||||
| @ -3,8 +3,8 @@ | ||||
| 
 | ||||
| import android.annotation.SuppressLint | ||||
| import kotlin.collections.setOf | ||||
| import org.jetbrains.kotlin.konan.properties.Properties | ||||
| import org.jlleitschuh.gradle.ktlint.reporter.ReporterType | ||||
| import com.github.triplet.gradle.androidpublisher.ReleaseStatus | ||||
| 
 | ||||
| plugins { | ||||
|     id("com.android.application") | ||||
| @ -13,6 +13,7 @@ plugins { | ||||
|     kotlin("plugin.serialization") version "1.9.20" | ||||
|     id("androidx.navigation.safeargs.kotlin") | ||||
|     id("org.jlleitschuh.gradle.ktlint") version "11.4.0" | ||||
|     id("com.github.triplet.play") version "3.8.6" | ||||
| } | ||||
| 
 | ||||
| /** | ||||
| @ -58,15 +59,7 @@ android { | ||||
|         targetSdk = 34 | ||||
|         versionName = getGitVersion() | ||||
| 
 | ||||
|         // If you want to use autoVersion for the versionCode, create a property in local.properties | ||||
|         // named "autoVersioned" and set it to "true" | ||||
|         val properties = Properties() | ||||
|         val versionProperty = try { | ||||
|             properties.load(project.rootProject.file("local.properties").inputStream()) | ||||
|             properties.getProperty("autoVersioned") ?: "" | ||||
|         } catch (e: Exception) { "" } | ||||
| 
 | ||||
|         versionCode = if (versionProperty == "true") { | ||||
|         versionCode = if (System.getenv("AUTO_VERSIONED") == "true") { | ||||
|             autoVersion | ||||
|         } else { | ||||
|             1 | ||||
| @ -221,6 +214,15 @@ ktlint { | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| play { | ||||
|     val keyPath = System.getenv("SERVICE_ACCOUNT_KEY_PATH") | ||||
|     if (keyPath != null) { | ||||
|         serviceAccountCredentials.set(File(keyPath)) | ||||
|     } | ||||
|     track.set(System.getenv("STORE_TRACK") ?: "internal") | ||||
|     releaseStatus.set(ReleaseStatus.COMPLETED) | ||||
| } | ||||
| 
 | ||||
| dependencies { | ||||
|     implementation("androidx.core:core-ktx:1.12.0") | ||||
|     implementation("androidx.appcompat:appcompat:1.6.1") | ||||
| @ -257,14 +259,13 @@ fun runGitCommand(command: List<String>): String { | ||||
| } | ||||
| 
 | ||||
| fun getGitVersion(): String { | ||||
|     val gitVersion = runGitCommand(listOf("git", "describe", "--always", "--long")) | ||||
|     val versionName = if (System.getenv("GITHUB_ACTIONS") != null) { | ||||
|         val gitTag = System.getenv("GIT_TAG_NAME") ?: "" | ||||
|         gitTag | ||||
|         System.getenv("GIT_TAG_NAME") ?: gitVersion | ||||
|     } else { | ||||
|         runGitCommand(listOf("git", "describe", "--always", "--long")) | ||||
|             .replace(Regex("(-0)?-[^-]+$"), "") | ||||
|         gitVersion | ||||
|     } | ||||
|     return versionName.ifEmpty { "0.0" } | ||||
|     return versionName.replace(Regex("(-0)?-[^-]+$"), "").ifEmpty { "0.0" } | ||||
| } | ||||
| 
 | ||||
| fun getGitHash(): String = | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user