Snapcraft Distribution

[skip ci]
This commit is contained in:
Stef Tervelde
2025-03-12 12:17:02 +01:00
parent dfc1e5a0e0
commit ba97f23b0d
2 changed files with 26 additions and 9 deletions
+3 -1
View File
@@ -7,7 +7,7 @@ jobs:
version:
runs-on: ubuntu-latest
outputs:
build_number: ${{ steps.tag_info.outputs.build_number }}
revision: ${{ steps.tag_info.outputs.revision }}
version: ${{ steps.tag_info.outputs.version }}
steps:
- name: Extract version and revision
@@ -149,6 +149,8 @@ jobs:
ORG_GRADLE_PROJECT_compose.desktop.mac.notarization.appleID: ${{ secrets.PROCESSING_APPLE_ID }}
ORG_GRADLE_PROJECT_compose.desktop.mac.notarization.password: ${{ secrets.PROCESSING_APP_PASSWORD }}
ORG_GRADLE_PROJECT_compose.desktop.mac.notarization.teamID: ${{ secrets.PROCESSING_TEAM_ID }}
SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.PROCESSING_SNAPCRAFT_TOKEN }}
ORG_GRADLE_PROJECT_snapname: ${{ vars.SNAP_NAME }}
- name: Upload portables to release
uses: svenstaro/upload-release-action@v2
+23 -8
View File
@@ -174,22 +174,25 @@ tasks.register<Exec>("packageCustomMsi"){
)
}
val snapname = findProperty("snapname") ?: rootProject.name
val snaparch = when (System.getProperty("os.arch")) {
"amd64", "x86_64" -> "amd64"
"aarch64" -> "arm64"
else -> System.getProperty("os.arch")
}
tasks.register("generateSnapConfiguration"){
onlyIf { org.gradle.internal.os.OperatingSystem.current().isLinux }
val distributable = tasks.named<AbstractJPackageTask>("createDistributable").get()
dependsOn(distributable)
val arch = when (System.getProperty("os.arch")) {
"amd64", "x86_64" -> "amd64"
"aarch64" -> "arm64"
else -> System.getProperty("os.arch")
}
val version = if(version == "unspecified") "1.0.0" else version
val dir = distributable.destinationDir.get()
val content = """
name: ${rootProject.name}
name: $snapname
version: $version
base: core22
summary: A creative coding editor
@@ -210,13 +213,14 @@ tasks.register("generateSnapConfiguration"){
parts:
processing:
plugin: dump
source: deb/processing_$version-1_$arch.deb
source: deb/processing_$version-1_$snaparch.deb
source-type: deb
stage-packages:
- openjdk-17-jdk
override-prime: |
snapcraftctl prime
chmod -R +x opt/processing/lib/app/resources/jdk-*
rm -vf usr/lib/jvm/java-17-openjdk-*/lib/security/cacerts
""".trimIndent()
dir.file("../snapcraft.yaml").asFile.writeText(content)
}
@@ -230,6 +234,17 @@ tasks.register<Exec>("packageSnap"){
workingDir = distributable.destinationDir.dir("../").get().asFile
commandLine("snapcraft")
commandLine("cp ${snapname}_${version}_${snaparch}.snap ${name}_${version}_${snaparch}.snap")
}
tasks.register<Exec>("uploadSnap"){
onlyIf { org.gradle.internal.os.OperatingSystem.current().isLinux }
dependsOn("packageSnap")
group = "compose desktop"
val distributable = tasks.named<AbstractJPackageTask>("createDistributable").get()
workingDir = distributable.destinationDir.dir("../").get().asFile
commandLine("snapcraft upload ${snapname}_${version}_${snaparch}.snap")
}
tasks.register<Zip>("zipDistributable"){
dependsOn("createDistributable")
@@ -262,7 +277,7 @@ afterEvaluate{
if(compose.desktop.application.nativeDistributions.macOS.notarization.appleID.isPresent){
dependsOn("notarizeDmg")
}
dependsOn("packageSnap")
dependsOn("packageSnap", "uploadSnap")
}
}