mirror of
https://github.com/whitechi73/OpenShamrock.git
synced 2024-08-14 13:12:17 +08:00
Shamrock
: 优化构建流程
This commit is contained in:
parent
420f11784d
commit
135a7c2f56
34
.github/workflows/build-apk.yml
vendored
34
.github/workflows/build-apk.yml
vendored
@ -13,24 +13,38 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
name: Build APK
|
name: Build Shamrock
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: actions/setup-java@v4.0.0
|
|
||||||
with:
|
with:
|
||||||
distribution: "temurin"
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Setup JDK 17
|
||||||
|
uses: actions/setup-java@v4.0.0
|
||||||
|
with:
|
||||||
java-version: 17
|
java-version: 17
|
||||||
cache: 'gradle'
|
distribution: "adopt"
|
||||||
|
|
||||||
- name: Setup cmake
|
- name: Cache Gradle Dependencies
|
||||||
run: |
|
uses: actions/cache@v3
|
||||||
echo "y" | sudo ${ANDROID_HOME}/tools/bin/sdkmanager --install "cmake;3.22.1" --sdk_root=${ANDROID_SDK_ROOT} &> /dev/null
|
with:
|
||||||
echo "sdk.dir=${ANDROID_HOME}" > local.properties
|
path: |
|
||||||
|
~/.gradle/caches
|
||||||
|
~/.gradle/wrapper
|
||||||
|
!~/.gradle/caches/build-cache-*
|
||||||
|
key: gradle-deps-core-${{ hashFiles('**/build.gradle.kts') }}
|
||||||
|
restore-keys: gradle-deps
|
||||||
|
|
||||||
- name: Setup Gradle
|
- name: Cache Gradle Build
|
||||||
uses: gradle/gradle-build-action@v2.10.0
|
uses: actions/cache@v3
|
||||||
|
with:
|
||||||
|
path: |
|
||||||
|
~/.gradle/caches/build-cache-*
|
||||||
|
~/.gradle/buildOutputCleanup/cache.properties
|
||||||
|
key: gradle-builds-core-${{ github.sha }}
|
||||||
|
restore-keys: gradle-builds
|
||||||
|
|
||||||
- name: Build with Gradle
|
- name: Build with Gradle
|
||||||
run: |
|
run: |
|
||||||
|
57
.github/workflows/codeql.yml
vendored
57
.github/workflows/codeql.yml
vendored
@ -1,57 +0,0 @@
|
|||||||
name: "CodeQL"
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [ "master" ]
|
|
||||||
pull_request:
|
|
||||||
branches: [ "master" ]
|
|
||||||
schedule:
|
|
||||||
- cron: '24 7 * * 4'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
analyze:
|
|
||||||
name: Analyze
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
timeout-minutes: 360
|
|
||||||
permissions:
|
|
||||||
actions: read
|
|
||||||
contents: read
|
|
||||||
security-events: write
|
|
||||||
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
language: [ 'cpp', 'java' ]
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout repository
|
|
||||||
uses: actions/checkout@v3.6.0
|
|
||||||
|
|
||||||
- name: Initialize CodeQL
|
|
||||||
uses: github/codeql-action/init@v2
|
|
||||||
with:
|
|
||||||
languages: ${{ matrix.language }}
|
|
||||||
|
|
||||||
- name: Setup JDK 17
|
|
||||||
uses: actions/setup-java@v3.12.0
|
|
||||||
with:
|
|
||||||
distribution: "temurin"
|
|
||||||
java-version: 17
|
|
||||||
|
|
||||||
- name: Setup Gradle
|
|
||||||
uses: gradle/gradle-build-action@v2.8.0
|
|
||||||
|
|
||||||
- name: Setup cmake
|
|
||||||
run: |
|
|
||||||
echo "y" | sudo ${ANDROID_HOME}/tools/bin/sdkmanager --install "cmake;3.22.1" --sdk_root=${ANDROID_SDK_ROOT} &> /dev/null
|
|
||||||
echo "sdk.dir=${ANDROID_HOME}" > local.properties
|
|
||||||
|
|
||||||
- name: Build
|
|
||||||
run: |
|
|
||||||
chmod +x ./gradlew
|
|
||||||
./gradlew :app:assembleAppRelease
|
|
||||||
|
|
||||||
- name: Perform CodeQL Analysis
|
|
||||||
uses: github/codeql-action/analyze@v2
|
|
||||||
with:
|
|
||||||
category: "/language:${{matrix.language}}"
|
|
73
.github/workflows/release.yml
vendored
73
.github/workflows/release.yml
vendored
@ -1,73 +0,0 @@
|
|||||||
name: Shamrock Release
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
tags:
|
|
||||||
- 'v*'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
name: Release
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
- uses: actions/setup-java@v3
|
|
||||||
with:
|
|
||||||
distribution: "temurin"
|
|
||||||
java-version: 17
|
|
||||||
cache: 'gradle'
|
|
||||||
|
|
||||||
- name: Setup cmake
|
|
||||||
run: |
|
|
||||||
echo "y" | sudo ${ANDROID_HOME}/tools/bin/sdkmanager --install "cmake;3.22.1" --sdk_root=${ANDROID_SDK_ROOT} &> /dev/null
|
|
||||||
echo "sdk.dir=${ANDROID_HOME}" > local.properties
|
|
||||||
|
|
||||||
- name: Setup Gradle
|
|
||||||
uses: gradle/gradle-build-action@v2.9.0
|
|
||||||
|
|
||||||
- name: Build with Gradle
|
|
||||||
run: |
|
|
||||||
echo ${{ secrets.SIGN_KEYSTORE_BASE64 }} | base64 -d > keystore.jks
|
|
||||||
chmod +x ./gradlew
|
|
||||||
./gradlew :app:assembleRelease --build-cache --parallel --daemon --warning-mode all --stacktrace
|
|
||||||
echo "APK_FILE_ALL=$(find app/build/outputs/apk/app/release -name '*.apk')" >> $GITHUB_ENV
|
|
||||||
echo "APK_FILE_ARM64=$(find app/build/outputs/apk/arm64/release -name '*.apk')" >> $GITHUB_ENV
|
|
||||||
echo "APK_FILE_X86_64=$(find app/build/outputs/apk/x64/release -name '*.apk')" >> $GITHUB_ENV
|
|
||||||
env:
|
|
||||||
KEYSTORE_PATH: "../keystore.jks"
|
|
||||||
KEYSTORE_PASSWORD: ${{ secrets.SIGN_KEYSTORE_PASSWORD }}
|
|
||||||
KEY_ALIAS: ${{ secrets.SIGN_ALIAS }}
|
|
||||||
KEY_PASSWORD: ${{ secrets.SIGN_KEY_PASSWORD }}
|
|
||||||
|
|
||||||
- name: Install aapt
|
|
||||||
run: sudo apt-get update && sudo apt-get install -y aapt
|
|
||||||
|
|
||||||
- name: Set Shamrock Version
|
|
||||||
run: |
|
|
||||||
apk_file=${{ env.APK_FILE_ALL }}
|
|
||||||
apk_dump=$(aapt dump badging "$apk_file")
|
|
||||||
version_name=$(sed -n "s/.*versionName='\([^']*\)'.*/\1/p" <<< "$apk_dump")
|
|
||||||
echo "SHAMROCK_VERSION=$version_name" >> $GITHUB_ENV
|
|
||||||
|
|
||||||
- name: Show Artifacts SHA256
|
|
||||||
run: |
|
|
||||||
echo "### Build Success :rocket:" >> $GITHUB_STEP_SUMMARY
|
|
||||||
echo "|ABI|SHA256|" >> $GITHUB_STEP_SUMMARY
|
|
||||||
echo "|:--------:|:----------|" >> $GITHUB_STEP_SUMMARY
|
|
||||||
all=($(sha256sum ${{ env.APK_FILE_ALL }}))
|
|
||||||
echo "|all|$all" >> $GITHUB_STEP_SUMMARY
|
|
||||||
arm64=($(sha256sum ${{ env.APK_FILE_ARM64 }}))
|
|
||||||
echo "|arm64|$arm64" >> $GITHUB_STEP_SUMMARY
|
|
||||||
x86_64=($(sha256sum ${{ env.APK_FILE_X86_64 }}))
|
|
||||||
echo "|x86_64|$x86_64" >> $GITHUB_STEP_SUMMARY
|
|
||||||
|
|
||||||
- name: Release
|
|
||||||
uses: marvinpinto/action-automatic-releases@latest
|
|
||||||
with:
|
|
||||||
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
automatic_release_tag: Shamrock v${{ env.SHAMROCK_VERSION }}
|
|
||||||
files: |
|
|
||||||
${{ env.APK_FILE_ALL }}
|
|
||||||
${{ env.APK_FILE_ARM64 }}
|
|
||||||
${{ env.APK_FILE_X86_64 }}
|
|
@ -1,12 +1,5 @@
|
|||||||
import com.android.build.api.dsl.ApplicationExtension
|
import com.android.build.api.dsl.ApplicationExtension
|
||||||
|
import java.io.ByteArrayOutputStream
|
||||||
fun gitCommitHash(): String {
|
|
||||||
val builder = ProcessBuilder("git", "rev-parse", "--short", "HEAD")
|
|
||||||
val process = builder.start()
|
|
||||||
val reader = process.inputReader()
|
|
||||||
val hash = reader.readText().trim()
|
|
||||||
return if (hash.isNotEmpty()) ".$hash" else ""
|
|
||||||
}
|
|
||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
id("com.android.application")
|
id("com.android.application")
|
||||||
@ -17,19 +10,20 @@ plugins {
|
|||||||
android {
|
android {
|
||||||
namespace = "moe.fuqiuluo.shamrock"
|
namespace = "moe.fuqiuluo.shamrock"
|
||||||
ndkVersion = "25.1.8937393"
|
ndkVersion = "25.1.8937393"
|
||||||
compileSdk = 33
|
compileSdk = 34
|
||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
applicationId = "moe.fuqiuluo.shamrock"
|
applicationId = "moe.fuqiuluo.shamrock"
|
||||||
minSdk = 24
|
minSdk = 27
|
||||||
targetSdk = 33
|
targetSdk = 34
|
||||||
versionCode = (System.currentTimeMillis() / 1000).toInt()
|
versionCode = getVersionCode()
|
||||||
versionName = "1.0.7-dev" + gitCommitHash()
|
versionName = "1.0.7" + ".r${getGitCommitCount()}." + getVersionName()
|
||||||
|
|
||||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||||
vectorDrawables {
|
vectorDrawables {
|
||||||
useSupportLibrary = true
|
useSupportLibrary = true
|
||||||
}
|
}
|
||||||
|
@Suppress("UnstableApiUsage")
|
||||||
externalNativeBuild {
|
externalNativeBuild {
|
||||||
cmake {
|
cmake {
|
||||||
cppFlags += ""
|
cppFlags += ""
|
||||||
@ -50,8 +44,7 @@ android {
|
|||||||
android.applicationVariants.all {
|
android.applicationVariants.all {
|
||||||
outputs.map { it as com.android.build.gradle.internal.api.BaseVariantOutputImpl }
|
outputs.map { it as com.android.build.gradle.internal.api.BaseVariantOutputImpl }
|
||||||
.forEach {
|
.forEach {
|
||||||
val abi = it.outputFileName.split("-")[1].split(".apk")[0]
|
val abiName = when (val abi = it.outputFileName.split("-")[1].split(".apk")[0]) {
|
||||||
val abiName = when (abi) {
|
|
||||||
"app" -> "all"
|
"app" -> "all"
|
||||||
"x64" -> "x86_64"
|
"x64" -> "x86_64"
|
||||||
else -> abi
|
else -> abi
|
||||||
@ -154,9 +147,38 @@ fun configureAppSigningConfigsForRelease(project: Project) {
|
|||||||
release {
|
release {
|
||||||
signingConfig = signingConfigs.findByName("release")
|
signingConfig = signingConfigs.findByName("release")
|
||||||
}
|
}
|
||||||
|
debug {
|
||||||
|
signingConfig = signingConfigs.findByName("release")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getGitCommitCount(): Int {
|
||||||
|
val out = ByteArrayOutputStream()
|
||||||
|
exec {
|
||||||
|
commandLine("git", "rev-list", "--count", "HEAD")
|
||||||
|
standardOutput = out
|
||||||
|
}
|
||||||
|
return out.toString().trim().toInt()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getGitCommitHash(): String {
|
||||||
|
val out = ByteArrayOutputStream()
|
||||||
|
exec {
|
||||||
|
commandLine("git", "rev-parse", "--short", "HEAD")
|
||||||
|
standardOutput = out
|
||||||
|
}
|
||||||
|
return out.toString().trim()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getVersionCode(): Int {
|
||||||
|
return (System.currentTimeMillis() / 1000L).toInt()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getVersionName(): String {
|
||||||
|
return getGitCommitHash()
|
||||||
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation("androidx.core:core-ktx:1.9.0")
|
implementation("androidx.core:core-ktx:1.9.0")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user