From 504a372fd88372e6231fe54801f08f2f7e01ec3b Mon Sep 17 00:00:00 2001 From: James Daugherty Date: Mon, 9 Dec 2024 17:16:33 -0500 Subject: [PATCH] Build updates for Grails 7 --- .github/workflows/github-pages.yml | 52 ----------- .github/workflows/gradle.yml | 48 +++++++--- .github/workflows/release.yml | 129 ++++++++++++++++++-------- readme.md => README.md | 0 build.gradle | 17 ++-- gradle.properties | 8 -- src/docs/asciidoc/ref/Tags/field.adoc | 4 +- 7 files changed, 138 insertions(+), 120 deletions(-) delete mode 100644 .github/workflows/github-pages.yml rename readme.md => README.md (100%) diff --git a/.github/workflows/github-pages.yml b/.github/workflows/github-pages.yml deleted file mode 100644 index 4406d673..00000000 --- a/.github/workflows/github-pages.yml +++ /dev/null @@ -1,52 +0,0 @@ -name: Deploy docs to Pages - -on: - # Runs on pushes targeting the default branch - #push: - # branches: [ master ] - - # Allows you to run this workflow manually from the Actions tab - #workflow_dispatch: - -# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages -permissions: - contents: read - pages: write - id-token: write - -# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. -# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. -concurrency: - group: "pages" - cancel-in-progress: false - -jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-java@v4 - with: - distribution: temurin - java-version: 17 - - uses: dhkatz/get-version-action@v3.0.0 - id: get_version - - uses: gradle/gradle-build-action@v2 - env: - RELEASE_VERSION: ${{ steps.get_version.outputs.version-without-v }} - with: - arguments: -Pversion=${RELEASE_VERSION} :docs:asciidoctor - - uses: actions/configure-pages@v4 - - uses: actions/upload-pages-artifact@v3 - with: - path: 'docs/build/docs' - deploy: - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} - runs-on: ubuntu-latest - needs: build - steps: - - uses: actions/deploy-pages@v4 - id: deployment - diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index cf623d87..84e19be0 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -13,36 +13,54 @@ jobs: build: runs-on: ubuntu-latest env: - WORKSPACE: ${{ github.workspace }} GRADLE_OPTS: -Xmx1500m -Dfile.encoding=UTF-8 - SIGNING_KEYRING: ${{ secrets.SECRING_FILE }} steps: - - uses: actions/checkout@v4 - - name: Set up JDK + - name: "πŸ“₯ Checkout the repository" + uses: actions/checkout@v4 + - name: "β˜•οΈ Setup JDK" uses: actions/setup-java@v4 with: distribution: 'liberica' java-version: '17' + - name: "🐘 Setup Gradle" + uses: gradle/actions/setup-gradle@v4 - name: Run Build - uses: gradle/gradle-build-action@v3 - with: - arguments: build -Dgeb.env=chromeHeadless + run: ./gradlew build publish: if: github.event_name == 'push' needs: ['build'] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - - name: Set up JDK + - name: "πŸ“₯ Checkout the repository" + uses: actions/checkout@v4 + - name: "β˜•οΈ Setup JDK" uses: actions/setup-java@v4 with: distribution: 'liberica' java-version: '17' - - name: Publish Artifacts (repo.grails.org) + - name: "🐘 Setup Gradle" + uses: + gradle/actions/setup-gradle@v4 + - name: "πŸ“€ Publish to Snapshot (repo.grails.org)" id: publish - uses: gradle/gradle-build-action@v3 env: - ARTIFACTORY_USERNAME: ${{ secrets.ARTIFACTORY_USERNAME }} - ARTIFACTORY_PASSWORD: ${{ secrets.ARTIFACTORY_PASSWORD }} - with: - arguments: -Dorg.gradle.internal.publish.checksums.insecure=true publish + MAVEN_PUBLISH_USERNAME: ${{ secrets.MAVEN_PUBLISH_USERNAME }} + MAVEN_PUBLISH_PASSWORD: ${{ secrets.MAVEN_PUBLISH_PASSWORD }} + MAVEN_PUBLISH_URL: ${{ secrets.MAVEN_PUBLISH_SNAPSHOT_URL }} + run: ./gradlew publish + - name: "πŸ“œ Generate Documentation" + if: success() + env: + DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }} + working-directory: ${{ github.workspace }} + run: ./gradlew docs + - name: "πŸš€ Publish to Github Pages" + if: success() + uses: micronaut-projects/github-pages-deploy-action@grails + env: + SKIP_SNAPSHOT: ${{ contains(needs.publish.outputs.release_version, 'M') }} + TARGET_REPOSITORY: ${{ github.repository }} + GH_TOKEN: ${{ secrets.GH_TOKEN }} + BRANCH: gh-pages + FOLDER: build/asciidoc + DOC_FOLDER: gh-pages \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3a44642f..f8839dfb 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -3,73 +3,128 @@ on: release: types: [published] jobs: - release: + publish: runs-on: ubuntu-latest - strategy: - matrix: - java: ['17'] + outputs: + release_version: ${{ steps.release_version.outputs.value }} env: GIT_USER_NAME: grails-build GIT_USER_EMAIL: grails-build@users.noreply.github.com steps: - - name: Checkout repository - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4 + - name: "πŸ“₯ Checkout the repository" + uses: actions/checkout@v4 with: token: ${{ secrets.GH_TOKEN }} - - name: Set up JDK + - name: "β˜•οΈ Setup JDK" uses: actions/setup-java@v4 with: distribution: 'liberica' - java-version: ${{ matrix.java }} - - name: Set the current release version + java-version: '17' + - name: "🐘 Setup Gradle" + uses: gradle/actions/setup-gradle@v4 + - name: "πŸ“Set the current release version" id: release_version - run: echo ::set-output name=release_version::${GITHUB_REF:11} - - name: Run pre-release + run: echo "value=${GITHUB_REF:11}" >> $GITHUB_OUTPUT + - name: "βš™οΈ Run pre-release" uses: micronaut-projects/github-actions/pre-release@master with: token: ${{ secrets.GITHUB_TOKEN }} - - name: Generate secring file + - name: "🧩 Run Assemble" + if: success() + id: assemble + run: ./gradlew assemble + - name: "πŸ” Generate secring file" env: SECRING_FILE: ${{ secrets.SECRING_FILE }} run: echo $SECRING_FILE | base64 -d > ${{ github.workspace }}/secring.gpg - - name: Publish to Sonatype OSSRH + - name: "πŸš€ Publish to Sonatype OSSRH" id: publish - uses: gradle/gradle-build-action@v3 env: - SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }} - SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }} - SONATYPE_NEXUS_URL: ${{ secrets.SONATYPE_NEXUS_URL }} - SONATYPE_STAGING_PROFILE_ID: ${{ secrets.SONATYPE_STAGING_PROFILE_ID }} - SIGNING_KEY: ${{ secrets.SIGNING_KEY_ID }} + NEXUS_PUBLISH_USERNAME: ${{ secrets.NEXUS_PUBLISH_USERNAME }} + NEXUS_PUBLISH_PASSWORD: ${{ secrets.NEXUS_PUBLISH_PASSWORD }} + NEXUS_PUBLISH_URL: ${{ secrets.NEXUS_PUBLISH_RELEASE_URL }} + NEXUS_PUBLISH_STAGING_PROFILE_ID: ${{ secrets.NEXUS_PUBLISH_STAGING_PROFILE_ID }} + SIGNING_KEY: ${{ secrets.SIGNING_KEY }} SIGNING_PASSPHRASE: ${{ secrets.SIGNING_PASSPHRASE }} SECRING_FILE: ${{ secrets.SECRING_FILE }} + working-directory: ./plugin + run: > + ../gradlew + -Psigning.secretKeyRingFile=${{ github.workspace }}/secring.gpg + publishToSonatype + closeSonatypeStagingRepository + release: + needs: publish + runs-on: ubuntu-latest + permissions: + contents: read + steps: + - name: "πŸ“₯ Checkout repository" + uses: actions/checkout@v4 + - name: "β˜•οΈ Setup JDK" + uses: actions/setup-java@v4 with: - arguments: -Psigning.secretKeyRingFile=${{ github.workspace }}/secring.gpg publishToSonatype closeAndReleaseSonatypeStagingRepository --stacktrace - - name: Run Assemble - id: assemble - if: steps.publish.outcome == 'success' - uses: gradle/gradle-build-action@v3 + distribution: liberica + java-version: 17 + - name: "πŸ“₯ Checkout repository" + uses: actions/checkout@v4 + with: + token: ${{ secrets.GH_TOKEN }} + ref: v${{ needs.publish.outputs.release_version }} + - name: "🐘 Setup Gradle" + uses: gradle/actions/setup-gradle@v4 + - name: "πŸ†Nexus Staging Close And Release" + env: + NEXUS_PUBLISH_USERNAME: ${{ secrets.NEXUS_PUBLISH_USERNAME }} + NEXUS_PUBLISH_PASSWORD: ${{ secrets.NEXUS_PUBLISH_PASSWORD }} + NEXUS_PUBLISH_URL: ${{ secrets.NEXUS_PUBLISH_RELEASE_URL }} + NEXUS_PUBLISH_STAGING_PROFILE_ID: ${{ secrets.NEXUS_PUBLISH_STAGING_PROFILE_ID }} + working-directory: ./plugin + run: > + ../gradlew + findSonatypeStagingRepository + releaseSonatypeStagingRepository + - name: "βš™οΈRun post-release" + if: success() + uses: micronaut-projects/github-actions/post-release@master + with: + token: ${{ secrets.GITHUB_TOKEN }} + env: + SNAPSHOT_SUFFIX: -SNAPSHOT + docs: + needs: publish + runs-on: ubuntu-latest + permissions: + contents: write + steps: + - name: "πŸ“₯ Checkout the repository" + uses: actions/checkout@v4 with: - arguments: assemble - - name: Export Gradle Properties + token: ${{ secrets.GH_TOKEN }} + ref: v${{ needs.publish.outputs.release_version }} + - name: "β˜•οΈ Setup JDK" + uses: actions/setup-java@v4 + with: + distribution: 'liberica' + java-version: '17' + - name: "🐘 Setup Gradle" + uses: gradle/actions/setup-gradle@v4 + - name: "πŸ“¦ Export Gradle Properties" uses: micronaut-projects/github-actions/export-gradle-properties@master - - name: Publish to Github Pages - if: steps.assemble.outcome == 'success' - uses: micronaut-projects/github-pages-deploy-action@master + - name: "πŸ“œ Generate User Guide Documentation" + id: docs + run: ./gradlew asciidoctor + - name: "πŸš€ Publish to Github Pages" + id: docs + if: success() + uses: grails/github-pages-deploy-action@v2 env: BETA: ${{ contains(steps.release_version.outputs.release_version, 'M') || contains(steps.release_version.outputs.release_version, 'RC') }} TARGET_REPOSITORY: ${{ github.repository }} GH_TOKEN: ${{ secrets.GH_TOKEN }} BRANCH: gh-pages - FOLDER: build/docs + FOLDER: build/asciidoc DOC_FOLDER: gh-pages COMMIT_EMAIL: ${{ env.GIT_USER_EMAIL }} COMMIT_NAME: ${{ env.GIT_USER_NAME }} VERSION: ${{ steps.release_version.outputs.release_version }} - - name: Run post-release - if: success() - uses: micronaut-projects/github-actions/post-release@master - with: - token: ${{ secrets.GITHUB_TOKEN }} - env: - SNAPSHOT_SUFFIX: -SNAPSHOT diff --git a/readme.md b/README.md similarity index 100% rename from readme.md rename to README.md diff --git a/build.gradle b/build.gradle index bebc18e7..ec3945b5 100644 --- a/build.gradle +++ b/build.gradle @@ -1,3 +1,5 @@ +import org.asciidoctor.gradle.jvm.AsciidoctorTask + buildscript { repositories { maven { url "https://plugins.gradle.org/m2/" } @@ -8,7 +10,7 @@ buildscript { } } plugins { - id 'org.asciidoctor.jvm.convert' version '3.3.2' + id 'org.asciidoctor.jvm.convert' version '4.0.3' id 'java-library' } @@ -18,9 +20,9 @@ group 'org.grails.plugins' apply plugin: 'org.grails.grails-plugin' apply plugin: 'org.grails.grails-gsp' apply plugin: "org.grails.grails-doc" -apply plugin: "org.grails.internal.grails-plugin-publish" +apply plugin: "org.grails.grails-publish" -java.toolchain.languageVersion = JavaLanguageVersion.of(17) +compileJava.options.release = 17 repositories { mavenCentral() @@ -55,17 +57,20 @@ tasks.withType(Test).configureEach { } grailsPublish { - userOrg = "grails" githubSlug = 'gpc/fields' license { name = 'Apache-2.0' } title = "Grails Fields Plugin" - desc = "Fields integration for Grails" + desc = "Customizable form-field rendering based on overrideable GSP template" developers = [robfletcher: 'Rob Fletcher', graemerocher: "Graeme Rocher", sdelamo: "Sergio del Amo", sbglasius: 'SΓΈren Berg Glasius'] } -asciidoctor { +tasks.named('asciidoctor', AsciidoctorTask) { it -> + it.jvm { + jvmArgs("--add-opens", "java.base/sun.nio.ch=ALL-UNNAMED", "--add-opens", "java.base/java.io=ALL-UNNAMED") + } + resources { from('src/docs/images') into "./images" diff --git a/gradle.properties b/gradle.properties index 9d6ba64c..5b6b628f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,18 +3,10 @@ projectVersion=6.0.0-SNAPSHOT grailsVersion=7.0.0-SNAPSHOT grailsGradlePluginVersion=7.0.0-SNAPSHOT grailsScaffoldingVersion=2.1.0 -groovyVersion=4.0.23 gormHibernate5Version=9.0.0-SNAPSHOT joddWotVersion=3.3.8 byteBuddyVersion=1.14.12 asciidoc=true -githubSlug=gpc/fields -githubBranch=master -title=Grails Fields Plugin -projectDesc=Customizable form-field rendering based on overrideable GSP template -guide=../../guide -projectUrl=https\://github.com/gpc/fields -developers=Robert Fletcher, Graeme Rocher, S\u00c3\u00b8ren Berg Glasius and more org.gradle.caching=true org.gradle.daemon=true diff --git a/src/docs/asciidoc/ref/Tags/field.adoc b/src/docs/asciidoc/ref/Tags/field.adoc index 19c942d4..3321e3d7 100644 --- a/src/docs/asciidoc/ref/Tags/field.adoc +++ b/src/docs/asciidoc/ref/Tags/field.adoc @@ -51,9 +51,9 @@ Since version 2.1.4 you can specify the theme to be used. ---- -See link:{guide}/customizingFieldRendering.html[Customizing Field Rendering] for details of the parameters passed to the tag body. +See link:#customizingFieldRendering[Customizing Field Rendering] for details of the parameters passed to the tag body. -The `f:field` tag handles embedded domain properties in a special way. See link:{guide}/embeddedProperties.html[Embedded Properties] for details. +The `f:field` tag handles embedded domain properties in a special way. See link:#embeddedProperties[Embedded Properties] for details. ===== Attributes