Skip to content

Commit

Permalink
Support for publishing modules, api module published
Browse files Browse the repository at this point in the history
  • Loading branch information
amankgo committed Feb 8, 2022
1 parent e3c38a8 commit a79ec6b
Show file tree
Hide file tree
Showing 13 changed files with 230 additions and 16 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/buildPreProd.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Logvue Build
name: Logvue Build Pre-Prod

env:
GITHUB_DEPLOY: 'false'
Expand Down
63 changes: 63 additions & 0 deletions .github/workflows/publish_api.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
name: Logvue Publish

env:
GITHUB_DEPLOY: 'false'

on:
workflow_dispatch:

defaults:
run:
shell: bash

jobs:
build:
name: Release build and publish
continue-on-error: false

runs-on: ubuntu-latest
environment: Production
strategy:
fail-fast: true
matrix:
jdk: [ 18 ]

steps:
- name: Check out the source code
uses: actions/checkout@v2

- name: Download OpenJDK ${{ matrix.jdk }}
id: download-jdk
uses: sormuras/download-jdk@v1
with:
feature: ${{ matrix.jdk }}

- name: Set up OpenJDK ${{ matrix.jdk }}
id: setup-java
uses: actions/setup-java@v2
if: always() && steps.download-jdk.outcome == 'success'
with:
distribution: jdkfile
java-version: ${{ env.JDK_VERSION }}
jdkFile: ${{ env.JDK_FILE }}

- name: Cache Gradle dependencies
uses: actions/cache@v2
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-
# Runs upload, and then closes & releases the repository
- name: Publish to MavenCentral
run: ./gradlew publishReleasePublicationToSonatypeRepository --max-workers 1 closeAndReleaseSonatypeStagingRepository
env:
OSSRH_USERNAME: ${{ secrets.OSSRH_USERNAME }}
OSSRH_PASSWORD: ${{ secrets.OSSRH_PASSWORD }}
SIGNING_KEY_ID: ${{ secrets.SIGNING_KEY_ID }}
SIGNING_PASSWORD: ${{ secrets.SIGNING_PASSWORD }}
SIGNING_KEY: ${{ secrets.SIGNING_KEY }}
SONATYPE_STAGING_PROFILE_ID: ${{ secrets.SONATYPE_STAGING_PROFILE_ID }}
Empty file added api/Changelog.md
Empty file.
18 changes: 15 additions & 3 deletions api/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,18 +1,30 @@
val pf4jVersion: String by project

import com.voxfinite.logvue.Configuration
import com.voxfinite.logvue.Dependencies

plugins {
kotlin("jvm")
}

ext {
set("PUBLISH_GROUP_ID", Configuration.Api.artifactGroup)
if (Configuration.Api.isSnapshot || rootProject.ext["snapshot"] as Boolean) {
set("PUBLISH_VERSION", Configuration.Api.snapshotVersionName)
} else {
set("PUBLISH_VERSION", Configuration.Api.versionName)
}
set("PUBLISH_ARTIFACT_ID", Configuration.Api.artifactId)
}

apply(from = "${rootDir}/scripts/publish-module.gradle")

