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");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with 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.AllowedResourceAliasChecker;
|
||||||
import org.eclipse.jetty.server.Connector;
|
import org.eclipse.jetty.server.Connector;
|
||||||
import org.eclipse.jetty.server.HttpConnectionFactory;
|
import org.eclipse.jetty.server.HttpConnectionFactory;
|
||||||
import org.eclipse.jetty.server.handler.ContextHandler;
|
|
||||||
|
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||||
import org.springframework.boot.web.embedded.jetty.JettyServerCustomizer;
|
import org.springframework.boot.web.embedded.jetty.JettyServerCustomizer;
|
||||||
|
@ -30,24 +29,19 @@ import org.springframework.context.annotation.Configuration;
|
||||||
/**
|
/**
|
||||||
* {@link JettyServerCustomizer} that:
|
* {@link JettyServerCustomizer} that:
|
||||||
* <ul>
|
* <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.
|
* <li>Relaxes URI compliance to allow access to static resources with {@code %} in their file name.
|
||||||
* </ul>
|
* </ul>
|
||||||
*
|
*
|
||||||
* @author Madhura Bhave
|
* @author Madhura Bhave
|
||||||
* @author Andy Wilkinson
|
* @author Andy Wilkinson
|
||||||
*/
|
*/
|
||||||
@ConditionalOnClass(name = {"org.eclipse.jetty.server.handler.ContextHandler"})
|
@ConditionalOnClass(name = "org.eclipse.jetty.server.Connector")
|
||||||
@Configuration(proxyBeanMethods = false)
|
@Configuration(proxyBeanMethods = false)
|
||||||
public class JettyServerCustomizerConfig {
|
public class JettyServerCustomizerConfig {
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
public JettyServerCustomizer jettyServerCustomizer() {
|
public JettyServerCustomizer jettyServerCustomizer() {
|
||||||
return (server) -> {
|
return (server) -> {
|
||||||
ContextHandler handler = (ContextHandler) server.getHandler();
|
|
||||||
handler.addAliasCheck((path, resource) -> true);
|
|
||||||
|
|
||||||
for (Connector connector : server.getConnectors()) {
|
for (Connector connector : server.getConnectors()) {
|
||||||
connector.getConnectionFactory(HttpConnectionFactory.class).getHttpConfiguration()
|
connector.getConnectionFactory(HttpConnectionFactory.class).getHttpConfiguration()
|
||||||
.setUriCompliance(UriCompliance.LEGACY);
|
.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");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -16,16 +16,12 @@
|
||||||
|
|
||||||
package smoketest.jetty.jsp;
|
package smoketest.jetty.jsp;
|
||||||
|
|
||||||
import org.eclipse.jetty.server.handler.ContextHandler;
|
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.boot.test.context.SpringBootTest;
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
|
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
|
||||||
import org.springframework.boot.test.web.client.TestRestTemplate;
|
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.HttpStatus;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
|
|
||||||
|
@ -36,8 +32,7 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||||
*
|
*
|
||||||
* @author Phillip Webb
|
* @author Phillip Webb
|
||||||
*/
|
*/
|
||||||
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT,
|
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
|
||||||
classes = { SampleWebJspApplicationTests.JettyCustomizerConfig.class, SampleJettyJspApplication.class })
|
|
||||||
class SampleWebJspApplicationTests {
|
class SampleWebJspApplicationTests {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
|
@ -50,19 +45,4 @@ class SampleWebJspApplicationTests {
|
||||||
assertThat(entity.getBody()).contains("/resources/text.txt");
|
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