spring-projects / spring-lifecycle-smoke-tests

24 stars 18 forks source link

= Spring Lifecycle Smoke Tests image:https://img.shields.io/badge/Revved%20up%20by-Develocity-06A0CE?logo=Gradle&labelColor=02303A["Revved up by Develocity", link="https://ge.spring.io/scans?search.rootProjectNames=spring-lifecycle-smoke-tests"]

Smoke tests for Spring Boot applications using a custom lifecycle to perform a training run with https://docs.spring.io/spring-framework/reference/integration/cds.html[CDS] or https://docs.spring.io/spring-framework/reference/integration/checkpoint-restore.html[JVM Checkpoint Restore]. Results are available on the https://github.com/spring-projects/spring-lifecycle-smoke-tests/blob/ci/STATUS.adoc[Status page].

== Repository Structure

This branch contains only GitHub Actions workflows. It is the default branch in the repository to work around a limitation of GitHub Actions' https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#schedule[scheduling support]:

Scheduled workflows run on the latest commit on the default or base branch.

Additionally, scheduling will only work for a workflow that exists in the default branch. To overcome this limitation, this branch contains workflows for every smoke test found in the supported branches. If you're looking for the smoke tests themselves, please take a look at one of those other branches:

== Managing the Workflows

The workflows can be updated automatically but doing so relies upon a particular directory structure using Git's worktree support:

[source,]

spring-lifecycle-smoke-tests ├── ci └── main

=== Initial Setup

To create this directory structure, first clone the repository into a directory named ci:

[source,]

mkdir spring-lifecycle-smoke-tests cd spring-lifecycle-smoke-tests git clone https://github.com/spring-projects/spring-lifecycle-smoke-tests ci cd ci

Now, create worktrees for the main branch:

[source,]

git worktree add ../main main

=== Updating the Workflows

To sync the workflows and update the status page, make sure you're in the ci worktree on the ci branch and execute the following Gradle build:

[source,]

./gradlew updateInfrastructure

This will update the workflows in the ci branch based on the smoke tests in each of the repository's other branches, as well as STATUS.adoc. Commit and push any changes.