dependencies {
implementation(kotlin("stdlib"))
// https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-slf4j-impl
implementation("org.apache.logging.log4j:log4j-slf4j-impl:2.17.0")
implementation("org.apache.logging.log4j:log4j-api:2.17.0")
implementation("org.apache.logging.log4j:log4j-core:2.17.0")

compileOnly("org.pf4j:pf4j:${pf4jVersion}")
compileOnly(Dependencies.Pf4j)
// types parser for object to map conversion
implementation("com.github.drapostolos:type-parser:0.7.0")
implementation("com.google.code.gson:gson:2.8.9")
Expand Down
7 changes: 3 additions & 4 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
import org.jetbrains.compose.compose
import org.jetbrains.compose.desktop.application.dsl.TargetFormat
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
import com.voxfinite.logvue.Dependencies

val pf4jVersion: String by project
val pluginsDir: File by rootProject.extra

plugins {
Expand All @@ -21,7 +20,7 @@ val appMainClass = "com.voxfinite.logvue.app.MainKt"
dependencies {
implementation(kotlin("stdlib"))
testImplementation(kotlin("test"))
implementation(project(":api"))
implementation(Dependencies.LogVueApi)
implementation(compose.desktop.currentOs)
// https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-slf4j-impl
implementation("org.apache.logging.log4j:log4j-slf4j-impl:2.17.0")
Expand All @@ -40,7 +39,7 @@ dependencies {
implementation("io.sentry:sentry-log4j2:5.6.0")
// https://mvnrepository.com/artifact/net.harawata/appdirs
implementation("net.harawata:appdirs:1.2.1")
implementation ("org.pf4j:pf4j:${pf4jVersion}")
implementation (Dependencies.Pf4j)

r8("com.android.tools:r8:3.0.73")
}
Expand Down
4 changes: 4 additions & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ buildscript {

plugins {
kotlin("jvm") version "1.6.10"
id("org.jetbrains.dokka") version "1.6.10"
id("io.github.gradle-nexus.publish-plugin") version "1.1.0"
}

allprojects {
Expand All @@ -34,3 +36,5 @@ subprojects {
kotlinOptions.freeCompilerArgs += "-Xopt-in=kotlin.RequiresOptIn"
}
}

apply(from = "${rootDir}/scripts/publish-root.gradle")
7 changes: 7 additions & 0 deletions buildSrc/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
plugins {
`kotlin-dsl`
}

repositories {
mavenCentral()
}
15 changes: 15 additions & 0 deletions buildSrc/src/main/kotlin/com/voxfinite/logvue/Configuration.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.voxfinite.logvue

object Configuration {

object Api {
const val majorVersion = 1
const val minorVersion = 0
const val patchVersion = 0
const val versionName = "$majorVersion.$minorVersion.$patchVersion"
const val snapshotVersionName = "$majorVersion.$minorVersion.${patchVersion + 1}-SNAPSHOT"
const val isSnapshot = false
const val artifactGroup = "io.github.amank22.logvue"
const val artifactId = "api"
}
}
11 changes: 11 additions & 0 deletions buildSrc/src/main/kotlin/com/voxfinite/logvue/Dependencies.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.voxfinite.logvue

object Versions {
const val LogVueApi = "1.0.0"
const val P4fj = "3.6.0"
}

object Dependencies {
const val LogVueApi = "io.github.amank22.logvue:api:${Versions.LogVueApi}"
const val Pf4j = "org.pf4j:pf4j:${Versions.P4fj}"
}
3 changes: 0 additions & 3 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,2 @@
kotlin.code.style=official
#kotlin.native.binary.memoryModel=experimental

# PF4J
pf4jVersion=3.6.0
9 changes: 4 additions & 5 deletions plugins/pdt/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
import com.voxfinite.logvue.Dependencies
plugins {
kotlin("kapt")
}

val pf4jVersion: String by project

dependencies {
compileOnly(project(":api"))
compileOnly(Dependencies.LogVueApi)
compileOnly(kotlin("stdlib"))

compileOnly("org.pf4j:pf4j:${pf4jVersion}")
kapt("org.pf4j:pf4j:${pf4jVersion}")
compileOnly(Dependencies.Pf4j)
kapt(Dependencies.Pf4j)
// implementation("org.apache.commons:commons-lang3:3.5") // this is an example for an external library included
}
68 changes: 68 additions & 0 deletions scripts/publish-module.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
apply plugin: 'maven-publish'
apply plugin: 'signing'
apply plugin: 'org.jetbrains.dokka'

java {
withSourcesJar()
}

tasks.withType(dokkaHtmlPartial.getClass()).configureEach {
pluginsMapConfiguration.set(
["org.jetbrains.dokka.base.DokkaBase": """{ "separateInheritedMembers": true}"""]
)
}

task javadocJar(type: Jar, dependsOn: dokkaJavadoc) {
archiveClassifier.set('javadoc')
from dokkaJavadoc.outputDirectory
}

group = PUBLISH_GROUP_ID
version = PUBLISH_VERSION

afterEvaluate {
publishing {
publications {
release(MavenPublication) {
groupId PUBLISH_GROUP_ID
artifactId PUBLISH_ARTIFACT_ID
version PUBLISH_VERSION
from components.java
artifact javadocJar

pom {
name = PUBLISH_ARTIFACT_ID
description = 'Monitor, analyse local analytics from ADB and use SQL-Like query to filter logs on desktop'
url = 'https://github.com/amank22/LogVue'
licenses {
license {
name = 'GPL-3.0 License'
url = 'https://github.com/amank22/LogVue/blob/main/LICENSE'
}
}
developers {
developer {
id = 'amank22'
name = 'Aman Kapoor'
email = '[email protected]'
}
}
scm {
connection = 'scm:git:github.com/amank22/logvue.git'
developerConnection = 'scm:git:ssh://github.com/amank22/logvue.git'
url = 'https://github.com/amank22/LogVue/tree/main'
}
}
}
}
}
}

signing {
useInMemoryPgpKeys(
rootProject.ext["signing.keyId"],
rootProject.ext["signing.key"],
rootProject.ext["signing.password"],
)
sign publishing.publications
}
39 changes: 39 additions & 0 deletions scripts/publish-root.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
// Create variables with empty default values
ext["ossrhUsername"] = ''
ext["ossrhPassword"] = ''
ext["sonatypeStagingProfileId"] = ''
ext["signing.keyId"] = ''
ext["signing.password"] = ''
ext["signing.key"] = ''
ext["snapshot"] = false

File secretPropsFile = project.rootProject.file('local.properties')
if (secretPropsFile.exists()) {
// Read local.properties file first if it exists
Properties p = new Properties()
new FileInputStream(secretPropsFile).withCloseable { is -> p.load(is) }
p.each { name, value -> ext[name] = value }
} else {
// Use system environment variables
ext["ossrhUsername"] = System.getenv('OSSRH_USERNAME')
ext["ossrhPassword"] = System.getenv('OSSRH_PASSWORD')
ext["sonatypeStagingProfileId"] = System.getenv('SONATYPE_STAGING_PROFILE_ID')
ext["signing.keyId"] = System.getenv('SIGNING_KEY_ID')
ext["signing.password"] = System.getenv('SIGNING_PASSWORD')
ext["signing.key"] = System.getenv('SIGNING_KEY')
ext["snapshot"] = System.getenv('SNAPSHOT')
}

// Set up Sonatype repository
nexusPublishing {
repositories {
sonatype {
nexusUrl.set(uri("https://s01.oss.sonatype.org/service/local/"))
snapshotRepositoryUrl.set(uri("https://s01.oss.sonatype.org/content/repositories/snapshots/"))
stagingProfileId = sonatypeStagingProfileId
username = ossrhUsername
password = ossrhPassword
// version = rootVersionName
}
}
}

0 comments on commit a79ec6b

Please sign in to comment.