diff --git a/.gitea/workflows/gradle-build.yaml b/.gitea/workflows/gradle-build.yaml new file mode 100644 index 0000000..9f89304 --- /dev/null +++ b/.gitea/workflows/gradle-build.yaml @@ -0,0 +1,47 @@ +name: Build + +on: + push: + +jobs: + Gradle-Build: + + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up JDK + uses: actions/setup-java@v4 + with: + java-version: '23' + check-latest: true + distribution: 'zulu' + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 + with: + add-job-summary: always + cache-cleanup: on-success + + - name: Cache Gradle dependencies + uses: actions/cache@v4 + with: + path: | + ~/.gradle/caches + key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} + restore-keys: | + ${{ runner.os }}-gradle- + + - name: Build + run: chmod +x gradlew; ./gradlew assemble + + - name: Move artifacts + run: mkdir artifacts; mv lib/build/libs/*.jar artifacts; mv wrapper/javacord/build/libs/*.jar artifacts; + + - name: Upload artifact + uses: christopherhx/gitea-upload-artifact@v4 + with: + name: artifacts + path: artifacts diff --git a/.gitea/workflows/gradle-publish.yaml b/.gitea/workflows/gradle-publish.yaml new file mode 100644 index 0000000..f6d4da8 --- /dev/null +++ b/.gitea/workflows/gradle-publish.yaml @@ -0,0 +1,40 @@ +name: Test + +on: + push: + branches: [master] + +jobs: + Gradle-Test: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up JDK + uses: actions/setup-java@v4 + with: + java-version: '23' + check-latest: true + distribution: 'zulu' + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 + with: + add-job-summary: always + cache-cleanup: on-success + + - name: Cache Gradle dependencies + uses: actions/cache@v4 + with: + path: | + ~/.gradle/caches + key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} + restore-keys: | + ${{ runner.os }}-gradle- + + - name: Publish + env: + GITEA_TOKEN: ${{ secrets.PUBLISH_PACKAGE_TOKEN }} + run: chmod +x gradlew; ./gradlew publishAllPublicationsToGiteaRepository \ No newline at end of file diff --git a/.gitea/workflows/gradle-test.yaml b/.gitea/workflows/gradle-test.yaml new file mode 100644 index 0000000..62fe064 --- /dev/null +++ b/.gitea/workflows/gradle-test.yaml @@ -0,0 +1,53 @@ +name: Test + +on: + push: + +jobs: + Gradle-Test: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up JDK + uses: actions/setup-java@v4 + with: + java-version: '23' + check-latest: true + distribution: 'zulu' + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 + with: + add-job-summary: always + cache-cleanup: on-success + + - name: Cache Gradle dependencies + uses: actions/cache@v4 + with: + path: | + ~/.gradle/caches + key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} + restore-keys: | + ${{ runner.os }}-gradle- + + - name: Test + env: + DISCORD_TEST_TOKEN: ${{ secrets.DISCORD_TOKEN }} + run: chmod +x gradlew; ./gradlew test + + - name: Move Test Results + if: always() + run: | + mkdir test-results/; + [ -d lib/build/test-results/test/ ] && mv lib/build/test-results/test/*.xml test-results/; + [ -d wrapper/javacord/build/test-results/test/ ] && mv wrapper/javacord/build/test-results/test/*.xml test-results/; + + - name: Upload Test Result + uses: christopherhx/gitea-upload-artifact@v4 + if: always() + with: + name: test-results + path: test-results/ \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts new file mode 100644 index 0000000..ef41a19 --- /dev/null +++ b/build.gradle.kts @@ -0,0 +1,50 @@ +import java.io.ByteArrayOutputStream + +plugins { + `maven-publish` +} + +allprojects { + group = "net.tomatentum.Marinara" + version = "1.0.0-RC1" + (if (!project.hasProperty("release")) ("-" + getGitHash()) else "") + description = "A simple but powerful, library-agnostic Discord Interaction Wrapper." +} + +subprojects { + apply(plugin = "maven-publish") + apply(plugin = "java-library") + + plugins.withType { + publishing { + publications { + create("maven") { + from(components["java"]) + } + } + + repositories { + maven { + name = "Gitea" + url = uri("https://git.tomatentum.net/api/packages/tueem/maven/") + + credentials(HttpHeaderCredentials::class) { + name = "Authorization" + value = "token " + System.getenv("GITEA_TOKEN") + } + authentication { + create("header") + } + } + } + } + } +} + +fun getGitHash(): String { + val output = ByteArrayOutputStream() + project.exec { + commandLine("git", "rev-parse", "--short", "HEAD") + standardOutput = output + } + return output.toString().trim() +} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..5f1ed7b --- /dev/null +++ b/gradle.properties @@ -0,0 +1 @@ +org.gradle.caching=true \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index a441313..94113f2 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.11-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew old mode 100644 new mode 100755 diff --git a/settings.gradle.kts b/settings.gradle.kts index 7ccb161..06c8680 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -11,5 +11,7 @@ plugins { } rootProject.name = "Marinara" -include("lib") -include("wrapper:javacord") +include(":lib") +include(":wrapper-javacord") + +project(":wrapper-javacord").projectDir = file("wrapper/javacord")