diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml new file mode 100644 index 0000000..c212da8 --- /dev/null +++ b/.github/workflows/publish.yaml @@ -0,0 +1,40 @@ +name: Publish Workflow +on: + push: + tags: + - v* +jobs: + publish: + name: Publish library + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Set up Java + uses: actions/setup-java@v3 + with: + distribution: adopt + java-version: 17 + + - name: Verify Gradle wrapper + uses: gradle/wrapper-validation-action@v1 + + - name: Setup Gradle + uses: gradle/gradle-build-action@v2 + + - name: Run checks + run: ./gradlew check + + - name: Parse parameters + id: parse + run: | + export VERSION="$(echo ${{ github.ref_name }} | cut -c2-)" + echo "Parsed version: '$VERSION'" + echo "tinyvm_version=$VERSION" >> "$GITHUB_OUTPUT" + + - name: Publish to Gitea package repository + env: + TINYVM_VERSION: ${{ steps.parse.outputs.tinyvm_version }} + GITEA_USERNAME: ${{ github.repository_owner }} + GITEA_TOKEN: ${{ secrets.deploy_token }} + run: ./gradlew publishAllPublicationsToGiteaRepository \ No newline at end of file diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml new file mode 100644 index 0000000..8890e68 --- /dev/null +++ b/.github/workflows/test.yaml @@ -0,0 +1,29 @@ +name: Test Workflow +on: + pull_request: + branches: + - main + push: + branches: + - main +jobs: + lint-and-test: + name: Lint and test library + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Set up Java + uses: actions/setup-java@v3 + with: + distribution: adopt + java-version: 17 + + - name: Verify Gradle wrapper + uses: gradle/wrapper-validation-action@v1 + + - name: Setup Gradle + uses: gradle/gradle-build-action@v2 + + - name: Run checks + run: ./gradlew check \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts index 256e71b..5dd218d 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,9 +1,12 @@ plugins { kotlin("jvm") version "1.9.21" + id("org.jmailen.kotlinter") version "4.1.0" + id("org.jetbrains.dokka") version "1.9.10" + `maven-publish` } -group = "net.koval" -version = "1.0-SNAPSHOT" +group = "net.koval.teamcity-build-step-extension-test-task" +version = System.getenv("FILESYSTEM_VERSION") repositories { mavenCentral() @@ -19,4 +22,47 @@ tasks.test { kotlin { jvmToolchain(11) -} \ No newline at end of file +} + +val dokkaHtml by tasks.getting(org.jetbrains.dokka.gradle.DokkaTask::class) +val javadocJar: TaskProvider by tasks.registering(Jar::class) { + dependsOn(dokkaHtml) + archiveClassifier.set("javadoc") + from(dokkaHtml.outputDirectory) +} + +publishing { + publications.register("gpr") { + artifactId = "filesystem" + from(components["java"]) + artifact(javadocJar) + pom { + name.set("TeamCity Kotlin Script build step extension library - Test Task - test filesystem") + description.set("This is a small project to make a very basic filesystem library in Kotlin and was" + + "created using the instructions below as part of my application to the JetBrains internship project" + + "\"TeamCity Kotlin Script build step extension library\".") + url.set("https://git.koval.net/cyclane/teamcity-build-step-extension-test-task") + developers { + developer { + id.set("cyclane") + name.set("Gleb Koval") + email.set("gleb@koval.net") + } + } + scm { + url.set("https://git.koval.net/cyclane/teamcity-build-step-extension-test-task") + } + } + } + + repositories { + maven { + name = "Gitea" + url = uri("https://git.koval.net/api/packages/cyclane/maven") + credentials { + username = System.getenv("GITEA_USERNAME") + password = System.getenv("GITEA_TOKEN") + } + } + } +}