parent
d716d99d1b
commit
15913441c4
|
@ -1,18 +0,0 @@
|
|||
== Concourse pipeline
|
||||
|
||||
Ensure that you've setup the spring-boot target and can login
|
||||
|
||||
[source]
|
||||
----
|
||||
$ fly -t spring-boot login -n spring-boot -c https://ci.spring.io
|
||||
----
|
||||
|
||||
The pipeline can be deployed using the following command:
|
||||
|
||||
[source]
|
||||
----
|
||||
$ fly -t spring-boot set-pipeline -p spring-boot-3.1.x -c ci/pipeline.yml -l ci/parameters.yml
|
||||
----
|
||||
|
||||
NOTE: This assumes that you have credhub integration configured with the appropriate
|
||||
secrets.
|
|
@ -1,23 +0,0 @@
|
|||
changelog:
|
||||
repository: spring-projects/spring-boot
|
||||
sections:
|
||||
- title: ":star: New Features"
|
||||
labels:
|
||||
- "type: enhancement"
|
||||
- title: ":lady_beetle: Bug Fixes"
|
||||
labels:
|
||||
- "type: bug"
|
||||
- "type: regression"
|
||||
- title: ":notebook_with_decorative_cover: Documentation"
|
||||
labels:
|
||||
- "type: documentation"
|
||||
- title: ":hammer: Dependency Upgrades"
|
||||
sort: "title"
|
||||
labels:
|
||||
- "type: dependency-upgrade"
|
||||
issues:
|
||||
ports:
|
||||
- label: "status: forward-port"
|
||||
bodyExpression: 'Forward port of issue #(\d+).*'
|
||||
- label: "status: back-port"
|
||||
bodyExpression: 'Back port of issue #(\d+).*'
|
|
@ -1,13 +0,0 @@
|
|||
plugins {
|
||||
id "com.gradle.plugin-publish" version "0.15.0"
|
||||
}
|
||||
tasks.register("publishExisting", com.gradle.publish.PublishExistingTask) {
|
||||
pluginId = "org.springframework.boot"
|
||||
fileRepositoryRoot = new File("${repositoryRoot}")
|
||||
pluginVersion = "${bootVersion}"
|
||||
pluginCoordinates = "org.springframework.boot:spring-boot-gradle-plugin:${bootVersion}"
|
||||
displayName = "Spring Boot Gradle Plugin"
|
||||
pluginDescription = "Spring Boot Gradle Plugin"
|
||||
website = "https://spring.io/projects/spring-boot"
|
||||
vcsUrl = "https://github.com/spring-projects/spring-boot"
|
||||
}
|
|
@ -1,11 +0,0 @@
|
|||
spring:
|
||||
main:
|
||||
banner-mode: off
|
||||
sonatype:
|
||||
exclude:
|
||||
- "build-info.json"
|
||||
- "org/springframework/boot/spring-boot-docs/.*"
|
||||
sdkman:
|
||||
artifact: "org.springframework.boot:spring-boot-cli:*:zip:bin"
|
||||
broadcast-url: "https://github.com/spring-projects/spring-boot/releases/v%s"
|
||||
candidate: "springboot"
|
|
@ -1,21 +0,0 @@
|
|||
== CI Images
|
||||
|
||||
These images are used by CI to run the actual builds.
|
||||
|
||||
To build the image locally run the following from this directory:
|
||||
|
||||
----
|
||||
$ docker build --no-cache -f <image-folder>/Dockerfile .
|
||||
----
|
||||
|
||||
For example
|
||||
|
||||
----
|
||||
$ docker build --no-cache -f ci-image/Dockerfile .
|
||||
----
|
||||
|
||||
To test run:
|
||||
|
||||
----
|
||||
$ docker run -it --entrypoint /bin/bash <SHA>
|
||||
----
|
|
@ -1,12 +0,0 @@
|
|||
ARG DOCKER_PROXY_CACHE=
|
||||
FROM ${DOCKER_PROXY_CACHE}ubuntu:jammy-20240405
|
||||
|
||||
ADD setup.sh /setup.sh
|
||||
ADD get-jdk-url.sh /get-jdk-url.sh
|
||||
ADD get-docker-url.sh /get-docker-url.sh
|
||||
ADD get-docker-compose-url.sh /get-docker-compose-url.sh
|
||||
RUN ./setup.sh java17 java21
|
||||
|
||||
ENV JAVA_HOME /opt/openjdk
|
||||
ENV PATH $JAVA_HOME/bin:$PATH
|
||||
ADD docker-lib.sh /docker-lib.sh
|
|
@ -1,12 +0,0 @@
|
|||
ARG DOCKER_PROXY_CACHE=
|
||||
FROM ${DOCKER_PROXY_CACHE}ubuntu:jammy-20240405
|
||||
|
||||
ADD setup.sh /setup.sh
|
||||
ADD get-jdk-url.sh /get-jdk-url.sh
|
||||
ADD get-docker-url.sh /get-docker-url.sh
|
||||
ADD get-docker-compose-url.sh /get-docker-compose-url.sh
|
||||
RUN ./setup.sh java17
|
||||
|
||||
ENV JAVA_HOME /opt/openjdk
|
||||
ENV PATH $JAVA_HOME/bin:$PATH
|
||||
ADD docker-lib.sh /docker-lib.sh
|
|
@ -1,97 +0,0 @@
|
|||
# Based on: https://github.com/concourse/docker-image-resource/blob/master/assets/common.sh
|
||||
|
||||
DOCKER_LOG_FILE=${DOCKER_LOG_FILE:-/tmp/docker.log}
|
||||
SKIP_PRIVILEGED=${SKIP_PRIVILEGED:-false}
|
||||
STARTUP_TIMEOUT=${STARTUP_TIMEOUT:-120}
|
||||
|
||||
sanitize_cgroups() {
|
||||
mkdir -p /sys/fs/cgroup
|
||||
mountpoint -q /sys/fs/cgroup || \
|
||||
mount -t tmpfs -o uid=0,gid=0,mode=0755 cgroup /sys/fs/cgroup
|
||||
|
||||
mount -o remount,rw /sys/fs/cgroup
|
||||
|
||||
sed -e 1d /proc/cgroups | while read sys hierarchy num enabled; do
|
||||
if [ "$enabled" != "1" ]; then
|
||||
# subsystem disabled; skip
|
||||
continue
|
||||
fi
|
||||
|
||||
grouping="$(cat /proc/self/cgroup | cut -d: -f2 | grep "\\<$sys\\>")" || true
|
||||
if [ -z "$grouping" ]; then
|
||||
# subsystem not mounted anywhere; mount it on its own
|
||||
grouping="$sys"
|
||||
fi
|
||||
|
||||
mountpoint="/sys/fs/cgroup/$grouping"
|
||||
|
||||
mkdir -p "$mountpoint"
|
||||
|
||||
# clear out existing mount to make sure new one is read-write
|
||||
if mountpoint -q "$mountpoint"; then
|
||||
umount "$mountpoint"
|
||||
fi
|
||||
|
||||
mount -n -t cgroup -o "$grouping" cgroup "$mountpoint"
|
||||
|
||||
if [ "$grouping" != "$sys" ]; then
|
||||
if [ -L "/sys/fs/cgroup/$sys" ]; then
|
||||
rm "/sys/fs/cgroup/$sys"
|
||||
fi
|
||||
|
||||
ln -s "$mountpoint" "/sys/fs/cgroup/$sys"
|
||||
fi
|
||||
done
|
||||
|
||||
if ! test -e /sys/fs/cgroup/systemd ; then
|
||||
mkdir /sys/fs/cgroup/systemd
|
||||
mount -t cgroup -o none,name=systemd none /sys/fs/cgroup/systemd
|
||||
fi
|
||||
}
|
||||
|
||||
start_docker() {
|
||||
mkdir -p /var/log
|
||||
mkdir -p /var/run
|
||||
|
||||
if [ "$SKIP_PRIVILEGED" = "false" ]; then
|
||||
sanitize_cgroups
|
||||
|
||||
# check for /proc/sys being mounted readonly, as systemd does
|
||||
if grep '/proc/sys\s\+\w\+\s\+ro,' /proc/mounts >/dev/null; then
|
||||
mount -o remount,rw /proc/sys
|
||||
fi
|
||||
fi
|
||||
|
||||
local mtu=$(cat /sys/class/net/$(ip route get 8.8.8.8|awk '{ print $5 }')/mtu)
|
||||
local server_args="--mtu ${mtu}"
|
||||
local registry=""
|
||||
|
||||
server_args="${server_args}"
|
||||
|
||||
if [ -n "$1" ]; then
|
||||
server_args="${server_args} --registry-mirror https://$1"
|
||||
fi
|
||||
|
||||
try_start() {
|
||||
dockerd --data-root /scratch/docker ${server_args} >$DOCKER_LOG_FILE 2>&1 &
|
||||
echo $! > /tmp/docker.pid
|
||||
|
||||
sleep 1
|
||||
|
||||
echo waiting for docker to come up...
|
||||
until docker info >/dev/null 2>&1; do
|
||||
sleep 1
|
||||
if ! kill -0 "$(cat /tmp/docker.pid)" 2>/dev/null; then
|
||||
return 1
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
export server_args DOCKER_LOG_FILE
|
||||
declare -fx try_start
|
||||
|
||||
if ! timeout ${STARTUP_TIMEOUT} bash -ce 'while true; do try_start && break; done'; then
|
||||
echo Docker failed to start within ${STARTUP_TIMEOUT} seconds.
|
||||
return 1
|
||||
fi
|
||||
}
|
|
@ -1,5 +0,0 @@
|
|||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
version="2.17.0"
|
||||
echo "https://github.com/docker/compose/releases/download/v$version/docker-compose-linux-x86_64"
|
|
@ -1,5 +0,0 @@
|
|||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
version="26.1.0"
|
||||
echo "https://download.docker.com/linux/static/stable/x86_64/docker-$version.tgz";
|
|
@ -1,14 +0,0 @@
|
|||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
case "$1" in
|
||||
java17)
|
||||
echo "https://github.com/bell-sw/Liberica/releases/download/17.0.11+10/bellsoft-jdk17.0.11+10-linux-amd64.tar.gz"
|
||||
;;
|
||||
java21)
|
||||
echo "https://github.com/bell-sw/Liberica/releases/download/21.0.3+10/bellsoft-jdk21.0.3+10-linux-amd64.tar.gz"
|
||||
;;
|
||||
*)
|
||||
echo $"Unknown java version"
|
||||
exit 1
|
||||
esac
|
|
@ -1,63 +0,0 @@
|
|||
#!/bin/bash
|
||||
set -ex
|
||||
|
||||
###########################################################
|
||||
# UTILS
|
||||
###########################################################
|
||||
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
apt-get update
|
||||
apt-get install --no-install-recommends -y tzdata ca-certificates net-tools libxml2-utils git curl libudev1 libxml2-utils iptables iproute2 jq
|
||||
ln -fs /usr/share/zoneinfo/UTC /etc/localtime
|
||||
dpkg-reconfigure --frontend noninteractive tzdata
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
curl https://raw.githubusercontent.com/spring-io/concourse-java-scripts/v0.0.4/concourse-java.sh > /opt/concourse-java.sh
|
||||
|
||||
|
||||
###########################################################
|
||||
# JAVA
|
||||
###########################################################
|
||||
JDK_URL=$( ./get-jdk-url.sh $1 )
|
||||
|
||||
mkdir -p /opt/openjdk
|
||||
cd /opt/openjdk
|
||||
curl -L ${JDK_URL} | tar zx --strip-components=1
|
||||
test -f /opt/openjdk/bin/java
|
||||
test -f /opt/openjdk/bin/javac
|
||||
|
||||
if [[ $# -eq 2 ]]; then
|
||||
cd /
|
||||
TOOLCHAIN_JDK_URL=$( ./get-jdk-url.sh $2 )
|
||||
|
||||
mkdir -p /opt/openjdk-toolchain
|
||||
cd /opt/openjdk-toolchain
|
||||
curl -L ${TOOLCHAIN_JDK_URL} | tar zx --strip-components=1
|
||||
test -f /opt/openjdk-toolchain/bin/java
|
||||
test -f /opt/openjdk-toolchain/bin/javac
|
||||
fi
|
||||
|
||||
|
||||
###########################################################
|
||||
# DOCKER
|
||||
###########################################################
|
||||
cd /
|
||||
DOCKER_URL=$( ./get-docker-url.sh )
|
||||
curl -L ${DOCKER_URL} | tar zx
|
||||
mv /docker/* /bin/
|
||||
chmod +x /bin/docker*
|
||||
|
||||
export ENTRYKIT_VERSION=0.4.0
|
||||
curl -L https://github.com/progrium/entrykit/releases/download/v${ENTRYKIT_VERSION}/entrykit_${ENTRYKIT_VERSION}_Linux_x86_64.tgz | tar zx
|
||||
chmod +x entrykit && \
|
||||
mv entrykit /bin/entrykit && \
|
||||
entrykit --symlink
|
||||
|
||||
|
||||
###########################################################
|
||||
# DOCKER COMPOSE
|
||||
###########################################################
|
||||
mkdir -p /usr/local/lib/docker/cli-plugins
|
||||
DOCKER_COMPOSE_URL=$( ./get-docker-compose-url.sh )
|
||||
curl -L ${DOCKER_COMPOSE_URL} -o /usr/local/lib/docker/cli-plugins/docker-compose
|
||||
chmod +x /usr/local/lib/docker/cli-plugins/docker-compose
|
|
@ -1,16 +0,0 @@
|
|||
github-organization-name: "spring-projects"
|
||||
github-repository-name: "spring-boot"
|
||||
github-repository-uri: "https://github.com/spring-projects/spring-boot.git"
|
||||
homebrew-tap-repo: "https://github.com/spring-io/homebrew-tap.git"
|
||||
docker-hub-organization: "springci"
|
||||
docker-hub-repository-prefix: "spring-boot"
|
||||
artifactory-snapshot-repository: "libs-snapshot-local"
|
||||
artifactory-staging-repository: "libs-staging-local"
|
||||
artifactory-url: "https://repo.spring.io"
|
||||
branch: "3.1.x"
|
||||
milestone: "3.1.x"
|
||||
build-name: "spring-boot"
|
||||
concourse-url: "https://ci.spring.io"
|
||||
task-timeout: 2h00m
|
||||
final-release: false
|
||||
dockerhub-proxy-cache: harbor-repo.vmware.com/dockerhub-proxy-cache/
|
678
ci/pipeline.yml
678
ci/pipeline.yml
|
@ -1,678 +0,0 @@
|
|||
anchors:
|
||||
git-repo-resource-source: &git-repo-resource-source
|
||||
uri: ((github-repository-uri))
|
||||
username: ((github-username))
|
||||
password: ((github-ci-release-token))
|
||||
branch: ((branch))
|
||||
registry-image-resource-source: ®istry-image-resource-source
|
||||
username: ((docker-hub-username))
|
||||
password: ((docker-hub-password))
|
||||
ci-registry-image-resource-source: &ci-registry-image-resource-source
|
||||
username: ((harbor-registry-username))
|
||||
password: ((harbor-registry-password))
|
||||
tag: ((milestone))
|
||||
gradle-enterprise-task-params: &gradle-enterprise-task-params
|
||||
GRADLE_ENTERPRISE_ACCESS_KEY: ((gradle_enterprise_secret_access_key))
|
||||
GRADLE_ENTERPRISE_CACHE_URL: ((gradle_enterprise_cache_url))
|
||||
GRADLE_ENTERPRISE_CACHE_USERNAME: ((gradle_enterprise_cache_user.username))
|
||||
GRADLE_ENTERPRISE_CACHE_PASSWORD: ((gradle_enterprise_cache_user.password))
|
||||
docker-hub-task-params: &docker-hub-task-params
|
||||
DOCKER_HUB_MIRROR: ((docker-hub-mirror))
|
||||
DOCKER_HUB_USERNAME: ((docker-hub-username))
|
||||
DOCKER_HUB_PASSWORD: ((docker-hub-password))
|
||||
DOCKER_HUB_AUTH: ((docker-hub-auth))
|
||||
github-task-params: &github-task-params
|
||||
GITHUB_REPO: ((github-repository-name))
|
||||
GITHUB_ORGANIZATION: ((github-organization-name))
|
||||
GITHUB_PASSWORD: ((github-ci-release-token))
|
||||
GITHUB_USERNAME: ((github-username))
|
||||
MILESTONE: ((milestone))
|
||||
sontatype-task-params: &sonatype-task-params
|
||||
SONATYPE_USERNAME: ((sonatype-username))
|
||||
SONATYPE_PASSWORD: ((sonatype-password))
|
||||
SONATYPE_URL: ((sonatype-url))
|
||||
SONATYPE_STAGING_PROFILE_ID: ((sonatype-staging-profile-id))
|
||||
artifactory-task-params: &artifactory-task-params
|
||||
ARTIFACTORY_URL: ((artifactory-url))
|
||||
ARTIFACTORY_USERNAME: ((artifactory-username))
|
||||
ARTIFACTORY_PASSWORD: ((artifactory-password))
|
||||
sdkman-task-params: &sdkman-task-params
|
||||
SDKMAN_CONSUMER_KEY: ((sdkman-consumer-key))
|
||||
SDKMAN_CONSUMER_TOKEN: ((sdkman-consumer-token))
|
||||
build-project-task-params: &build-project-task-params
|
||||
privileged: true
|
||||
timeout: ((task-timeout))
|
||||
file: git-repo/ci/tasks/build-project.yml
|
||||
params:
|
||||
BRANCH: ((branch))
|
||||
<<: *gradle-enterprise-task-params
|
||||
<<: *docker-hub-task-params
|
||||
run-system-tests-task-params: &run-system-tests-task-params
|
||||
privileged: true
|
||||
timeout: ((task-timeout))
|
||||
file: git-repo/ci/tasks/run-system-tests.yml
|
||||
params:
|
||||
BRANCH: ((branch))
|
||||
<<: *gradle-enterprise-task-params
|
||||
<<: *docker-hub-task-params
|
||||
artifactory-repo-put-params: &artifactory-repo-put-params
|
||||
signing_key: ((signing-key))
|
||||
signing_passphrase: ((signing-passphrase))
|
||||
repo: ((artifactory-snapshot-repository))
|
||||
folder: distribution-repository
|
||||
build_uri: "https://ci.spring.io/teams/${BUILD_TEAM_NAME}/pipelines/${BUILD_PIPELINE_NAME}/jobs/${BUILD_JOB_NAME}/builds/${BUILD_NAME}"
|
||||
build_number: "${BUILD_JOB_NAME}-${BUILD_NAME}"
|
||||
disable_checksum_uploads: true
|
||||
threads: 8
|
||||
artifact_set:
|
||||
- include:
|
||||
- "/**/spring-boot-docs-*.zip"
|
||||
properties:
|
||||
"zip.type": "docs"
|
||||
"zip.deployed": "false"
|
||||
slack-fail-params: &slack-fail-params
|
||||
text: >
|
||||
:concourse-failed: <!here> <https://ci.spring.io/teams/${BUILD_TEAM_NAME}/pipelines/${BUILD_PIPELINE_NAME}/jobs/${BUILD_JOB_NAME}/builds/${BUILD_NAME}|${BUILD_PIPELINE_NAME} ${BUILD_JOB_NAME} failed!>
|
||||
[$TEXT_FILE_CONTENT]
|
||||
text_file: git-repo/build/build-scan-uri.txt
|
||||
silent: true
|
||||
icon_emoji: ":concourse:"
|
||||
username: concourse-ci
|
||||
slack-success-params: &slack-success-params
|
||||
text: >
|
||||
:concourse-succeeded: <https://ci.spring.io/teams/${BUILD_TEAM_NAME}/pipelines/${BUILD_PIPELINE_NAME}/jobs/${BUILD_JOB_NAME}/builds/${BUILD_NAME}|${BUILD_PIPELINE_NAME} ${BUILD_JOB_NAME} was successful!>
|
||||
[$TEXT_FILE_CONTENT]
|
||||
text_file: git-repo/build/build-scan-uri.txt
|
||||
silent: true
|
||||
icon_emoji: ":concourse:"
|
||||
username: concourse-ci
|
||||
homebrew-tap-repo-resource-source: &homebrew-tap-repo-resource-source
|
||||
uri: ((homebrew-tap-repo))
|
||||
username: ((github-username))
|
||||
password: ((github-ci-release-token))
|
||||
branch: main
|
||||
gradle-publish-params: &gradle-publish-params
|
||||
GRADLE_PUBLISH_KEY: ((gradle-publish-key))
|
||||
GRADLE_PUBLISH_SECRET: ((gradle-publish-secret))
|
||||
resource_types:
|
||||
- name: registry-image
|
||||
type: registry-image
|
||||
source:
|
||||
<<: *registry-image-resource-source
|
||||
repository: ((dockerhub-proxy-cache))concourse/registry-image-resource
|
||||
tag: 1.9.0
|
||||
- name: artifactory-resource
|
||||
type: registry-image
|
||||
source:
|
||||
<<: *registry-image-resource-source
|
||||
repository: ((dockerhub-proxy-cache))springio/artifactory-resource
|
||||
tag: 0.0.18
|
||||
- name: github-status-resource
|
||||
type: registry-image
|
||||
source:
|
||||
<<: *registry-image-resource-source
|
||||
repository: ((dockerhub-proxy-cache))dpb587/github-status-resource
|
||||
tag: master
|
||||
- name: slack-notification
|
||||
type: registry-image
|
||||
source:
|
||||
<<: *registry-image-resource-source
|
||||
repository: ((dockerhub-proxy-cache))cfcommunity/slack-notification-resource
|
||||
tag: latest
|
||||
- name: github-release
|
||||
type: registry-image
|
||||
source:
|
||||
<<: *registry-image-resource-source
|
||||
repository: ((dockerhub-proxy-cache))concourse/github-release-resource
|
||||
tag: 1.8.0
|
||||
resources:
|
||||
- name: git-repo
|
||||
type: git
|
||||
icon: github
|
||||
source:
|
||||
<<: *git-repo-resource-source
|
||||
- name: git-repo-windows
|
||||
type: git
|
||||
icon: github
|
||||
source:
|
||||
<<: *git-repo-resource-source
|
||||
git_config:
|
||||
- name: core.autocrlf
|
||||
value: true
|
||||
- name: github-pre-release
|
||||
type: github-release
|
||||
icon: briefcase-download-outline
|
||||
source:
|
||||
owner: ((github-organization-name))
|
||||
repository: ((github-repository-name))
|
||||
access_token: ((github-ci-release-token))
|
||||
pre_release: true
|
||||
release: false
|
||||
- name: github-release
|
||||
type: github-release
|
||||
icon: briefcase-download
|
||||
source:
|
||||
owner: ((github-organization-name))
|
||||
repository: ((github-repository-name))
|
||||
access_token: ((github-ci-release-token))
|
||||
pre_release: false
|
||||
- name: ci-images-git-repo
|
||||
type: git
|
||||
icon: github
|
||||
source:
|
||||
uri: ((github-repository-uri))
|
||||
branch: ((branch))
|
||||
paths: ["ci/images/*"]
|
||||
- name: ci-image
|
||||
type: registry-image
|
||||
icon: docker
|
||||
source:
|
||||
<<: *ci-registry-image-resource-source
|
||||
repository: projects.registry.vmware.com/spring-oss-ci/spring-boot-ci
|
||||
- name: ci-image-jdk21
|
||||
type: registry-image
|
||||
icon: docker
|
||||
source:
|
||||
<<: *ci-registry-image-resource-source
|
||||
repository: projects.registry.vmware.com/spring-oss-ci/spring-boot-ci-jdk21
|
||||
- name: paketo-builder-base-image
|
||||
type: registry-image
|
||||
icon: docker
|
||||
source:
|
||||
repository: ((dockerhub-proxy-cache))paketobuildpacks/builder-jammy-base
|
||||
tag: latest
|
||||
- name: artifactory-repo
|
||||
type: artifactory-resource
|
||||
icon: package-variant
|
||||
source:
|
||||
uri: ((artifactory-url))
|
||||
username: ((artifactory-username))
|
||||
password: ((artifactory-password))
|
||||
build_name: ((build-name))
|
||||
build_number_prefix: "${BUILD_PIPELINE_NAME}-"
|
||||
check_limit: 500
|
||||
- name: repo-status-build
|
||||
type: github-status-resource
|
||||
icon: eye-check-outline
|
||||
source:
|
||||
repository: ((github-organization-name))/((github-repository-name))
|
||||
access_token: ((github-ci-status-token))
|
||||
branch: ((branch))
|
||||
context: build
|
||||
- name: repo-status-jdk21-build
|
||||
type: github-status-resource
|
||||
icon: eye-check-outline
|
||||
source:
|
||||
repository: ((github-organization-name))/((github-repository-name))
|
||||
access_token: ((github-ci-status-token))
|
||||
branch: ((branch))
|
||||
context: jdk21-build
|
||||
- name: slack-alert
|
||||
type: slack-notification
|
||||
icon: slack
|
||||
source:
|
||||
url: ((slack-webhook-url))
|
||||
- name: every-wednesday
|
||||
type: time
|
||||
icon: clock-outline
|
||||
source:
|
||||
start: 8:00 PM
|
||||
stop: 9:00 PM
|
||||
days: [Wednesday]
|
||||
- name: daily
|
||||
type: time
|
||||
icon: clock-outline
|
||||
source: { interval: "24h" }
|
||||
- name: homebrew-tap-repo
|
||||
type: git
|
||||
icon: github
|
||||
source:
|
||||
<<: *homebrew-tap-repo-resource-source
|
||||
jobs:
|
||||
- name: build-ci-images
|
||||
plan:
|
||||
- get: ci-images-git-repo
|
||||
trigger: true
|
||||
- get: git-repo
|
||||
- in_parallel:
|
||||
- task: build-ci-image
|
||||
privileged: true
|
||||
file: git-repo/ci/tasks/build-ci-image.yml
|
||||
output_mapping:
|
||||
image: ci-image
|
||||
vars:
|
||||
ci-image-name: ci-image
|
||||
dockerhub-proxy-cache: ((dockerhub-proxy-cache))
|
||||
- task: build-ci-image-jdk21
|
||||
privileged: true
|
||||
file: git-repo/ci/tasks/build-ci-image.yml
|
||||
output_mapping:
|
||||
image: ci-image-jdk21
|
||||
vars:
|
||||
ci-image-name: ci-image-jdk21
|
||||
dockerhub-proxy-cache: ((dockerhub-proxy-cache))
|
||||
- in_parallel:
|
||||
- put: ci-image
|
||||
params:
|
||||
image: ci-image/image.tar
|
||||
- put: ci-image-jdk21
|
||||
params:
|
||||
image: ci-image-jdk21/image.tar
|
||||
- name: detect-jdk-updates
|
||||
plan:
|
||||
- get: git-repo
|
||||
- get: every-wednesday
|
||||
trigger: true
|
||||
- get: ci-image
|
||||
- in_parallel:
|
||||
- task: detect-jdk17-update
|
||||
image: ci-image
|
||||
file: git-repo/ci/tasks/detect-jdk-updates.yml
|
||||
params:
|
||||
<<: *github-task-params
|
||||
JDK_VERSION: java17
|
||||
- task: detect-jdk21-update
|
||||
image: ci-image
|
||||
file: git-repo/ci/tasks/detect-jdk-updates.yml
|
||||
params:
|
||||
<<: *github-task-params
|
||||
JDK_VERSION: java21
|
||||
- name: detect-ubuntu-image-updates
|
||||
plan:
|
||||
- get: git-repo
|
||||
- get: every-wednesday
|
||||
trigger: true
|
||||
- get: ci-image
|
||||
- do:
|
||||
- task: detect-ubuntu-image-updates
|
||||
image: ci-image
|
||||
file: git-repo/ci/tasks/detect-ubuntu-image-updates.yml
|
||||
params:
|
||||
<<: *github-task-params
|
||||
- name: detect-docker-updates
|
||||
plan:
|
||||
- get: git-repo
|
||||
- get: every-wednesday
|
||||
trigger: true
|
||||
- get: ci-image
|
||||
- do:
|
||||
- task: detect-docker-updates
|
||||
image: ci-image
|
||||
file: git-repo/ci/tasks/detect-docker-updates.yml
|
||||
params:
|
||||
<<: *github-task-params
|
||||
- name: build
|
||||
serial: true
|
||||
public: true
|
||||
plan:
|
||||
- get: ci-image
|
||||
- get: git-repo
|
||||
trigger: true
|
||||
- put: repo-status-build
|
||||
params: { state: "pending", commit: "git-repo" }
|
||||
- do:
|
||||
- task: build-project
|
||||
image: ci-image
|
||||
<<: *build-project-task-params
|
||||
on_failure:
|
||||
do:
|
||||
- put: repo-status-build
|
||||
params: { state: "failure", commit: "git-repo" }
|
||||
- put: slack-alert
|
||||
params:
|
||||
<<: *slack-fail-params
|
||||
- put: repo-status-build
|
||||
params: { state: "success", commit: "git-repo" }
|
||||
- put: slack-alert
|
||||
params:
|
||||
<<: *slack-success-params
|
||||
- name: jdk21-build
|
||||
serial: true
|
||||
public: true
|
||||
plan:
|
||||
- get: ci-image-jdk21
|
||||
- get: git-repo
|
||||
trigger: true
|
||||
- put: repo-status-jdk21-build
|
||||
params: { state: "pending", commit: "git-repo" }
|
||||
- do:
|
||||
- task: build-project
|
||||
image: ci-image-jdk21
|
||||
privileged: true
|
||||
timeout: ((task-timeout))
|
||||
file: git-repo/ci/tasks/build-project.yml
|
||||
params:
|
||||
BRANCH: ((branch))
|
||||
TOOLCHAIN_JAVA_VERSION: 21
|
||||
<<: *gradle-enterprise-task-params
|
||||
<<: *docker-hub-task-params
|
||||
on_failure:
|
||||
do:
|
||||
- put: repo-status-jdk21-build
|
||||
params: { state: "failure", commit: "git-repo" }
|
||||
- put: slack-alert
|
||||
params:
|
||||
<<: *slack-fail-params
|
||||
- put: repo-status-jdk21-build
|
||||
params: { state: "success", commit: "git-repo" }
|
||||
- put: slack-alert
|
||||
params:
|
||||
<<: *slack-success-params
|
||||
- name: windows-build
|
||||
serial: true
|
||||
plan:
|
||||
- get: git-repo
|
||||
resource: git-repo-windows
|
||||
- get: daily
|
||||
trigger: true
|
||||
- do:
|
||||
- task: build-project
|
||||
privileged: true
|
||||
file: git-repo/ci/tasks/build-project-windows.yml
|
||||
tags:
|
||||
- WIN64
|
||||
timeout: ((task-timeout))
|
||||
params:
|
||||
BRANCH: ((branch))
|
||||
<<: *gradle-enterprise-task-params
|
||||
on_failure:
|
||||
do:
|
||||
- put: slack-alert
|
||||
params:
|
||||
<<: *slack-fail-params
|
||||
- put: slack-alert
|
||||
params:
|
||||
<<: *slack-success-params
|
||||
- name: stage-milestone
|
||||
serial: true
|
||||
plan:
|
||||
- get: ci-image
|
||||
- get: git-repo
|
||||
trigger: false
|
||||
- task: stage
|
||||
image: ci-image
|
||||
timeout: ((task-timeout))
|
||||
file: git-repo/ci/tasks/stage.yml
|
||||
params:
|
||||
FINAL_RELEASE: ((final-release))
|
||||
RELEASE_TYPE: M
|
||||
<<: *gradle-enterprise-task-params
|
||||
<<: *docker-hub-task-params
|
||||
- put: artifactory-repo
|
||||
params:
|
||||
<<: *artifactory-repo-put-params
|
||||
repo: ((artifactory-staging-repository))
|
||||
get_params:
|
||||
threads: 8
|
||||
- put: git-repo
|
||||
params:
|
||||
repository: stage-git-repo
|
||||
- name: stage-rc
|
||||
serial: true
|
||||
plan:
|
||||
- get: ci-image
|
||||
- get: git-repo
|
||||
trigger: false
|
||||
- task: stage
|
||||
image: ci-image
|
||||
timeout: ((task-timeout))
|
||||
file: git-repo/ci/tasks/stage.yml
|
||||
params:
|
||||
FINAL_RELEASE: ((final-release))
|
||||
RELEASE_TYPE: RC
|
||||
<<: *gradle-enterprise-task-params
|
||||
<<: *docker-hub-task-params
|
||||
- put: artifactory-repo
|
||||
params:
|
||||
<<: *artifactory-repo-put-params
|
||||
repo: ((artifactory-staging-repository))
|
||||
get_params:
|
||||
threads: 8
|
||||
- put: git-repo
|
||||
params:
|
||||
repository: stage-git-repo
|
||||
- name: stage-release
|
||||
serial: true
|
||||
plan:
|
||||
- get: ci-image
|
||||
- get: git-repo
|
||||
trigger: false
|
||||
- task: stage
|
||||
image: ci-image
|
||||
timeout: ((task-timeout))
|
||||
file: git-repo/ci/tasks/stage.yml
|
||||
params:
|
||||
FINAL_RELEASE: ((final-release))
|
||||
RELEASE_TYPE: RELEASE
|
||||
<<: *gradle-enterprise-task-params
|
||||
<<: *docker-hub-task-params
|
||||
- put: artifactory-repo
|
||||
params:
|
||||
<<: *artifactory-repo-put-params
|
||||
repo: ((artifactory-staging-repository))
|
||||
get_params:
|
||||
threads: 8
|
||||
- put: git-repo
|
||||
params:
|
||||
repository: stage-git-repo
|
||||
- name: promote-milestone
|
||||
serial: true
|
||||
plan:
|
||||
- get: git-repo
|
||||
trigger: false
|
||||
- get: artifactory-repo
|
||||
trigger: false
|
||||
passed: [stage-milestone]
|
||||
params:
|
||||
download_artifacts: false
|
||||
save_build_info: true
|
||||
- task: promote
|
||||
file: git-repo/ci/tasks/promote.yml
|
||||
vars:
|
||||
dockerhub-proxy-cache: ((dockerhub-proxy-cache))
|
||||
params:
|
||||
RELEASE_TYPE: M
|
||||
<<: *artifactory-task-params
|
||||
- task: generate-changelog
|
||||
file: git-repo/ci/tasks/generate-changelog.yml
|
||||
vars:
|
||||
dockerhub-proxy-cache: ((dockerhub-proxy-cache))
|
||||
params:
|
||||
RELEASE_TYPE: M
|
||||
GITHUB_USERNAME: ((github-username))
|
||||
GITHUB_TOKEN: ((github-ci-release-token))
|
||||
- put: github-pre-release
|
||||
params:
|
||||
name: generated-changelog/tag
|
||||
tag: generated-changelog/tag
|
||||
body: generated-changelog/changelog.md
|
||||
- name: promote-rc
|
||||
serial: true
|
||||
plan:
|
||||
- get: git-repo
|
||||
trigger: false
|
||||
- get: artifactory-repo
|
||||
trigger: false
|
||||
passed: [stage-rc]
|
||||
params:
|
||||
download_artifacts: false
|
||||
save_build_info: true
|
||||
- task: promote
|
||||
file: git-repo/ci/tasks/promote.yml
|
||||
vars:
|
||||
dockerhub-proxy-cache: ((dockerhub-proxy-cache))
|
||||
params:
|
||||
RELEASE_TYPE: RC
|
||||
<<: *artifactory-task-params
|
||||
- task: generate-changelog
|
||||
file: git-repo/ci/tasks/generate-changelog.yml
|
||||
vars:
|
||||
dockerhub-proxy-cache: ((dockerhub-proxy-cache))
|
||||
params:
|
||||
RELEASE_TYPE: RC
|
||||
GITHUB_USERNAME: ((github-username))
|
||||
GITHUB_TOKEN: ((github-ci-release-token))
|
||||
- put: github-pre-release
|
||||
params:
|
||||
name: generated-changelog/tag
|
||||
tag: generated-changelog/tag
|
||||
body: generated-changelog/changelog.md
|
||||
- name: promote-release
|
||||
serial: true
|
||||
plan:
|
||||
- get: git-repo
|
||||
trigger: false
|
||||
- get: artifactory-repo
|
||||
trigger: false
|
||||
passed: [stage-release]
|
||||
params:
|
||||
download_artifacts: true
|
||||
save_build_info: true
|
||||
threads: 8
|
||||
- task: promote
|
||||
file: git-repo/ci/tasks/promote.yml
|
||||
vars:
|
||||
dockerhub-proxy-cache: ((dockerhub-proxy-cache))
|
||||
params:
|
||||
RELEASE_TYPE: RELEASE
|
||||
<<: *artifactory-task-params
|
||||
<<: *sonatype-task-params
|
||||
- name: publish-gradle-plugin
|
||||
serial: true
|
||||
plan:
|
||||
- get: ci-image
|
||||
- get: git-repo
|
||||
- get: artifactory-repo
|
||||
trigger: true
|
||||
passed: [promote-release]
|
||||
params:
|
||||
download_artifacts: true
|
||||
save_build_info: true
|
||||
threads: 8
|
||||
- task: publish-gradle-plugin
|
||||
image: ci-image
|
||||
file: git-repo/ci/tasks/publish-gradle-plugin.yml
|
||||
params:
|
||||
<<: *gradle-publish-params
|
||||
- name: create-github-release
|
||||
serial: true
|
||||
plan:
|
||||
- get: ci-image
|
||||
- get: git-repo
|
||||
- get: artifactory-repo
|
||||
trigger: true
|
||||
passed: [promote-release]
|
||||
params:
|
||||
download_artifacts: false
|
||||
save_build_info: true
|
||||
- task: generate-changelog
|
||||
file: git-repo/ci/tasks/generate-changelog.yml
|
||||
vars:
|
||||
dockerhub-proxy-cache: ((dockerhub-proxy-cache))
|
||||
params:
|
||||
RELEASE_TYPE: RELEASE
|
||||
GITHUB_USERNAME: ((github-username))
|
||||
GITHUB_TOKEN: ((github-ci-release-token))
|
||||
- put: github-release
|
||||
params:
|
||||
name: generated-changelog/tag
|
||||
tag: generated-changelog/tag
|
||||
body: generated-changelog/changelog.md
|
||||
- name: publish-to-sdkman
|
||||
serial: true
|
||||
plan:
|
||||
- get: git-repo
|
||||
- get: artifactory-repo
|
||||
passed: [create-github-release]
|
||||
params:
|
||||
download_artifacts: false
|
||||
save_build_info: true
|
||||
- task: publish-to-sdkman
|
||||
file: git-repo/ci/tasks/publish-to-sdkman.yml
|
||||
vars:
|
||||
dockerhub-proxy-cache: ((dockerhub-proxy-cache))
|
||||
params:
|
||||
<<: *sdkman-task-params
|
||||
RELEASE_TYPE: RELEASE
|
||||
BRANCH: ((branch))
|
||||
LATEST_GA: false
|
||||
- name: update-homebrew-tap
|
||||
serial: true
|
||||
plan:
|
||||
- get: ci-image
|
||||
- get: git-repo
|
||||
- get: homebrew-tap-repo
|
||||
- get: artifactory-repo
|
||||
passed: [create-github-release]
|
||||
params:
|
||||
download_artifacts: false
|
||||
save_build_info: true
|
||||
- task: update-homebrew-tap
|
||||
image: ci-image
|
||||
file: git-repo/ci/tasks/update-homebrew-tap.yml
|
||||
params:
|
||||
LATEST_GA: false
|
||||
- put: homebrew-tap-repo
|
||||
params:
|
||||
repository: updated-homebrew-tap-repo
|
||||
- name: run-system-tests
|
||||
serial: true
|
||||
public: true
|
||||
plan:
|
||||
- get: ci-image
|
||||
- get: git-repo
|
||||
- get: paketo-builder-base-image
|
||||
trigger: true
|
||||
- get: daily
|
||||
trigger: true
|
||||
- do:
|
||||
- task: run-system-tests
|
||||
image: ci-image
|
||||
<<: *run-system-tests-task-params
|
||||
on_failure:
|
||||
do:
|
||||
- put: slack-alert
|
||||
params:
|
||||
<<: *slack-fail-params
|
||||
- put: slack-alert
|
||||
params:
|
||||
<<: *slack-success-params
|
||||
- name: jdk21-run-system-tests
|
||||
serial: true
|
||||
public: true
|
||||
plan:
|
||||
- get: ci-image-jdk21
|
||||
- get: git-repo
|
||||
- get: paketo-builder-base-image
|
||||
trigger: true
|
||||
- get: daily
|
||||
trigger: true
|
||||
- do:
|
||||
- task: run-system-tests
|
||||
image: ci-image-jdk21
|
||||
privileged: true
|
||||
timeout: ((task-timeout))
|
||||
file: git-repo/ci/tasks/run-system-tests.yml
|
||||
params:
|
||||
BRANCH: ((branch))
|
||||
TOOLCHAIN_JAVA_VERSION: 21
|
||||
<<: *gradle-enterprise-task-params
|
||||
<<: *docker-hub-task-params
|
||||
on_failure:
|
||||
do:
|
||||
- put: slack-alert
|
||||
params:
|
||||
<<: *slack-fail-params
|
||||
- put: slack-alert
|
||||
params:
|
||||
<<: *slack-success-params
|
||||
groups:
|
||||
- name: "builds"
|
||||
jobs: ["build", "jdk21-build", "windows-build"]
|
||||
- name: "releases"
|
||||
jobs: ["stage-milestone", "stage-rc", "stage-release", "promote-milestone", "promote-rc", "promote-release", "create-github-release", "publish-gradle-plugin", "publish-to-sdkman", "update-homebrew-tap"]
|
||||
- name: "system-tests"
|
||||
jobs: ["run-system-tests", "jdk21-run-system-tests"]
|
||||
- name: "ci-images"
|
||||
jobs: ["build-ci-images", "detect-docker-updates", "detect-jdk-updates", "detect-ubuntu-image-updates"]
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
SET "JAVA_HOME=C:\opt\jdk-17"
|
||||
SET PATH=%PATH%;C:\Program Files\Git\usr\bin
|
||||
cd git-repo
|
||||
.\gradlew -Dorg.gradle.internal.launcher.welcomeMessageEnabled=false --no-daemon --max-workers=4 build
|
|
@ -1,13 +0,0 @@
|
|||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
source $(dirname $0)/common.sh
|
||||
repository=$(pwd)/distribution-repository
|
||||
|
||||
pushd git-repo > /dev/null
|
||||
if [[ -d /opt/openjdk-toolchain ]]; then
|
||||
./gradlew -Dorg.gradle.internal.launcher.welcomeMessageEnabled=false --no-daemon --max-workers=4 -PdeploymentRepository=${repository} build publishAllPublicationsToDeploymentRepository -PtoolchainVersion=${TOOLCHAIN_JAVA_VERSION} -Porg.gradle.java.installations.auto-detect=false -Porg.gradle.java.installations.auto-download=false -Porg.gradle.java.installations.paths=/opt/openjdk-toolchain/
|
||||
else
|
||||
./gradlew -Dorg.gradle.internal.launcher.welcomeMessageEnabled=false --no-daemon --max-workers=4 -PdeploymentRepository=${repository} build publishAllPublicationsToDeploymentRepository
|
||||
fi
|
||||
popd > /dev/null
|
|
@ -1,7 +0,0 @@
|
|||
source /opt/concourse-java.sh
|
||||
|
||||
setup_symlinks
|
||||
|
||||
cleanup_maven_repo "org.springframework.boot"
|
||||
|
||||
echo 'systemProp.user.name=concourse' > ~/.gradle/gradle.properties
|
|
@ -1,35 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
latest_version=$(curl -I -s https://github.com/moby/moby/releases/latest | grep -i "location:" | awk '{n=split($0, parts, "/"); print substr(parts[n],2);}' | awk '{$1=$1;print}' | tr -d '\r' | tr -d '\n' )
|
||||
|
||||
if [[ $latest_version =~ (beta|rc) ]]; then
|
||||
echo "Skip pre-release versions"
|
||||
exit 0;
|
||||
fi
|
||||
|
||||
title_prefix="Upgrade CI to Docker"
|
||||
milestone_number=$( curl -u ${GITHUB_USERNAME}:${GITHUB_PASSWORD} -s https://api.github.com/repos/${GITHUB_ORGANIZATION}/${GITHUB_REPO}/milestones\?state\=open | jq -c --arg MILESTONE "$MILESTONE" '.[] | select(.title==$MILESTONE)' | jq -r '.number')
|
||||
existing_upgrade_issues=$( curl -u ${GITHUB_USERNAME}:${GITHUB_PASSWORD} -s https://api.github.com/repos/${GITHUB_ORGANIZATION}/${GITHUB_REPO}/issues\?labels\=type:%20task\&state\=open\&creator\=spring-builds\&milestone\=${milestone_number} | jq -c --arg TITLE_PREFIX "$title_prefix" '.[] | select(.title | startswith($TITLE_PREFIX))' )
|
||||
|
||||
latest="https://download.docker.com/linux/static/stable/x86_64/docker-$latest_version.tgz"
|
||||
current=$( git-repo/ci/images/get-docker-url.sh )
|
||||
|
||||
if [[ $current = $latest ]]; then
|
||||
echo "Already up-to-date"
|
||||
exit 0;
|
||||
fi
|
||||
|
||||
ISSUE_TITLE="$title_prefix $latest_version"
|
||||
|
||||
if [[ ${existing_upgrade_issues} = "" ]]; then
|
||||
curl \
|
||||
-s \
|
||||
-u ${GITHUB_USERNAME}:${GITHUB_PASSWORD} \
|
||||
-H "Content-type:application/json" \
|
||||
-d "{\"title\":\"${ISSUE_TITLE}\",\"milestone\":\"${milestone_number}\",\"body\": \"${latest}\",\"labels\":[\"type: task\"]}" \
|
||||
-f \
|
||||
-X \
|
||||
POST "https://api.github.com/repos/${GITHUB_ORGANIZATION}/${GITHUB_REPO}/issues" > /dev/null || { echo "Failed to create issue" >&2; exit 1; }
|
||||
else
|
||||
echo "Issue already exists."
|
||||
fi
|
|
@ -1,60 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
report_error() {
|
||||
echo "Script exited with error $1 on line $2"
|
||||
exit 1;
|
||||
}
|
||||
|
||||
trap 'report_error $? $LINENO' ERR
|
||||
|
||||
case "$JDK_VERSION" in
|
||||
java17)
|
||||
BASE_URL="https://api.bell-sw.com/v1/liberica/releases?version-feature=17"
|
||||
ISSUE_TITLE="Upgrade Java 17 version in CI image and .sdkmanrc"
|
||||
;;
|
||||
java21)
|
||||
BASE_URL="https://api.bell-sw.com/v1/liberica/releases?version-feature=21"
|
||||
ISSUE_TITLE="Upgrade Java 21 version in CI image"
|
||||
;;
|
||||
*)
|
||||
echo $"Unknown java version"
|
||||
exit 1;
|
||||
esac
|
||||
|
||||
response=$( curl -s ${BASE_URL}\&arch\=x86\&bitness\=64\&bundle-type\=jdk\&os\=linux\&package-type\=tar.gz\&version-modifier\=latest )
|
||||
latest=$( jq -r '.[0].downloadUrl' <<< "$response" )
|
||||
if [[ ${latest} = "null" || ${latest} = "" ]]; then
|
||||
echo "Could not parse JDK response: $response"
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
current=$( git-repo/ci/images/get-jdk-url.sh ${JDK_VERSION} )
|
||||
|
||||
if [[ $current = $latest ]]; then
|
||||
echo "Already up-to-date"
|
||||
exit 0;
|
||||
fi
|
||||
|
||||
milestone_response=$( curl -s -u ${GITHUB_USERNAME}:${GITHUB_PASSWORD} https://api.github.com/repos/${GITHUB_ORGANIZATION}/${GITHUB_REPO}/milestones\?state\=open )
|
||||
milestone_result=$( jq -r -c --arg MILESTONE "$MILESTONE" '.[] | select(has("title")) | select(.title==$MILESTONE)' <<< "$milestone_response" )
|
||||
if [[ ${milestone_result} = "null" || ${milestone_result} = "" ]]; then
|
||||
echo "Could not parse milestone: $milestone_response"
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
milestone_number=$( jq -r '.number' <<< "$milestone_result" )
|
||||
existing_tasks=$( curl -u ${GITHUB_USERNAME}:${GITHUB_PASSWORD} -s https://api.github.com/repos/${GITHUB_ORGANIZATION}/${GITHUB_REPO}/issues\?labels\=type:%20task\&state\=open\&creator\=spring-builds\&milestone\=${milestone_number} )
|
||||
existing_jdk_issues=$( jq -r -c --arg TITLE "$ISSUE_TITLE" '.[] | select(has("title")) | select(.title==$TITLE)' <<< "$existing_tasks" )
|
||||
|
||||
if [[ ${existing_jdk_issues} = "" ]]; then
|
||||
curl \
|
||||
-s \
|
||||
-u ${GITHUB_USERNAME}:${GITHUB_PASSWORD} \
|
||||
-H "Content-type:application/json" \
|
||||
-d "{\"title\":\"${ISSUE_TITLE}\",\"milestone\":\"${milestone_number}\",\"body\": \"${latest}\",\"labels\":[\"type: task\"]}" \
|
||||
-f \
|
||||
-X \
|
||||
POST "https://api.github.com/repos/${GITHUB_ORGANIZATION}/${GITHUB_REPO}/issues" > /dev/null || { echo "Failed to create issue" >&2; exit 1; }
|
||||
else
|
||||
echo "Issue already exists."
|
||||
fi
|
|
@ -1,29 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
ISSUE_TITLE="Upgrade Ubuntu version in CI images"
|
||||
|
||||
ubuntu="jammy"
|
||||
latest=$( curl -s "https://hub.docker.com/v2/repositories/library/ubuntu/tags/?page_size=1&page=1&name=$ubuntu" | jq -c -r '.results[0].name' | awk '{split($0, parts, "-"); print parts[2]}' )
|
||||
current=$( grep "ubuntu:$ubuntu" git-repo/ci/images/ci-image/Dockerfile | awk '{split($0, parts, "-"); print parts[2]}' )
|
||||
|
||||
if [[ $current = $latest ]]; then
|
||||
echo "Already up-to-date"
|
||||
exit 0;
|
||||
fi
|
||||
|
||||
milestone_number=$( curl -u ${GITHUB_USERNAME}:${GITHUB_PASSWORD} -s https://api.github.com/repos/${GITHUB_ORGANIZATION}/${GITHUB_REPO}/milestones\?state\=open | jq -c --arg MILESTONE "$MILESTONE" '.[] | select(.title==$MILESTONE)' | jq -r '.number')
|
||||
existing_tasks=$( curl -u ${GITHUB_USERNAME}:${GITHUB_PASSWORD} -s https://api.github.com/repos/${GITHUB_ORGANIZATION}/${GITHUB_REPO}/issues\?labels\=type:%20task\&state\=open\&creator\=spring-builds\&milestone\=${milestone_number} )
|
||||
existing_upgrade_issues=$( echo "$existing_tasks" | jq -c --arg TITLE "$ISSUE_TITLE" '.[] | select(.title==$TITLE)' )
|
||||
|
||||
if [[ ${existing_upgrade_issues} = "" ]]; then
|
||||
curl \
|
||||
-s \
|
||||
-u ${GITHUB_USERNAME}:${GITHUB_PASSWORD} \
|
||||
-H "Content-type:application/json" \
|
||||
-d "{\"title\":\"${ISSUE_TITLE}\",\"milestone\":\"${milestone_number}\",\"body\": \"Upgrade to ubuntu:${ubuntu}-${latest}\",\"labels\":[\"type: task\"]}" \
|
||||
-f \
|
||||
-X \
|
||||
POST "https://api.github.com/repos/${GITHUB_ORGANIZATION}/${GITHUB_REPO}/issues" > /dev/null || { echo "Failed to create issue" >&2; exit 1; }
|
||||
else
|
||||
echo "Issue already exists."
|
||||
fi
|
|
@ -1,12 +0,0 @@
|
|||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
CONFIG_DIR=git-repo/ci/config
|
||||
version=$( cat artifactory-repo/build-info.json | jq -r '.buildInfo.modules[0].id' | sed 's/.*:.*:\(.*\)/\1/' )
|
||||
|
||||
java -jar /github-changelog-generator.jar \
|
||||
--spring.config.location=${CONFIG_DIR}/changelog-generator.yml \
|
||||
${version} generated-changelog/changelog.md
|
||||
|
||||
echo ${version} > generated-changelog/version
|
||||
echo v${version} > generated-changelog/tag
|
|
@ -1,17 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
CONFIG_DIR=git-repo/ci/config
|
||||
|
||||
version=$( cat artifactory-repo/build-info.json | jq -r '.buildInfo.modules[0].id' | sed 's/.*:.*:\(.*\)/\1/' )
|
||||
export BUILD_INFO_LOCATION=$(pwd)/artifactory-repo/build-info.json
|
||||
|
||||
java -jar /concourse-release-scripts.jar \
|
||||
--spring.config.location=${CONFIG_DIR}/release-scripts.yml \
|
||||
publishToCentral $RELEASE_TYPE $BUILD_INFO_LOCATION artifactory-repo || { exit 1; }
|
||||
|
||||
java -jar /concourse-release-scripts.jar \
|
||||
--spring.config.location=${CONFIG_DIR}/release-scripts.yml \
|
||||
promote $RELEASE_TYPE $BUILD_INFO_LOCATION || { exit 1; }
|
||||
|
||||
echo "Promotion complete"
|
||||
echo $version > version/version
|
|
@ -1,7 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
source $(dirname $0)/common.sh
|
||||
|
||||
version=$( cat artifactory-repo/build-info.json | jq -r '.buildInfo.modules[0].id' | sed 's/.*:.*:\(.*\)/\1/' )
|
||||
|
||||
git-repo/gradlew publishExisting -p git-repo/ci/config/gradle-plugin-publishing -Pgradle.publish.key=${GRADLE_PUBLISH_KEY} -Pgradle.publish.secret=${GRADLE_PUBLISH_SECRET} -PbootVersion=${version} -PrepositoryRoot=$(pwd)/artifactory-repo
|
|
@ -1,11 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
CONFIG_DIR=git-repo/ci/config
|
||||
|
||||
version=$( cat artifactory-repo/build-info.json | jq -r '.buildInfo.modules[0].id' | sed 's/.*:.*:\(.*\)/\1/' )
|
||||
|
||||
java -jar /concourse-release-scripts.jar \
|
||||
--spring.config.location=${CONFIG_DIR}/release-scripts.yml \
|
||||
publishToSdkman $RELEASE_TYPE $version $LATEST_GA || { exit 1; }
|
||||
|
||||
echo "Push to SDKMAN complete"
|
|
@ -1,12 +0,0 @@
|
|||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
source $(dirname $0)/common.sh
|
||||
|
||||
pushd git-repo > /dev/null
|
||||
if [[ -d /opt/openjdk-toolchain ]]; then
|
||||
./gradlew -Dorg.gradle.internal.launcher.welcomeMessageEnabled=false --no-daemon --max-workers=4 systemTest -PtoolchainVersion=${TOOLCHAIN_JAVA_VERSION} -Porg.gradle.java.installations.auto-detect=false -Porg.gradle.java.installations.auto-download=false -Porg.gradle.java.installations.paths=/opt/openjdk-toolchain/
|
||||
else
|
||||
./gradlew -Dorg.gradle.internal.launcher.welcomeMessageEnabled=false --no-daemon --max-workers=4 systemTest
|
||||
fi
|
||||
popd > /dev/null
|
|
@ -1,50 +0,0 @@
|
|||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
source $(dirname $0)/common.sh
|
||||
repository=$(pwd)/distribution-repository
|
||||
|
||||
pushd git-repo > /dev/null
|
||||
git fetch --tags --all > /dev/null
|
||||
popd > /dev/null
|
||||
|
||||
git clone git-repo stage-git-repo > /dev/null
|
||||
|
||||
pushd stage-git-repo > /dev/null
|
||||
|
||||
snapshotVersion=$( awk -F '=' '$1 == "version" { print $2 }' gradle.properties )
|
||||
if [[ $RELEASE_TYPE = "M" ]]; then
|
||||
stageVersion=$( get_next_milestone_release $snapshotVersion)
|
||||
nextVersion=$snapshotVersion
|
||||
elif [[ $RELEASE_TYPE = "RC" ]]; then
|
||||
stageVersion=$( get_next_rc_release $snapshotVersion)
|
||||
nextVersion=$snapshotVersion
|
||||
elif [[ $RELEASE_TYPE = "RELEASE" ]]; then
|
||||
stageVersion=$( get_next_release $snapshotVersion)
|
||||
nextVersion=$( bump_version_number $snapshotVersion)
|
||||
else
|
||||
echo "Unknown release type $RELEASE_TYPE" >&2; exit 1;
|
||||
fi
|
||||
|
||||
echo "Staging $stageVersion (next version will be $nextVersion)"
|
||||
sed -i "s/version=$snapshotVersion/version=$stageVersion/" gradle.properties
|
||||
|
||||
git config user.name "Spring Builds" > /dev/null
|
||||
git config user.email "spring-builds@users.noreply.github.com" > /dev/null
|
||||
git add gradle.properties > /dev/null
|
||||
git commit -m"Release v$stageVersion" > /dev/null
|
||||
git tag -a "v$stageVersion" -m"Release v$stageVersion" > /dev/null
|
||||
|
||||
./gradlew --no-daemon --max-workers=4 -PdeploymentRepository=${repository} build publishAllPublicationsToDeploymentRepository
|
||||
|
||||
git reset --hard HEAD^ > /dev/null
|
||||
if [[ $FINAL_RELEASE != true && $nextVersion != $snapshotVersion ]]; then
|
||||
echo "Setting next development version (v$nextVersion)"
|
||||
sed -i "s/version=$snapshotVersion/version=$nextVersion/" gradle.properties
|
||||
git add gradle.properties > /dev/null
|
||||
git commit -m"Next development version (v$nextVersion)" > /dev/null
|
||||
fi
|
||||
|
||||
echo "DONE"
|
||||
|
||||
popd > /dev/null
|
|
@ -1,19 +0,0 @@
|
|||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
version=$( cat artifactory-repo/build-info.json | jq -r '.buildInfo.modules[0].id' | sed 's/.*:.*:\(.*\)/\1/' )
|
||||
|
||||
git clone homebrew-tap-repo updated-homebrew-tap-repo > /dev/null
|
||||
|
||||
if [[ $LATEST_GA = true ]]; then
|
||||
pushd updated-homebrew-tap-repo > /dev/null
|
||||
curl https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-cli/${version}/spring-boot-cli-${version}-homebrew.rb --output spring-boot-cli-${version}-homebrew.rb
|
||||
rm spring-boot.rb
|
||||
mv spring-boot-cli-*.rb spring-boot.rb
|
||||
git config user.name "Spring Builds" > /dev/null
|
||||
git config user.email "spring-builds@users.noreply.github.com" > /dev/null
|
||||
git add spring-boot.rb > /dev/null
|
||||
git commit -m "Upgrade to Spring Boot ${version}" > /dev/null
|
||||
echo "DONE"
|
||||
popd > /dev/null
|
||||
fi
|
|
@ -1,30 +0,0 @@
|
|||
---
|
||||
platform: linux
|
||||
image_resource:
|
||||
type: registry-image
|
||||
source:
|
||||
tag: 0.11.1
|
||||
repository: ((dockerhub-proxy-cache))concourse/oci-build-task
|
||||
username: ((docker-hub-username))
|
||||
password: ((docker-hub-password))
|
||||
inputs:
|
||||
- name: ci-images-git-repo
|
||||
outputs:
|
||||
- name: image
|
||||
caches:
|
||||
- path: ci-image-cache
|
||||
params:
|
||||
CONTEXT: ci-images-git-repo/ci/images
|
||||
DOCKERFILE: ci-images-git-repo/ci/images/((ci-image-name))/Dockerfile
|
||||
DOCKER_HUB_AUTH: ((docker-hub-auth))
|
||||
BUILD_ARG_DOCKER_PROXY_CACHE: ((dockerhub-proxy-cache))
|
||||
run:
|
||||
path: /bin/sh
|
||||
args:
|
||||
- "-c"
|
||||
- |
|
||||
mkdir -p /root/.docker
|
||||
cat > /root/.docker/config.json <<EOF
|
||||
{ "auths": { "https://index.docker.io/v1/": { "auth": "$DOCKER_HUB_AUTH" }}}
|
||||
EOF
|
||||
build
|
|
@ -1,16 +0,0 @@
|
|||
---
|
||||
platform: windows
|
||||
inputs:
|
||||
- name: git-repo
|
||||
outputs:
|
||||
- name: git-repo
|
||||
params:
|
||||
BRANCH:
|
||||
CI: true
|
||||
GRADLE_ENTERPRISE_ACCESS_KEY:
|
||||
GRADLE_ENTERPRISE_CACHE_URL:
|
||||
GRADLE_ENTERPRISE_CACHE_USERNAME:
|
||||
GRADLE_ENTERPRISE_CACHE_PASSWORD:
|
||||
GRADLE_ENTERPRISE_URL: https://ge.spring.io
|
||||
run:
|
||||
path: git-repo/ci/scripts/build-project-windows.bat
|
|
@ -1,31 +0,0 @@
|
|||
---
|
||||
platform: linux
|
||||
inputs:
|
||||
- name: git-repo
|
||||
outputs:
|
||||
- name: distribution-repository
|
||||
- name: git-repo
|
||||
caches:
|
||||
- path: gradle
|
||||
- path: maven
|
||||
params:
|
||||
BRANCH:
|
||||
CI: true
|
||||
GRADLE_ENTERPRISE_ACCESS_KEY:
|
||||
GRADLE_ENTERPRISE_CACHE_URL:
|
||||
GRADLE_ENTERPRISE_CACHE_USERNAME:
|
||||
GRADLE_ENTERPRISE_CACHE_PASSWORD:
|
||||
GRADLE_ENTERPRISE_URL: https://ge.spring.io
|
||||
DOCKER_HUB_MIRROR:
|
||||
run:
|
||||
path: bash
|
||||
args:
|
||||
- "-ec"
|
||||
- |
|
||||
mkdir -p /root/.docker
|
||||
cat > /root/.docker/config.json <<EOF
|
||||
{ "auths": { "https://index.docker.io/v1/": { "auth": "$DOCKER_HUB_AUTH" }}}
|
||||
EOF
|
||||
source /docker-lib.sh
|
||||
start_docker $DOCKER_HUB_MIRROR
|
||||
${PWD}/git-repo/ci/scripts/build-project.sh
|
|
@ -1,12 +0,0 @@
|
|||
---
|
||||
platform: linux
|
||||
inputs:
|
||||
- name: git-repo
|
||||
params:
|
||||
GITHUB_REPO:
|
||||
GITHUB_ORGANIZATION:
|
||||
GITHUB_PASSWORD:
|
||||
GITHUB_USERNAME:
|
||||
MILESTONE:
|
||||
run:
|
||||
path: git-repo/ci/scripts/detect-docker-updates.sh
|
|
@ -1,13 +0,0 @@
|
|||
---
|
||||
platform: linux
|
||||
inputs:
|
||||
- name: git-repo
|
||||
params:
|
||||
GITHUB_REPO:
|
||||
GITHUB_ORGANIZATION:
|
||||
GITHUB_PASSWORD:
|
||||
GITHUB_USERNAME:
|
||||
JDK_VERSION:
|
||||
MILESTONE:
|
||||
run:
|
||||
path: git-repo/ci/scripts/detect-jdk-updates.sh
|
|
@ -1,12 +0,0 @@
|
|||
---
|
||||
platform: linux
|
||||
inputs:
|
||||
- name: git-repo
|
||||
params:
|
||||
GITHUB_REPO:
|
||||
GITHUB_ORGANIZATION:
|
||||
GITHUB_PASSWORD:
|
||||
GITHUB_USERNAME:
|
||||
MILESTONE:
|
||||
run:
|
||||
path: git-repo/ci/scripts/detect-ubuntu-image-updates.sh
|
|
@ -1,22 +0,0 @@
|
|||
---
|
||||
platform: linux
|
||||
image_resource:
|
||||
type: registry-image
|
||||
source:
|
||||
repository: ((dockerhub-proxy-cache))springio/github-changelog-generator
|
||||
tag: '0.0.8'
|
||||
username: ((docker-hub-username))
|
||||
password: ((docker-hub-password))
|
||||
inputs:
|
||||
- name: git-repo
|
||||
- name: artifactory-repo
|
||||
outputs:
|
||||
- name: generated-changelog
|
||||
params:
|
||||
GITHUB_ORGANIZATION:
|
||||
GITHUB_REPO:
|
||||
GITHUB_USERNAME:
|
||||
GITHUB_TOKEN:
|
||||
RELEASE_TYPE:
|
||||
run:
|
||||
path: git-repo/ci/scripts/generate-changelog.sh
|
|
@ -1,25 +0,0 @@
|
|||
---
|
||||
platform: linux
|
||||
image_resource:
|
||||
type: registry-image
|
||||
source:
|
||||
repository: ((dockerhub-proxy-cache))springio/concourse-release-scripts
|
||||
tag: '0.4.0'
|
||||
username: ((docker-hub-username))
|
||||
password: ((docker-hub-password))
|
||||
inputs:
|
||||
- name: git-repo
|
||||
- name: artifactory-repo
|
||||
outputs:
|
||||
- name: version
|
||||
params:
|
||||
RELEASE_TYPE:
|
||||
ARTIFACTORY_URL:
|
||||
ARTIFACTORY_USERNAME:
|
||||
ARTIFACTORY_PASSWORD:
|
||||
SONATYPE_USERNAME:
|
||||
SONATYPE_PASSWORD:
|
||||
SONATYPE_URL:
|
||||
SONATYPE_STAGING_PROFILE_ID:
|
||||
run:
|
||||
path: git-repo/ci/scripts/promote.sh
|
|
@ -1,10 +0,0 @@
|
|||
---
|
||||
platform: linux
|
||||
inputs:
|
||||
- name: artifactory-repo
|
||||
- name: git-repo
|
||||
params:
|
||||
GRADLE_PUBLISH_KEY:
|
||||
GRADLE_PUBLISH_SECRET:
|
||||
run:
|
||||
path: git-repo/ci/scripts/publish-gradle-plugin.sh
|
|
@ -1,20 +0,0 @@
|
|||
---
|
||||
platform: linux
|
||||
image_resource:
|
||||
type: registry-image
|
||||
source:
|
||||
repository: ((dockerhub-proxy-cache))springio/concourse-release-scripts
|
||||
tag: '0.4.0'
|
||||
username: ((docker-hub-username))
|
||||
password: ((docker-hub-password))
|
||||
inputs:
|
||||
- name: git-repo
|
||||
- name: artifactory-repo
|
||||
params:
|
||||
RELEASE_TYPE:
|
||||
BRANCH:
|
||||
LATEST_GA:
|
||||
SDKMAN_CONSUMER_KEY:
|
||||
SDKMAN_CONSUMER_TOKEN:
|
||||
run:
|
||||
path: git-repo/ci/scripts/publish-to-sdkman.sh
|
|
@ -1,29 +0,0 @@
|
|||
---
|
||||
platform: linux
|
||||
inputs:
|
||||
- name: git-repo
|
||||
outputs:
|
||||
- name: git-repo
|
||||
caches:
|
||||
- path: gradle
|
||||
params:
|
||||
BRANCH:
|
||||
CI: true
|
||||
GRADLE_ENTERPRISE_ACCESS_KEY:
|
||||
GRADLE_ENTERPRISE_CACHE_URL:
|
||||
GRADLE_ENTERPRISE_CACHE_USERNAME:
|
||||
GRADLE_ENTERPRISE_CACHE_PASSWORD:
|
||||
GRADLE_ENTERPRISE_URL: https://ge.spring.io
|
||||
DOCKER_HUB_MIRROR:
|
||||
run:
|
||||
path: bash
|
||||
args:
|
||||
- -ec
|
||||
- |
|
||||
mkdir -p /root/.docker
|
||||
cat > /root/.docker/config.json <<EOF
|
||||
{ "auths": { "https://index.docker.io/v1/": { "auth": "$DOCKER_HUB_AUTH" }}}
|
||||
EOF
|
||||
source /docker-lib.sh
|
||||
start_docker $DOCKER_HUB_MIRROR
|
||||
${PWD}/git-repo/ci/scripts/run-system-tests.sh
|
|
@ -1,19 +0,0 @@
|
|||
---
|
||||
platform: linux
|
||||
inputs:
|
||||
- name: git-repo
|
||||
outputs:
|
||||
- name: stage-git-repo
|
||||
- name: distribution-repository
|
||||
params:
|
||||
RELEASE_TYPE:
|
||||
CI: true
|
||||
FINAL_RELEASE:
|
||||
GRADLE_ENTERPRISE_CACHE_URL:
|
||||
GRADLE_ENTERPRISE_CACHE_USERNAME:
|
||||
GRADLE_ENTERPRISE_CACHE_PASSWORD:
|
||||
GRADLE_ENTERPRISE_URL: https://ge.spring.io
|
||||
caches:
|
||||
- path: gradle
|
||||
run:
|
||||
path: git-repo/ci/scripts/stage.sh
|
|
@ -1,12 +0,0 @@
|
|||
---
|
||||
platform: linux
|
||||
inputs:
|
||||
- name: git-repo
|
||||
- name: homebrew-tap-repo
|
||||
- name: artifactory-repo
|
||||
outputs:
|
||||
- name: updated-homebrew-tap-repo
|
||||
params:
|
||||
LATEST_GA:
|
||||
run:
|
||||
path: git-repo/ci/scripts/update-homebrew-tap.sh
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2022 the original author or authors.
|
||||
* Copyright 2012-2024 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -20,7 +20,6 @@ import org.eclipse.jetty.http.UriCompliance;
|
|||
import org.eclipse.jetty.server.AllowedResourceAliasChecker;
|
||||
import org.eclipse.jetty.server.Connector;
|
||||
import org.eclipse.jetty.server.HttpConnectionFactory;
|
||||
import org.eclipse.jetty.server.handler.ContextHandler;
|
||||
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||
import org.springframework.boot.web.embedded.jetty.JettyServerCustomizer;
|
||||
|
@ -30,24 +29,19 @@ import org.springframework.context.annotation.Configuration;
|
|||
/**
|
||||
* {@link JettyServerCustomizer} that:
|
||||
* <ul>
|
||||
* <li>Approves all aliases (Used for Windows CI on
|
||||
* Concourse)
|
||||
* <li>Relaxes URI compliance to allow access to static resources with {@code %} in their file name.
|
||||
* </ul>
|
||||
*
|
||||
* @author Madhura Bhave
|
||||
* @author Andy Wilkinson
|
||||
*/
|
||||
@ConditionalOnClass(name = {"org.eclipse.jetty.server.handler.ContextHandler"})
|
||||
@ConditionalOnClass(name = "org.eclipse.jetty.server.Connector")
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
public class JettyServerCustomizerConfig {
|
||||
|
||||
@Bean
|
||||
public JettyServerCustomizer jettyServerCustomizer() {
|
||||
return (server) -> {
|
||||
ContextHandler handler = (ContextHandler) server.getHandler();
|
||||
handler.addAliasCheck((path, resource) -> true);
|
||||
|
||||
for (Connector connector : server.getConnectors()) {
|
||||
connector.getConnectionFactory(HttpConnectionFactory.class).getHttpConfiguration()
|
||||
.setUriCompliance(UriCompliance.LEGACY);
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2022 the original author or authors.
|
||||
* Copyright 2012-2024 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -16,16 +16,12 @@
|
|||
|
||||
package smoketest.jetty.jsp;
|
||||
|
||||
import org.eclipse.jetty.server.handler.ContextHandler;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
|
||||
import org.springframework.boot.test.web.client.TestRestTemplate;
|
||||
import org.springframework.boot.web.embedded.jetty.JettyServerCustomizer;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
|
||||
|
@ -36,8 +32,7 @@ import static org.assertj.core.api.Assertions.assertThat;
|
|||
*
|
||||
* @author Phillip Webb
|
||||
*/
|
||||
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT,
|
||||
classes = { SampleWebJspApplicationTests.JettyCustomizerConfig.class, SampleJettyJspApplication.class })
|
||||
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
|
||||
class SampleWebJspApplicationTests {
|
||||
|
||||
@Autowired
|
||||
|
@ -50,19 +45,4 @@ class SampleWebJspApplicationTests {
|
|||
assertThat(entity.getBody()).contains("/resources/text.txt");
|
||||
}
|
||||
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
static class JettyCustomizerConfig {
|
||||
|
||||
// To allow aliased resources on Concourse Windows CI (See gh-15553) to be served
|
||||
// as static resources.
|
||||
@Bean
|
||||
JettyServerCustomizer jettyServerCustomizer() {
|
||||
return (server) -> {
|
||||
ContextHandler handler = (ContextHandler) server.getHandler();
|
||||
handler.addAliasCheck((path, resource) -> true);
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue