Skip to content

Commit

Permalink
chore: configure gitHub actions for automated deployment to maven cen…
Browse files Browse the repository at this point in the history
…tral
  • Loading branch information
h-beeen committed Nov 11, 2024
1 parent 42bbe97 commit a38d2ef
Show file tree
Hide file tree
Showing 6 changed files with 244 additions and 7 deletions.
69 changes: 69 additions & 0 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
name: Publish to Maven Central Repository

on:
push:
branches:
- master

jobs:
publish:
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v2

- name: Grant execute permission for gradlew
run: chmod +x gradlew

- name: Extract version from build.gradle.kts
id: get_version
run: echo "::set-output name=VERSION::$(./gradlew -q printVersion)"

- name: Create Git tag
env:
VERSION: ${{ steps.get_version.outputs.VERSION }}
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"
git tag -a "v${VERSION}" -m "Release version ${VERSION}"
git push --force origin "v${VERSION}"
- name: Verify GPG key import
run: |
gpg --list-keys
env:
GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }}
GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}

- name: Set up GPG
run: |
# Create gpg directory
mkdir -p ~/.gnupg/
chmod 700 ~/.gnupg/
# Configure GPG
echo "use-agent" > ~/.gnupg/gpg.conf
echo "pinentry-mode loopback" >> ~/.gnupg/gpg.conf
# Import private key
echo -n "$GPG_PRIVATE_KEY" > private.gpg
gpg --batch --import private.gpg
rm private.gpg
# Trust the key
echo -n "057F00512A25D4A1:6:" | gpg --batch --import-ownertrust
env:
GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }}

- name: Sign all publications
run: ./gradlew signAllPublications
env:
ORG_GRADLE_PROJECT_signingKey: ${{ secrets.GPG_PRIVATE_KEY }}
ORG_GRADLE_PROJECT_signingPassword: ${{ secrets.GPG_PASSPHRASE }}

- name: Publish to Maven Central
env:
OSSRH_USERNAME: ${{ secrets.OSSRH_USERNAME }}
OSSRH_PASSWORD: ${{ secrets.OSSRH_PASSWORD }}
run: ./gradlew publishAllPublicationsToMavenCentralRepository
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
MIT License

Copyright (c) 2020~2025 Hectodata co,. Ltd
Copyright (c) 2024~2025 Hectodata co,. Ltd

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
67 changes: 61 additions & 6 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,14 +1,66 @@
import com.vanniktech.maven.publish.JavaLibrary
import com.vanniktech.maven.publish.JavadocJar
import com.vanniktech.maven.publish.SonatypeHost

plugins {
java
signing
id("com.vanniktech.maven.publish") version "0.30.0"
}


group = "io.codef.api"
version = "2.0.0-ALPHA-01"
version = "2.0.0-alpha+001"

signing {
useGpgCmd()
sign(publishing.publications)
}

repositories {
mavenCentral()
}

mavenPublishing {
configure(JavaLibrary(JavadocJar.Javadoc(), true))
publishToMavenCentral(SonatypeHost.CENTRAL_PORTAL)

coordinates("io.codef.api", "easycodef-jdk", version.toString())
pom {
url = "api.codef.io"
name = "easycodef-jdk-v2"
description = "Advanced EasyCodef Library for JDK"
inceptionYear = "2024"

licenses {
license {
name = "MIT License"
url = "https://opensource.org/licenses/MIT"
distribution = "https://opensource.org/licenses/MIT"
}
}
developers {
developer {
id = "happybean"
name = "Haebin Byeon"
email = "happybean@hecto.co.kr"
}
}

scm {
connection = "scm:git:git@github.com:codef-io/easycodef-jdk-v2.git"
developerConnection = "scm:git:ssh://github.com/codef-io/easycodef-jdk-v2.git"
url = "https://github.com/codef-io/easycodef-jdk-v2"
}

issueManagement {
system = "GitHub"
url = "https://github.com/codef-io/easycodef-jdk-v2/issues"
}
}
}


dependencies {

/**
Expand Down Expand Up @@ -40,16 +92,19 @@ dependencies {
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.11.3")
}


java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
languageVersion.set(JavaLanguageVersion.of(17))
}
}

tasks.withType<JavaCompile>().configureEach {
options.compilerArgs.add("-Xlint:all")
tasks.test {
useJUnitPlatform()
}

tasks.named<Test>("test") {
useJUnitPlatform()
tasks.register("printVersion") {
doLast {
println(project.version)
}
}
107 changes: 107 additions & 0 deletions private.gpg
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
-----BEGIN PGP PRIVATE KEY BLOCK-----

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
=ejRz
-----END PGP PRIVATE KEY BLOCK-----
5 changes: 5 additions & 0 deletions src/main/java/io/codef/api/CodefException.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
package io.codef.api;

import java.io.Serial;

public class CodefException extends RuntimeException {

@Serial
private static final long serialVersionUID = 1L;

private static final String LOG_WITH_CAUSE_FORMAT = "%s\n→ %s\n\n";

private final CodefError codefError;
Expand Down
1 change: 1 addition & 0 deletions src/test/java/io/codef/api/EasyCodefTokenTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,6 @@ public class EasyCodefTokenTest {

@Test
public void usageExample() {

}
}

0 comments on commit a38d2ef

Please sign in to comment.