Skip to content

Commit

Permalink
support github ref env var and comfort method for maven repo config
Browse files Browse the repository at this point in the history
  • Loading branch information
LCLPYT committed Jun 14, 2023
1 parent 64df07e commit ada40d5
Show file tree
Hide file tree
Showing 5 changed files with 68 additions and 22 deletions.
24 changes: 12 additions & 12 deletions .github/workflows/gradle-publish.yml
Original file line number Diff line number Diff line change
@@ -1,30 +1,30 @@
name: Gradle Publish
name: Deployment

on:
push:
tags:
- '*'

jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: read
packages: read
steps:
- uses: actions/checkout@v3
- name: Set up JDK 8
uses: actions/setup-java@v3

- uses: actions/setup-java@v3
with:
java-version: '8'
distribution: 'temurin'
- name: make gradle wrapper executable
if: ${{ runner.os != 'Windows' }}
run: chmod +x ./gradlew
- name: Validate Gradle wrapper
uses: gradle/wrapper-validation-action@v1
- name: Set env variables

# validate gradle wrapper signature
- uses: gradle/wrapper-validation-action@v1

# capture the latest tag
- name: Set environment variables
id: vars
run: echo "tag=${GITHUB_REF#refs/*/}" >> $GITHUB_OUTPUT

# Gradle caching and more
- name: Publish to Repository
uses: gradle/gradle-build-action@v2
with:
Expand Down
19 changes: 12 additions & 7 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
import java.util.*

plugins {
java
`java-gradle-plugin`
`maven-publish`
id("gradle-build-utils")
id("gradle-build-utils").version("1.4.0")
}

repositories {
Expand All @@ -11,24 +13,21 @@ repositories {
}

dependencies {
implementation("org.kohsuke:github-api:1.135")
implementation("org.kohsuke:github-api:1.315")

testImplementation("org.junit.jupiter:junit-jupiter-api:5.8.2")
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.8.2")
}

val loadProperties: groovy.lang.Closure<java.util.Properties> by extra
val gitVersion: groovy.lang.Closure<String> by extra
val mavenGroup: String by project
val mavenArchivesName: String by project
val props = loadProperties("publish.properties")
val props: Properties = buildUtils.loadProperties("publish.properties")

base {
group = mavenGroup
archivesName.set(mavenArchivesName)

val local = System.getProperty("build.local") == "true"
version = gitVersion.call() + if (local) "+local" else ""
version = buildUtils.gitVersion()
}

java {
Expand All @@ -51,6 +50,12 @@ tasks.getByName<Test>("test") {
useJUnitPlatform()
}

fun setupRepo(repositoryHandler: RepositoryHandler) {
repositoryHandler.maven {

}
}

publishing {
repositories {
maven {
Expand Down
3 changes: 0 additions & 3 deletions settings.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,6 @@ pluginManagement {
}
gradlePluginPortal()
}
plugins {
id("gradle-build-utils").version("1.1.0")
}
}

rootProject.name = "gradle-build-utils"
Expand Down
7 changes: 7 additions & 0 deletions src/main/java/work/lclpnet/build/ext/BuildUtilsExtension.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package work.lclpnet.build.ext;

import org.gradle.api.provider.Property;
import org.gradle.api.publish.PublishingExtension;

import java.util.Properties;

Expand All @@ -13,4 +14,10 @@ public interface BuildUtilsExtension {
Property<String> getVersionPattern();

Properties loadProperties(Object src);

void setupPublishRepository(PublishingExtension extension, Properties properties);

default void setupPublishRepository(PublishingExtension extension) {
setupPublishRepository(extension, new Properties());
}
}
37 changes: 37 additions & 0 deletions src/main/java/work/lclpnet/build/ext/BuildUtilsExtensionImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,15 @@

import org.gradle.api.Project;
import org.gradle.api.provider.Property;
import org.gradle.api.publish.PublishingExtension;
import work.lclpnet.build.util.GitVersionResolver;

import java.io.File;
import java.io.InputStream;
import java.nio.file.Files;
import java.util.Map;
import java.util.Properties;
import java.util.stream.Stream;

public class BuildUtilsExtensionImpl implements BuildUtilsExtension {

Expand All @@ -30,6 +32,16 @@ public String latestTag() {
return env.get("CI_VERSION");
}

if (env.containsKey("GITHUB_REF")) {
String githubRef = env.get("GITHUB_REF");

String prefix = "refs/tags/";

if (githubRef.startsWith(prefix)) {
return githubRef.substring(prefix.length());
}
}

if (latestTag != null) return latestTag;

return fetchLatestTag();
Expand Down Expand Up @@ -99,4 +111,29 @@ private synchronized String fetchLatestTag() {

return gitVersionResolver.getGitVersion(pwd);
}

@Override
public void setupPublishRepository(PublishingExtension extension, Properties props) {
extension.repositories(repositories -> repositories.maven(repo -> {
Map<String, String> env = System.getenv();

if (Stream.of("DEPLOY_URL", "DEPLOY_USER", "DEPLOY_PASSWORD").allMatch(env::containsKey)) {
repo.credentials(credentials -> {
credentials.setUsername(env.get("DEPLOY_USER"));
credentials.setPassword(env.get("DEPLOY_PASSWORD"));
});

repo.setUrl(props.getProperty("DEPLOY_URL"));
} else if (Stream.of("mavenHost", "mavenUser", "mavenPassword").allMatch(props::containsKey)) {
repo.credentials(credentials -> {
credentials.setUsername(props.getProperty("mavenUser"));
credentials.setPassword(props.getProperty("mavenPassword"));
});

repo.setUrl(props.getProperty("mavenHost"));
} else {
repo.setUrl("file:///" + project.getProjectDir().getAbsolutePath() + "/repo");
}
}));
}
}

0 comments on commit ada40d5

Please sign in to comment.