Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0153e90bf0 | ||
|
|
d4f8fe83f5 | ||
|
|
d28b1e4094 | ||
|
|
cd2de0136a |
114
.github/workflows/auto_release.yml
vendored
Normal file
114
.github/workflows/auto_release.yml
vendored
Normal file
@@ -0,0 +1,114 @@
|
|||||||
|
name: Build automatic release
|
||||||
|
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: '0 0 * * *'
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
check:
|
||||||
|
runs-on: ubuntu-24.04
|
||||||
|
outputs:
|
||||||
|
should_build: ${{ steps.check-updates.outputs.has_changes }}
|
||||||
|
steps:
|
||||||
|
- name: Check for updates 🌏
|
||||||
|
id: check-updates
|
||||||
|
run: |
|
||||||
|
last_run=$(curl -s "https://api.github.com/repos/${{ github.repository }}/releases/latest" | jq -r '.created_at')
|
||||||
|
kotatsu_updated=$(curl -s "https://api.github.com/repos/KotatsuApp/Kotatsu/commits?since=$last_run" | jq '. | length')
|
||||||
|
parsers_updated=$(curl -s "https://api.github.com/repos/KotatsuApp/kotatsu-parsers/commits?since=$last_run" | jq '. | length')
|
||||||
|
if [ "$kotatsu_updated" -gt "0" ] || [ "$parsers_updated" -gt "0" ]; then
|
||||||
|
echo "has_changes=true" >> $GITHUB_OUTPUT
|
||||||
|
else
|
||||||
|
echo "has_changes=false" >> $GITHUB_OUTPUT
|
||||||
|
fi
|
||||||
|
|
||||||
|
build:
|
||||||
|
needs: check
|
||||||
|
if: needs.check.outputs.should_build == 'true'
|
||||||
|
runs-on: ubuntu-24.04
|
||||||
|
outputs:
|
||||||
|
new_tag: ${{ steps.tagger.outputs.new_tag }}
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
ref: autobuild
|
||||||
|
|
||||||
|
- uses: actions/setup-java@v4
|
||||||
|
with:
|
||||||
|
distribution: 'temurin'
|
||||||
|
java-version: '17'
|
||||||
|
cache: 'gradle'
|
||||||
|
|
||||||
|
- name: Setup Android SDK 💻
|
||||||
|
uses: android-actions/setup-android@v3
|
||||||
|
|
||||||
|
- name: Grant permissions 💻
|
||||||
|
run: chmod a+x gradlew
|
||||||
|
|
||||||
|
- name: Generate build number 📆
|
||||||
|
id: tagger
|
||||||
|
run: |
|
||||||
|
echo "new_tag=$(./gradlew -q versionInfo -DbuildNumberIncrement=true)" >> $GITHUB_OUTPUT
|
||||||
|
echo "formatted_date=$(date +'%Y/%m/%d')" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
- name: Decode Keystore
|
||||||
|
id: decode_keystore
|
||||||
|
uses: timheuer/base64-to-file@v1
|
||||||
|
with:
|
||||||
|
fileName: 'keystore/kotatsu.jks'
|
||||||
|
encodedString: ${{ secrets.ANDROID_SIGNING_KEY }}
|
||||||
|
|
||||||
|
- name: Building new APK 💻
|
||||||
|
run: >-
|
||||||
|
./gradlew assembleRelease
|
||||||
|
-DparsersVersionOverride=$(curl -s https://api.github.com/repos/kotatsuapp/kotatsu-parsers/commits/master -H "Accept: application/vnd.github.sha" | cut -c -10)
|
||||||
|
|
||||||
|
- name: Prepare to Upload 🌏
|
||||||
|
run: |
|
||||||
|
mv ${{steps.sign_app.outputs.signedFile}} app/build/outputs/apk/release/release.apk
|
||||||
|
echo "SIGNED_APK=app/build/outputs/apk/release/release.apk" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: Get latest changes 📑
|
||||||
|
id: changelog
|
||||||
|
run: |
|
||||||
|
CHANGELOG=$(cat CHANGELOG.txt)
|
||||||
|
echo "content<<EOF" >> $GITHUB_OUTPUT
|
||||||
|
echo "$CHANGELOG" >> $GITHUB_OUTPUT
|
||||||
|
echo "EOF" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
- name: Create new GH Release + Uploading 🌏
|
||||||
|
uses: softprops/action-gh-release@v2
|
||||||
|
with:
|
||||||
|
tag_name: v${{ steps.tagger.outputs.new_tag }}
|
||||||
|
name: "Build ${{ steps.tagger.outputs.new_tag }}"
|
||||||
|
body: |
|
||||||
|
Automated build generated on ${{ steps.tagger.outputs.formatted_date }}
|
||||||
|
|
||||||
|
${{ steps.changelog.outputs.content }}
|
||||||
|
files: ${{ env.SIGNED_APK }}
|
||||||
|
prerelease: false
|
||||||
|
|
||||||
|
update:
|
||||||
|
needs: build
|
||||||
|
if: needs.check.outputs.should_build == 'true'
|
||||||
|
runs-on: ubuntu-24.04
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
ref: autobuild
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Commit 🌏
|
||||||
|
run: |
|
||||||
|
git config --local user.email "autorelease@users.noreply.github.com"
|
||||||
|
git config --local user.name "autorelease"
|
||||||
|
if [[ -n $(git status -s) ]]; then
|
||||||
|
git add README.md
|
||||||
|
git commit -m "Automatic release v${{ needs.build.outputs.new_tag }}"
|
||||||
|
git push origin autobuild
|
||||||
|
else
|
||||||
|
echo "No changes to push!"
|
||||||
|
fi
|
||||||
@@ -9,17 +9,24 @@ plugins {
|
|||||||
id 'dagger.hilt.android.plugin'
|
id 'dagger.hilt.android.plugin'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def Properties versionProps = getVersionProps()
|
||||||
|
|
||||||
android {
|
android {
|
||||||
compileSdk = 35
|
compileSdk = 35
|
||||||
buildToolsVersion = '35.0.0'
|
buildToolsVersion = '35.0.0'
|
||||||
namespace = 'org.koitharu.kotatsu'
|
namespace = 'org.koitharu.kotatsu'
|
||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
|
def code = versionProps['code'].toInteger()
|
||||||
|
def base = versionProps['base'].trim()
|
||||||
|
def build = versionProps['build'].toInteger()
|
||||||
|
def variant = versionProps['variant'].trim()
|
||||||
|
|
||||||
applicationId 'org.koitharu.kotatsu'
|
applicationId 'org.koitharu.kotatsu'
|
||||||
minSdk = 21
|
minSdk = 21
|
||||||
targetSdk = 35
|
targetSdk = 35
|
||||||
versionCode = 700
|
versionCode = code * 1000 + build
|
||||||
versionName = '7.7.8'
|
versionName = base + (build == 0 ? '' : '.' + build) + (variant == '' ? '' : '-') + variant
|
||||||
generatedDensities = []
|
generatedDensities = []
|
||||||
testInstrumentationRunner 'org.koitharu.kotatsu.HiltTestRunner'
|
testInstrumentationRunner 'org.koitharu.kotatsu.HiltTestRunner'
|
||||||
ksp {
|
ksp {
|
||||||
@@ -30,6 +37,22 @@ android {
|
|||||||
generateLocaleConfig true
|
generateLocaleConfig true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
signingConfigs {
|
||||||
|
release {
|
||||||
|
def tmpFilePath = System.getProperty("user.home") + "/work/_temp/keystore/"
|
||||||
|
def allFilesFromDir = new File(tmpFilePath).listFiles()
|
||||||
|
|
||||||
|
if (allFilesFromDir != null) {
|
||||||
|
def keystoreFile = allFilesFromDir.first()
|
||||||
|
keystoreFile.renameTo("keystore/kotatsu.jks")
|
||||||
|
}
|
||||||
|
|
||||||
|
storeFile = file("keystore/kotatsu.jks")
|
||||||
|
storePassword System.getenv("SIGNING_STORE_PASSWORD")
|
||||||
|
keyAlias System.getenv("SIGNING_KEY_ALIAS")
|
||||||
|
keyPassword System.getenv("SIGNING_KEY_PASSWORD")
|
||||||
|
}
|
||||||
|
}
|
||||||
buildTypes {
|
buildTypes {
|
||||||
debug {
|
debug {
|
||||||
applicationIdSuffix = '.debug'
|
applicationIdSuffix = '.debug'
|
||||||
@@ -38,6 +61,7 @@ android {
|
|||||||
minifyEnabled true
|
minifyEnabled true
|
||||||
shrinkResources true
|
shrinkResources true
|
||||||
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
|
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
|
||||||
|
signingConfig signingConfigs.release
|
||||||
}
|
}
|
||||||
nightly {
|
nightly {
|
||||||
initWith release
|
initWith release
|
||||||
@@ -194,3 +218,22 @@ dependencies {
|
|||||||
androidTestImplementation libs.hilt.android.testing
|
androidTestImplementation libs.hilt.android.testing
|
||||||
kaptAndroidTest libs.hilt.android.compiler
|
kaptAndroidTest libs.hilt.android.compiler
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tasks.register('versionInfo') {
|
||||||
|
def base = versionProps['base'].trim()
|
||||||
|
def build = versionProps['build'].toInteger()
|
||||||
|
def variant = versionProps['variant'].trim()
|
||||||
|
println base + (build == 0 ? '' : '.' + build) + (variant == '' ? '' : '-') + variant
|
||||||
|
}
|
||||||
|
|
||||||
|
def getVersionProps() {
|
||||||
|
def versionPropsFile = file('version.properties')
|
||||||
|
def Properties versionProps = new Properties()
|
||||||
|
versionProps.load(new FileInputStream(versionPropsFile))
|
||||||
|
if (System.getProperty('buildNumberIncrement') == 'true') {
|
||||||
|
def code = versionProps['build'].toInteger() + 1
|
||||||
|
versionProps['build'] = code.toString()
|
||||||
|
versionProps.store(versionPropsFile.newWriter(), null)
|
||||||
|
}
|
||||||
|
return versionProps
|
||||||
|
}
|
||||||
|
|||||||
@@ -41,10 +41,12 @@ private fun PreferenceFragmentCompat.addPreferencesFromParserRepository(reposito
|
|||||||
}
|
}
|
||||||
}.apply {
|
}.apply {
|
||||||
summaryProvider = EditTextDefaultSummaryProvider(key.defaultValue)
|
summaryProvider = EditTextDefaultSummaryProvider(key.defaultValue)
|
||||||
onBindEditTextListener = EditTextBindListener(
|
setOnBindEditTextListener(
|
||||||
inputType = EditorInfo.TYPE_CLASS_TEXT or EditorInfo.TYPE_TEXT_VARIATION_URI,
|
EditTextBindListener(
|
||||||
hint = key.defaultValue,
|
inputType = EditorInfo.TYPE_CLASS_TEXT or EditorInfo.TYPE_TEXT_VARIATION_URI,
|
||||||
validator = DomainValidator(),
|
hint = key.defaultValue,
|
||||||
|
validator = DomainValidator(),
|
||||||
|
),
|
||||||
)
|
)
|
||||||
setTitle(R.string.domain)
|
setTitle(R.string.domain)
|
||||||
setDialogTitle(R.string.domain)
|
setDialogTitle(R.string.domain)
|
||||||
@@ -60,10 +62,12 @@ private fun PreferenceFragmentCompat.addPreferencesFromParserRepository(reposito
|
|||||||
UserAgents.CHROME_DESKTOP,
|
UserAgents.CHROME_DESKTOP,
|
||||||
)
|
)
|
||||||
summaryProvider = EditTextDefaultSummaryProvider(key.defaultValue)
|
summaryProvider = EditTextDefaultSummaryProvider(key.defaultValue)
|
||||||
onBindEditTextListener = EditTextBindListener(
|
setOnBindEditTextListener(
|
||||||
inputType = EditorInfo.TYPE_CLASS_TEXT,
|
EditTextBindListener(
|
||||||
hint = key.defaultValue,
|
inputType = EditorInfo.TYPE_CLASS_TEXT,
|
||||||
validator = HeaderValidator(),
|
hint = key.defaultValue,
|
||||||
|
validator = HeaderValidator(),
|
||||||
|
),
|
||||||
)
|
)
|
||||||
setTitle(R.string.user_agent)
|
setTitle(R.string.user_agent)
|
||||||
setDialogTitle(R.string.user_agent)
|
setDialogTitle(R.string.user_agent)
|
||||||
|
|||||||
5
app/version.properties
Normal file
5
app/version.properties
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
#Wed Jan 22 19:14:17 EET 2025
|
||||||
|
code=1
|
||||||
|
build=8
|
||||||
|
variant=
|
||||||
|
base=7.7
|
||||||
Reference in New Issue
Block a user