From 982cbe1c4ee5571b50871a13fef45bfad4de8120 Mon Sep 17 00:00:00 2001 From: Oleksii PELYKH Date: Wed, 19 Jun 2024 15:45:34 +0200 Subject: [PATCH] (chore) sign; publish on release --- .github/workflows/push.yaml | 2 + .github/workflows/release.yaml | 86 ++++++++++++++++++++++++++++++++++ api/build.gradle.kts | 17 +++++-- ffm/build.gradle.kts | 17 +++++-- jna/build.gradle.kts | 17 +++++-- lib/build.gradle.kts | 17 +++++-- 6 files changed, 144 insertions(+), 12 deletions(-) create mode 100644 .github/workflows/release.yaml diff --git a/.github/workflows/push.yaml b/.github/workflows/push.yaml index afe6d5c..c2524ab 100644 --- a/.github/workflows/push.yaml +++ b/.github/workflows/push.yaml @@ -78,5 +78,7 @@ jobs: - name: Publish env: + GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }} + GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: ./gradlew publishAllPublicationsToGitHubPackagesRepository -Ppcre4j.version=main-SNAPSHOT diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml new file mode 100644 index 0000000..3137749 --- /dev/null +++ b/.github/workflows/release.yaml @@ -0,0 +1,86 @@ +name: Release + +on: + release: + types: + - published + +jobs: + build: + strategy: + matrix: + os: [ ubuntu-latest ] + java-distribution: + - temurin + - zulu + - adopt-hotspot + - adopt-openj9 + - liberica + - microsoft + - corretto + - semeru + - oracle + - dragonwell + fail-fast: false + + runs-on: ${{ matrix.os }} + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up "${{ matrix.java-distribution }}" JDK 21 + uses: actions/setup-java@v4 + with: + distribution: ${{ matrix.java-distribution }} + java-version: 21 + + - name: Cache Gradle packages + uses: actions/cache@v4 + with: + path: | + ~/.gradle/caches + ~/.gradle/wrapper + key: gradle-${{ runner.os }}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} + restore-keys: gradle-${{ runner.os }} + + - name: Install PCRE (Ubuntu) + if: ${{ matrix.os == 'ubuntu-latest' }} + run: sudo apt-get install -y libpcre2-8-0 + + - name: Build with Gradle (Ubuntu) + if: ${{ matrix.os == 'ubuntu-latest' }} + run: ./gradlew build -Dpcre2.library.path=/usr/lib/x86_64-linux-gnu + + - name: Run tests (Ubuntu) + if: ${{ matrix.os == 'ubuntu-latest' }} + run: ./gradlew test -Dpcre2.library.path=/usr/lib/x86_64-linux-gnu + + publish: + runs-on: ubuntu-latest + + permissions: + contents: read + packages: write + + needs: + - build + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up JDK 21 + uses: actions/setup-java@v4 + with: + distribution: temurin + java-version: 21 + + - name: Publish + env: + GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }} + GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + OSSRH_USERNAME: ${{ secrets.OSSRH_USERNAME }} + OSSRH_TOKEN: ${{ secrets.OSSRH_TOKEN }} + run: ./gradlew publish -Ppcre4j.version=${{ github.event.release.tag_name }} diff --git a/api/build.gradle.kts b/api/build.gradle.kts index 14cc3b4..d8b1c2b 100644 --- a/api/build.gradle.kts +++ b/api/build.gradle.kts @@ -15,6 +15,7 @@ plugins { `java-library` `maven-publish` + `signing` } repositories { @@ -79,11 +80,21 @@ publishing { } } - mavenCentral { + maven { + name = "OSSRH" + url = uri("https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/") credentials { - username = findProperty("pcre4j.mavenCentral.user") as String? ?: "" - password = findProperty("pcre4j.mavenCentral.password") as String? ?: "" + username = System.getenv("OSSRH_USERNAME") + username = System.getenv("OSSRH_TOKEN") } } } } + +signing { + useInMemoryPgpKeys( + System.getenv("GPG_PRIVATE_KEY"), + System.getenv("GPG_PASSPHRASE") + ) + sign(publishing.publications["mavenJava"]) +} diff --git a/ffm/build.gradle.kts b/ffm/build.gradle.kts index 6c8cf87..04a57e1 100644 --- a/ffm/build.gradle.kts +++ b/ffm/build.gradle.kts @@ -15,6 +15,7 @@ plugins { `java-library` `maven-publish` + `signing` } repositories { @@ -100,11 +101,21 @@ publishing { } } - mavenCentral { + maven { + name = "OSSRH" + url = uri("https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/") credentials { - username = findProperty("pcre4j.mavenCentral.user") as String? ?: "" - password = findProperty("pcre4j.mavenCentral.password") as String? ?: "" + username = System.getenv("OSSRH_USERNAME") + username = System.getenv("OSSRH_TOKEN") } } } } + +signing { + useInMemoryPgpKeys( + System.getenv("GPG_PRIVATE_KEY"), + System.getenv("GPG_PASSPHRASE") + ) + sign(publishing.publications["mavenJava"]) +} diff --git a/jna/build.gradle.kts b/jna/build.gradle.kts index d1c23e8..01cba62 100644 --- a/jna/build.gradle.kts +++ b/jna/build.gradle.kts @@ -15,6 +15,7 @@ plugins { `java-library` `maven-publish` + `signing` } repositories { @@ -83,11 +84,21 @@ publishing { } } - mavenCentral { + maven { + name = "OSSRH" + url = uri("https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/") credentials { - username = findProperty("pcre4j.mavenCentral.user") as String? ?: "" - password = findProperty("pcre4j.mavenCentral.password") as String? ?: "" + username = System.getenv("OSSRH_USERNAME") + username = System.getenv("OSSRH_TOKEN") } } } } + +signing { + useInMemoryPgpKeys( + System.getenv("GPG_PRIVATE_KEY"), + System.getenv("GPG_PASSPHRASE") + ) + sign(publishing.publications["mavenJava"]) +} diff --git a/lib/build.gradle.kts b/lib/build.gradle.kts index ca3b622..fd33a63 100644 --- a/lib/build.gradle.kts +++ b/lib/build.gradle.kts @@ -15,6 +15,7 @@ plugins { `java-library` `maven-publish` + `signing` } repositories { @@ -80,11 +81,21 @@ publishing { } } - mavenCentral { + maven { + name = "OSSRH" + url = uri("https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/") credentials { - username = findProperty("pcre4j.mavenCentral.user") as String? ?: "" - password = findProperty("pcre4j.mavenCentral.password") as String? ?: "" + username = System.getenv("OSSRH_USERNAME") + username = System.getenv("OSSRH_TOKEN") } } } } + +signing { + useInMemoryPgpKeys( + System.getenv("GPG_PRIVATE_KEY"), + System.getenv("GPG_PASSPHRASE") + ) + sign(publishing.publications["mavenJava"]) +}