Skip to content

Commit

Permalink
build: Sign release artifacts
Browse files Browse the repository at this point in the history
  • Loading branch information
oSumAtrIX committed Feb 21, 2024
1 parent bdc54ef commit d789fd6
Show file tree
Hide file tree
Showing 9 changed files with 84 additions and 57 deletions.
7 changes: 7 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,13 @@ jobs:
- name: Install dependencies
run: npm install

- name: Import GPG key
uses: crazy-max/ghaction-import-gpg@v6
with:
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}
passphrase: ${{ secrets.GPG_PASSPHRASE }}
fingerprint: ${{ env.GPG_FINGERPRINT }}

- name: Release
env:
GITHUB_TOKEN: ${{ secrets.REPOSITORY_PUSH_ACCESS }}
Expand Down
2 changes: 1 addition & 1 deletion .releaserc
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
{
"assets": [
{
"path": "build/libs/*.jar"
"path": "build/libs/revanced-patches*"
},
{
"path": "patches.json"
Expand Down
4 changes: 4 additions & 0 deletions api/revanced-patches.api
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
public final class app/revanced/generator/MainKt {
public static synthetic fun main ([Ljava/lang/String;)V
}

public final class app/revanced/patches/all/activity/exportall/ExportAllActivitiesPatch : app/revanced/patcher/patch/ResourcePatch {
public static final field INSTANCE Lapp/revanced/patches/all/activity/exportall/ExportAllActivitiesPatch;
public synthetic fun execute (Lapp/revanced/patcher/data/Context;)V
Expand Down
73 changes: 44 additions & 29 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
import org.gradle.kotlin.dsl.support.listFilesOrdered

plugins {
kotlin("jvm") version "1.9.22"
alias(libs.plugins.kotlin)
alias(libs.plugins.binary.compatibility.validator)
`maven-publish`
signing
}

group = "app.revanced"
Expand All @@ -12,7 +13,14 @@ repositories {
mavenCentral()
mavenLocal()
google()
maven { url = uri("https://jitpack.io") }
maven {
// A repository must be speficied for some reason. "registry" is a dummy.
url = uri("https://maven.pkg.github.com/revanced/registry")
credentials {
username = project.findProperty("gpr.user") as String? ?: System.getenv("GITHUB_ACTOR")
password = project.findProperty("gpr.key") as String? ?: System.getenv("GITHUB_TOKEN")
}
}
}

dependencies {
Expand All @@ -28,61 +36,62 @@ kotlin {
jvmToolchain(11)
}

tasks.withType(Jar::class) {
exclude("app/revanced/meta")

manifest {
attributes["Name"] = "ReVanced Patches"
attributes["Description"] = "Patches for ReVanced."
attributes["Version"] = version
attributes["Timestamp"] = System.currentTimeMillis().toString()
attributes["Source"] = "[email protected]:revanced/revanced-patches.git"
attributes["Author"] = "ReVanced"
attributes["Contact"] = "[email protected]"
attributes["Origin"] = "https://revanced.app"
attributes["License"] = "GNU General Public License v3.0"
tasks {
withType(Jar::class) {
exclude("app/revanced/meta")

manifest {
attributes["Name"] = "ReVanced Patches"
attributes["Description"] = "Patches for ReVanced."
attributes["Version"] = version
attributes["Timestamp"] = System.currentTimeMillis().toString()
attributes["Source"] = "[email protected]:revanced/revanced-patches.git"
attributes["Author"] = "ReVanced"
attributes["Contact"] = "[email protected]"
attributes["Origin"] = "https://revanced.app"
attributes["License"] = "GNU General Public License v3.0"
}
}
}

tasks {
register<DefaultTask>("generateBundle") {
description = "Generate DEX files and add them in the JAR file"
register("buildDexJar") {
description = "Build and add a DEX to the JAR file"
group = "build"

dependsOn(build)

doLast {
val d8 = File(System.getenv("ANDROID_HOME")).resolve("build-tools")
.listFilesOrdered().last().resolve("d8").absolutePath

val artifacts = configurations.archives.get().allArtifacts.files.files.first().absolutePath
val patchesJar = configurations.archives.get().allArtifacts.files.files.first().absolutePath
val workingDirectory = layout.buildDirectory.dir("libs").get().asFile

exec {
workingDir = workingDirectory
commandLine = listOf(d8, artifacts)
commandLine = listOf(d8, patchesJar)
}

exec {
workingDir = workingDirectory
commandLine = listOf("zip", "-u", artifacts, "classes.dex")
commandLine = listOf("zip", "-u", patchesJar, "classes.dex")
}
}
}

register<JavaExec>("generateMeta") {
description = "Generate metadata for this bundle"
register<JavaExec>("generatePatchesFiles") {
description = "Generate patches files"

dependsOn(build)

classpath = sourceSets["main"].runtimeClasspath
mainClass.set("app.revanced.meta.IPatchesFileGenerator")
mainClass.set("app.revanced.generator.MainKt")
}

// Required to run tasks because Gradle semantic-release plugin runs the publish task.
// Needed by gradle-semantic-release-plugin.
// Tracking: https://github.com/KengoTODA/gradle-semantic-release-plugin/issues/435
named("publish") {
dependsOn("generateBundle")
dependsOn("generateMeta")
publish {
dependsOn("buildDexJar")
dependsOn("generatePatchesFiles")
}
}

Expand Down Expand Up @@ -118,3 +127,9 @@ publishing {
}
}
}

signing {
useGpgCmd()

sign(publishing.publications["revanced-patches-publication"])
}
4 changes: 3 additions & 1 deletion gradle/libs.versions.toml
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
[versions]
revanced-patcher = "19.2.0"
revanced-patcher = "19.3.1"
smali = "3.0.4"
guava = "33.0.0-jre"
gson = "2.10.1"
binary-compatibility-validator = "0.14.0"
kotlin = "1.9.22"

[libraries]
revanced-patcher = { module = "app.revanced:revanced-patcher", version.ref = "revanced-patcher" }
Expand All @@ -13,3 +14,4 @@ gson = { module = "com.google.code.gson:gson", version.ref = "gson" }

[plugins]
binary-compatibility-validator = { id = "org.jetbrains.kotlinx.binary-compatibility-validator", version.ref = "binary-compatibility-validator" }
kotlin = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package app.revanced.meta
package app.revanced.generator

import app.revanced.patcher.PatchSet
import app.revanced.patcher.patch.Patch
import com.google.gson.GsonBuilder
import java.io.File

internal class JsonPatchesFileGenerator : IPatchesFileGenerator {
internal class JsonPatchesFileGenerator : PatchesFileGenerator {
override fun generate(patches: PatchSet) = patches.map {
JsonPatch(
it.name!!,
Expand All @@ -20,9 +20,9 @@ internal class JsonPatchesFileGenerator : IPatchesFileGenerator {
option.values,
option.title,
option.description,
option.required
option.required,
)
}
},
)
}.let {
File("patches.json").writeText(GsonBuilder().serializeNulls().create().toJson(it))
Expand All @@ -35,7 +35,7 @@ internal class JsonPatchesFileGenerator : IPatchesFileGenerator {
val compatiblePackages: Set<Patch.CompatiblePackage>? = null,
val use: Boolean = true,
val requiresIntegrations: Boolean = false,
val options: List<Option>
val options: List<Option>,
) {
class Option(
val key: String,
Expand All @@ -46,4 +46,4 @@ internal class JsonPatchesFileGenerator : IPatchesFileGenerator {
val required: Boolean,
)
}
}
}
12 changes: 12 additions & 0 deletions src/main/kotlin/app/revanced/generator/Main.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package app.revanced.generator

import app.revanced.patcher.PatchBundleLoader
import java.io.File

internal fun main() = PatchBundleLoader.Jar(
File("build/libs/").listFiles { it -> it.name.endsWith(".jar") }!!.first(),
).also { loader ->
if (loader.isEmpty()) throw IllegalStateException("No patches found")
}.let { bundle ->
arrayOf(JsonPatchesFileGenerator()).forEach { generator -> generator.generate(bundle) }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package app.revanced.generator

import app.revanced.patcher.PatchSet

internal interface PatchesFileGenerator {
fun generate(patches: PatchSet)
}
20 changes: 0 additions & 20 deletions src/main/kotlin/app/revanced/meta/IPatchesFileGenerator.kt

This file was deleted.

0 comments on commit d789fd6

Please sign in to comment.