-
Notifications
You must be signed in to change notification settings - Fork 236
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Closes gh-1809
- Loading branch information
Showing
11 changed files
with
355 additions
and
77 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
name: 'Build' | ||
description: 'Builds the project, optionally publishing it to a local deployment repository' | ||
inputs: | ||
develocity-access-key: | ||
description: 'Access key for authentication with ge.spring.io' | ||
required: false | ||
java-distribution: | ||
description: 'Java distribution to use' | ||
required: false | ||
default: 'liberica' | ||
java-early-access: | ||
description: 'Whether the Java version is in early access' | ||
required: false | ||
default: 'false' | ||
java-toolchain: | ||
description: 'Whether a Java toolchain should be used' | ||
required: false | ||
default: 'false' | ||
java-version: | ||
description: 'Java version to compile and test with' | ||
required: false | ||
default: '17' | ||
opensource-repository-password: | ||
description: 'Password for authentication with the open-source repository' | ||
required: false | ||
opensource-repository-username: | ||
description: 'Username for authentication with the open-source repository' | ||
required: false | ||
publish: | ||
description: 'Whether to publish artifacts ready for deployment to Artifactory' | ||
required: false | ||
default: 'false' | ||
outputs: | ||
build-scan-url: | ||
description: 'URL, if any, of the build scan produced by the build' | ||
value: ${{ (inputs.publish == 'true' && steps.publish.outputs.build-scan-url) || steps.build.outputs.build-scan-url }} | ||
version: | ||
description: 'Version that was built' | ||
value: ${{ steps.read-version.outputs.version }} | ||
runs: | ||
using: composite | ||
steps: | ||
- name: Prepare Gradle Build | ||
uses: ./.github/actions/prepare-gradle-build | ||
with: | ||
develocity-access-key: ${{ inputs.develocity-access-key }} | ||
java-distribution: ${{ inputs.java-distribution }} | ||
java-early-access: ${{ inputs.java-early-access }} | ||
java-toolchain: ${{ inputs.java-toolchain }} | ||
java-version: ${{ inputs.java-version }} | ||
- name: Build | ||
id: build | ||
if: ${{ inputs.publish == 'false' }} | ||
shell: bash | ||
env: | ||
SPRING_REPOSITORY_PASSWORD: ${{ inputs.opensource-repository-password }} | ||
SPRING_REPOSITORY_USERNAME: ${{ inputs.opensource-repository-username }} | ||
run: ./gradlew check | ||
- name: Publish | ||
id: publish | ||
if: ${{ inputs.publish == 'true' }} | ||
shell: bash | ||
env: | ||
SPRING_REPOSITORY_PASSWORD: ${{ inputs.opensource-repository-password }} | ||
SPRING_REPOSITORY_USERNAME: ${{ inputs.opensource-repository-username }} | ||
run: ./gradlew -PdeploymentRepository=$(pwd)/deployment-repository build dist publishAllPublicationsToDeploymentRepository | ||
- name: Read Version From gradle.properties | ||
id: read-version | ||
shell: bash | ||
run: | | ||
version=$(sed -n 's/version=\(.*\)/\1/p' gradle.properties) | ||
echo "Version is $version" | ||
echo "version=$version" >> $GITHUB_OUTPUT |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
name: Prepare Gradle Build | ||
description: 'Prepares a Gradle build. Sets up Java and Gradle and configures Gradle properties' | ||
inputs: | ||
develocity-access-key: | ||
description: 'Access key for authentication with ge.spring.io' | ||
required: false | ||
java-distribution: | ||
description: 'Java distribution to use' | ||
required: false | ||
default: 'liberica' | ||
java-early-access: | ||
description: 'Whether the Java version is in early access. When true, forces java-distribution to temurin' | ||
required: false | ||
default: 'false' | ||
java-toolchain: | ||
description: 'Whether a Java toolchain should be used' | ||
required: false | ||
default: 'false' | ||
java-version: | ||
description: 'Java version to use for the build' | ||
required: false | ||
default: '17' | ||
runs: | ||
using: composite | ||
steps: | ||
- name: Set Up Java | ||
uses: actions/setup-java@v4 | ||
with: | ||
distribution: ${{ inputs.java-early-access == 'true' && 'temurin' || (inputs.java-distribution || 'liberica') }} | ||
java-version: | | ||
${{ inputs.java-early-access == 'true' && format('{0}-ea', inputs.java-version) || inputs.java-version }} | ||
${{ inputs.java-toolchain == 'true' && '17' || '' }} | ||
- name: Set Up Gradle | ||
uses: gradle/actions/setup-gradle@d156388eb19639ec20ade50009f3d199ce1e2808 # v4.1.0 | ||
with: | ||
cache-read-only: false | ||
develocity-access-key: ${{ inputs.develocity-access-key }} | ||
- name: Configure Gradle Properties | ||
shell: bash | ||
run: | | ||
mkdir -p $HOME/.gradle | ||
echo 'systemProp.user.name=spring-builds+github' >> $HOME/.gradle/gradle.properties | ||
echo 'systemProp.org.gradle.internal.launcher.welcomeMessageEnabled=false' >> $HOME/.gradle/gradle.properties | ||
echo 'org.gradle.daemon=false' >> $HOME/.gradle/gradle.properties | ||
echo 'org.gradle.daemon=4' >> $HOME/.gradle/gradle.properties | ||
- name: Configure Toolchain Properties | ||
if: ${{ inputs.java-toolchain == 'true' }} | ||
shell: bash | ||
run: | | ||
echo toolchainVersion=${{ inputs.java-version }} >> $HOME/.gradle/gradle.properties | ||
echo systemProp.org.gradle.java.installations.auto-detect=false >> $HOME/.gradle/gradle.properties | ||
echo systemProp.org.gradle.java.installations.auto-download=false >> $HOME/.gradle/gradle.properties | ||
echo systemProp.org.gradle.java.installations.paths=${{ format('$JAVA_HOME_{0}_X64', inputs.java-version) }} >> $HOME/.gradle/gradle.properties |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
name: Print JVM thread dumps | ||
description: 'Prints a thread dump for all running JVMs' | ||
runs: | ||
using: composite | ||
steps: | ||
- if: ${{ runner.os == 'Linux' }} | ||
shell: bash | ||
run: | | ||
for jvm_pid in $(jps -q -J-XX:+PerfDisableSharedMem); do | ||
jcmd $jvm_pid Thread.print | ||
done | ||
- if: ${{ runner.os == 'Windows' }} | ||
shell: powershell | ||
run: | | ||
foreach ($jvm_pid in $(jps -q -J-XX:+PerfDisableSharedMem)) { | ||
jcmd $jvm_pid Thread.print | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
name: Send Notification | ||
description: 'Sends a Google Chat message as a notification of the job''s outcome' | ||
inputs: | ||
build-scan-url: | ||
description: 'URL of the build scan to include in the notification' | ||
required: false | ||
run-name: | ||
description: 'Name of the run to include in the notification' | ||
required: false | ||
default: ${{ format('{0} {1}', github.ref_name, github.job) }} | ||
status: | ||
description: 'Status of the job' | ||
required: true | ||
webhook-url: | ||
description: 'Google Chat Webhook URL' | ||
required: true | ||
runs: | ||
using: composite | ||
steps: | ||
- name: Prepare Variables | ||
shell: bash | ||
run: | | ||
echo "BUILD_SCAN=${{ inputs.build-scan-url == '' && ' [build scan unavailable]' || format(' [<{0}|Build Scan>]', inputs.build-scan-url) }}" >> "$GITHUB_ENV" | ||
echo "RUN_URL=${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}" >> "$GITHUB_ENV" | ||
- name: Success Notification | ||
if: ${{ inputs.status == 'success' }} | ||
shell: bash | ||
run: | | ||
curl -X POST '${{ inputs.webhook-url }}' -H 'Content-Type: application/json' -d '{ text: "<${{ env.RUN_URL }}|${{ inputs.run-name }}> was successful ${{ env.BUILD_SCAN }}"}' || true | ||
- name: Failure Notification | ||
if: ${{ inputs.status == 'failure' }} | ||
shell: bash | ||
run: | | ||
curl -X POST '${{ inputs.webhook-url }}' -H 'Content-Type: application/json' -d '{ text: "<users/all> *<${{ env.RUN_URL }}|${{ inputs.run-name }}> failed* ${{ env.BUILD_SCAN }}"}' || true | ||
- name: Cancel Notification | ||
if: ${{ inputs.status == 'cancelled' }} | ||
shell: bash | ||
run: | | ||
curl -X POST '${{ inputs.webhook-url }}' -H 'Content-Type: application/json' -d '{ text: "<${{ env.RUN_URL }}|${{ inputs.run-name }}> was cancelled"}' || true |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
name: Build and Deploy Snapshot | ||
on: | ||
push: | ||
branches: | ||
- main | ||
concurrency: | ||
group: ${{ github.workflow }}-${{ github.ref }} | ||
jobs: | ||
build-and-deploy-snapshot: | ||
name: Build and Deploy Snapshot | ||
if: ${{ github.repository == 'spring-projects/spring-webflow' }} | ||
runs-on: ubuntu-latest | ||
timeout-minutes: 60 | ||
steps: | ||
- name: Check Out Code | ||
uses: actions/checkout@v4 | ||
- name: Build and Publish | ||
id: build-and-publish | ||
uses: ./.github/actions/build | ||
with: | ||
develocity-access-key: ${{ secrets.DEVELOCITY_ACCESS_KEY }} | ||
opensource-repository-password: ${{ secrets.ARTIFACTORY_PASSWORD }} | ||
opensource-repository-username: ${{ secrets.ARTIFACTORY_USERNAME }} | ||
publish: true | ||
- name: Deploy | ||
uses: spring-io/artifactory-deploy-action@26bbe925a75f4f863e1e529e85be2d0093cac116 # v0.0.1 | ||
with: | ||
artifact-properties: | | ||
/**/webflow-*.zip::zip.name=spring-webflow,zip.deployed=false | ||
/**/webflow-*-docs.zip::zip.type=docs | ||
/**/webflow-*-dist.zip::zip.type=dist | ||
/**/webflow-*-schema.zip::zip.type=schema | ||
build-name: 'spring-webflow-3.0.x' | ||
folder: 'deployment-repository' | ||
password: ${{ secrets.ARTIFACTORY_PASSWORD }} | ||
repository: 'libs-snapshot-local' | ||
signing-key: ${{ secrets.GPG_PRIVATE_KEY }} | ||
signing-passphrase: ${{ secrets.GPG_PASSPHRASE }} | ||
uri: 'https://repo.spring.io' | ||
username: ${{ secrets.ARTIFACTORY_USERNAME }} | ||
- name: Send Notification | ||
if: always() | ||
uses: ./.github/actions/send-notification | ||
with: | ||
build-scan-url: ${{ steps.build-and-publish.outputs.build-scan-url }} | ||
run-name: ${{ format('{0} | Linux | Java 17', github.ref_name) }} | ||
status: ${{ job.status }} | ||
webhook-url: ${{ secrets.GOOGLE_CHAT_WEBHOOK_URL }} | ||
outputs: | ||
version: ${{ steps.build-and-publish.outputs.version }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
name: Build Pull Request | ||
on: pull_request | ||
permissions: | ||
contents: read | ||
jobs: | ||
build: | ||
name: Build Pull Request | ||
if: ${{ github.repository == 'spring-projects/spring-webflow' }} | ||
runs-on: ubuntu-latest | ||
timeout-minutes: 60 | ||
steps: | ||
- name: Set Up JDK 17 | ||
uses: actions/setup-java@v4 | ||
with: | ||
distribution: 'liberica' | ||
java-version: '17' | ||
- name: Check Out | ||
uses: actions/checkout@v4 | ||
- name: Set Up Gradle | ||
uses: gradle/actions/setup-gradle@d156388eb19639ec20ade50009f3d199ce1e2808 # v4.1.0 | ||
- name: Build | ||
env: | ||
CI: 'true' | ||
GRADLE_ENTERPRISE_URL: 'https://ge.spring.io' | ||
SPRING_REPOSITORY_PASSWORD: ${{ secrets.ARTIFACTORY_PASSWORD }} | ||
SPRING_REPOSITORY_USERNAME: ${{ secrets.ARTIFACTORY_USERNAME }} | ||
run: ./gradlew -Dorg.gradle.internal.launcher.welcomeMessageEnabled=false --no-daemon --no-parallel --continue build | ||
- name: Print JVM Thread Dumps When Cancelled | ||
if: cancelled() | ||
uses: ./.github/actions/print-jvm-thread-dumps | ||
- name: Upload Build Reports | ||
if: failure() | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: build-reports | ||
path: '**/build/reports/' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
apply plugin: "maven-publish" | ||
|
||
publishing { | ||
publications { | ||
mavenJava(MavenPublication) { | ||
pom { | ||
afterEvaluate { | ||
name = project.description | ||
description = project.description | ||
} | ||
url = "https://github.com/spring-projects/spring-webflow" | ||
organization { | ||
name = "Spring IO" | ||
url = "https://spring.io/projects/spring-webflow" | ||
} | ||
licenses { | ||
license { | ||
name = "Apache License, Version 2.0" | ||
url = "https://www.apache.org/licenses/LICENSE-2.0" | ||
distribution = "repo" | ||
} | ||
} | ||
scm { | ||
url = "https://github.com/spring-projects/spring-webflow" | ||
connection = "scm:git:git://github.com/spring-projects/spring-webflow" | ||
developerConnection = "scm:git:git://github.com/spring-projects/spring-webflow" | ||
} | ||
developers { | ||
developer { | ||
id = "rstoyanchev" | ||
name = "Rossen Stoyanchev" | ||
email = "[email protected]" | ||
} | ||
} | ||
issueManagement { | ||
system = "GitHub" | ||
url = "https://github.com/spring-projects/spring-webflow/issues" | ||
} | ||
} | ||
versionMapping { | ||
usage('java-api') { | ||
fromResolutionResult() | ||
} | ||
usage('java-runtime') { | ||
fromResolutionResult() | ||
} | ||
} | ||
} | ||
} | ||
} | ||
|
||
configureDeploymentRepository(project) | ||
|
||
void configureDeploymentRepository(Project project) { | ||
project.plugins.withType(MavenPublishPlugin.class).all { | ||
PublishingExtension publishing = project.getExtensions().getByType(PublishingExtension.class); | ||
if (project.hasProperty("deploymentRepository")) { | ||
publishing.repositories.maven { | ||
it.url = project.property("deploymentRepository") | ||
it.name = "deployment" | ||
} | ||
} | ||
} | ||
} | ||
|
||
// Disable generation of Gradle Module Metadata for compatibility | ||
// with older versions of Spring Web Flow. | ||
tasks.withType(GenerateModuleMetadata) { | ||
enabled = false | ||
} |
Oops, something went wrong.