Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 22 additions & 7 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -51,24 +51,28 @@ updates:
allow:
- dependency-type: "all"
ignore:
- dependency-name: "org.webjars:*"
- dependency-name: "io.quarkus:*"
- dependency-name: "org.springdoc:*"
- dependency-name: "org.springframework:*"
- dependency-name: "org.springframework.boot:*"
- dependency-name: "org.webjars:*"
multi-ecosystem-group: "base"
- package-ecosystem: "gradle"
directory: "/"
patterns: [ "*" ]
allow:
- dependency-type: "all"
ignore:
- dependency-name: "org.webjars:*"
# No * because these are plugin IDs, not GAVs.
- dependency-name: "io.quarkus"
- dependency-name: "io.spring.dependency-management"
- dependency-name: "org.springframework.boot"
# These are GAVs.
- dependency-name: "io.quarkus:*"
- dependency-name: "org.springdoc:*"
- dependency-name: "org.springframework:*"
- dependency-name: "org.springframework.boot:*"
- dependency-name: "org.webjars:*"
multi-ecosystem-group: "base"
- package-ecosystem: "github-actions"
directory: "/"
Expand All @@ -81,22 +85,28 @@ updates:
allow:
- dependency-name: "io.quarkus:*"
ignore:
- dependency-name: "org.webjars:*"
- dependency-name: "org.springdoc:*"
- dependency-name: "org.springframework:*"
- dependency-name: "org.springframework.boot:*"
- dependency-name: "org.webjars:*"
multi-ecosystem-group: "quarkus"
- package-ecosystem: "gradle"
directory: "/"
patterns: [ "*" ]
allow:
# No * because these are plugin IDs, not GAVs.
- dependency-name: "io.quarkus"
# These are GAVs.
- dependency-name: "io.quarkus:*"
ignore:
- dependency-name: "org.webjars:*"
# No * because these are plugin IDs, not GAVs.
- dependency-name: "io.spring.dependency-management"
- dependency-name: "org.springframework.boot"
# These are GAVs.
- dependency-name: "org.springdoc:*"
- dependency-name: "org.springframework:*"
- dependency-name: "org.springframework.boot:*"
- dependency-name: "org.webjars:*"
multi-ecosystem-group: "quarkus"

- package-ecosystem: "maven"
Expand All @@ -107,19 +117,24 @@ updates:
- dependency-name: "org.springframework:*"
- dependency-name: "org.springframework.boot:*"
ignore:
- dependency-name: "org.webjars:*"
- dependency-name: "io.quarkus:*"
- dependency-name: "org.webjars:*"
multi-ecosystem-group: "spring"
- package-ecosystem: "gradle"
directory: "/"
patterns: [ "*" ]
allow:
# No * because these are plugin IDs, not GAVs.
- dependency-name: "io.spring.dependency-management"
- dependency-name: "org.springframework.boot"
# These are GAVs.
- dependency-name: "org.springdoc:*"
- dependency-name: "org.springframework:*"
- dependency-name: "org.springframework:*"
- dependency-name: "org.springframework.boot:*"
ignore:
- dependency-name: "org.webjars:*"
# No * because these are plugin IDs, not GAVs.
- dependency-name: "io.quarkus"
# These are GAVs.
- dependency-name: "io.quarkus:*"
- dependency-name: "org.webjars:*"
multi-ecosystem-group: "spring"
2 changes: 1 addition & 1 deletion .github/workflows/pull_request_gradle.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ jobs:
strategy:
matrix:
module: ['java/hello-world', 'java/school-timetabling', 'java/spring-boot-integration']
java-version: [ 17 ] # Only the first supported LTS; already too many jobs here.
java-version: [ 21 ] # Only the first supported LTS; already too many jobs here.
timeout-minutes: 120
steps:
- name: Checkout timefold-quickstarts
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/pull_request_maven.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ jobs:
strategy:
matrix:
os: [ubuntu-latest, ubuntu-24.04-arm, windows-latest, macOS-latest]
java-version: [ 17, 21, 25 ] #Latest two LTS + latest non-LTS.
java-version: [ 21, 25 ] #Latest two LTS + latest non-LTS.
timeout-minutes: 120
steps:
- name: Support long paths
Expand Down
112 changes: 6 additions & 106 deletions .github/workflows/pull_request_maven_long_running.yml
Original file line number Diff line number Diff line change
Expand Up @@ -65,10 +65,8 @@ jobs:
"java/tournament-scheduling", "java/vehicle-routing"
]
# Only one supported LTS; already too many jobs here.
# We choose 21 as Quarkus 3.17.2 has weird issues with Java 17 GraalVM,
# with Java 21+ GraalVM being recommended even for Java 17 projects.
# https://github.com/quarkusio/quarkus/issues/44877
java-version: [ 21 ]
# We choose 25 as that's the latest LTS.
java-version: [ 25 ]
timeout-minutes: 120
steps:
- name: Checkout timefold-quickstarts
Expand Down Expand Up @@ -96,7 +94,7 @@ jobs:

# Build and test
- name: "Setup GraalVM native image"
uses: graalvm/setup-graalvm@54b4f5a65c1a84b2fdfdc2078fe43df32819e4b1 # v1
uses: graalvm/setup-graalvm@60c26726de13f8b90771df4bc1641a52a3159994 # v1
with:
java-version: ${{matrix.java-version}}
distribution: 'graalvm-community'
Expand All @@ -114,102 +112,6 @@ jobs:
working-directory: ./timefold-quickstarts/${{matrix.module}}
run: mvn -B -Dnative -Pnative verify

build-enterprise-quarkus:
needs: approval_required
concurrency:
group: pull_request_enterprise_long_running-${{ github.event_name }}-${{ github.head_ref }}-${{ matrix.module }}-${{ matrix.java-version }}
cancel-in-progress: true
runs-on: ubuntu-latest
strategy:
matrix:
module: [ "java/bed-allocation", "java/vehicle-routing"]
# Only one supported LTS; already too many jobs here.
# We choose 21 as Quarkus 3.17.2 has weird issues with Java 17 GraalVM,
# with Java 21+ GraalVM being recommended even for Java 17 projects.
# https://github.com/quarkusio/quarkus/issues/44877
java-version: [ 21 ]
timeout-minutes: 120
steps:
- name: Checkout timefold-quickstarts
uses: actions/checkout@v6
with:
path: ./timefold-quickstarts
ref: ${{ github.event.pull_request.head.sha }} # The GHA event will pull the main branch by default, and we must specify the PR reference version
- name: Checkout timefold-solver (PR) # Checkout the PR branch first, if it exists
id: checkout-solver
uses: actions/checkout@v6
continue-on-error: true
with:
repository: ${{ github.actor }}/timefold-solver
ref: ${{ github.head_ref }}
path: ./timefold-solver
fetch-depth: 0 # Otherwise merge will fail on account of not having history.
- name: Checkout timefold-solver (main) # Checkout the main branch if the PR branch does not exist
if: steps.checkout-solver.outcome != 'success'
uses: actions/checkout@v6
with:
repository: TimefoldAI/timefold-solver
ref: main
path: ./timefold-solver
fetch-depth: 0 # Otherwise merge will fail on account of not having history.

- name: Checkout timefold-solver-enterprise (PR) # Checkout the PR branch first, if it exists
id: checkout-solver-enterprise
uses: actions/checkout@v6
continue-on-error: true
with:
repository: TimefoldAI/timefold-solver-enterprise
ref: ${{ github.head_ref }}
token: ${{ secrets.JRELEASER_GITHUB_TOKEN }} # Safe; only used to clone the repo and not stored in the fork.
path: ./timefold-solver-enterprise
fetch-depth: 0 # Otherwise merge will fail on account of not having history.
- name: Checkout timefold-solver-enterprise (main) # Checkout the main branch if the PR branch does not exist
if: steps.checkout-solver-enterprise.outcome != 'success'
uses: actions/checkout@v6
with:
repository: TimefoldAI/timefold-solver-enterprise
ref: main
token: ${{ secrets.JRELEASER_GITHUB_TOKEN }} # Safe; only used to clone the repo and not stored in the fork.
path: ./timefold-solver-enterprise
fetch-depth: 0 # Otherwise merge will fail on account of not having history.

# Build and test
- name: "Setup GraalVM native image"
uses: graalvm/setup-graalvm@54b4f5a65c1a84b2fdfdc2078fe43df32819e4b1 # v1
with:
java-version: ${{matrix.java-version}}
distribution: 'graalvm-community'
components: 'native-image'
github-token: ${{ secrets.GITHUB_TOKEN }}
cache: 'maven'

- name: Quickly build timefold-solver
working-directory: ./timefold-solver
run: mvn -B -Dquickly -DskipTests clean install

- name: Update timefold-solver-enterprise version (Release PR only)
if: ${{ startsWith(github.event.pull_request.title, 'build:') && contains(github.event.pull_request.title, 'release version') && github.event.pull_request.user.login == 'timefold-release' }}
shell: bash
working-directory: ./timefold-solver-enterprise
env:
# PR titles are user-controlled and can contain malicious payloads.
# Avoid direct shell interpolation.
PR_TITLE: ${{ github.event.pull_request.title }}
run: |
git config user.name "Timefold Release Bot"
git config user.email "release@timefold.ai"
NEW_VERSION=$(echo "$PR_TITLE" | grep -oE '[0-9]+\.[0-9]+\.[0-9]+')
export NEW_VERSION
echo "$NEW_VERSION"
.github/scripts/change_versions.sh
- name: Quickly build timefold-solver-enterprise
working-directory: ./timefold-solver-enterprise
run: mvn -B -Dquickly -DskipTests clean install

- name: Test timefold-enterprise-quickstarts (enterprise native tests)
working-directory: ./timefold-quickstarts/${{matrix.module}}
run: mvn -B -Dnative -Denterprise -Pnative verify

build-spring-boot:
needs: approval_required
concurrency:
Expand All @@ -222,10 +124,8 @@ jobs:
"java/spring-boot-integration"
]
# Only one supported LTS; already too many jobs here.
# We choose 21 as Quarkus 3.17.2 has weird issues with Java 17 GraalVM,
# with Java 21+ GraalVM being recommended even for Java 17 projects.
# https://github.com/quarkusio/quarkus/issues/44877
java-version: [ 21 ]
# We choose 25 as that's the latest LTS.
java-version: [ 25 ]
timeout-minutes: 120
steps:
- name: Checkout timefold-quickstarts
Expand Down Expand Up @@ -253,7 +153,7 @@ jobs:

# Build and test
- name: "Setup GraalVM native image"
uses: graalvm/setup-graalvm@54b4f5a65c1a84b2fdfdc2078fe43df32819e4b1 # v1
uses: graalvm/setup-graalvm@60c26726de13f8b90771df4bc1641a52a3159994 # v1
with:
java-version: ${{matrix.java-version}}
distribution: 'graalvm-community'
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ on:
workflow_dispatch:
inputs:
javaVersion:
description: 'Community Edition version (e.g. 1.0.0)'
description: 'Timefold Solver version (e.g. 2.0.0)'
required: true
developmentBranch:
description: 'Development branch to cut the release from'
Expand Down Expand Up @@ -42,14 +42,14 @@ jobs:

- uses: actions/setup-java@v5
with:
java-version: '17'
java-version: '21'
distribution: 'temurin'
cache: 'maven'

- name: Set up Maven
uses: stCarolas/setup-maven@d6af6abeda15e98926a57b5aa970a96bb37f97d1 # v5
with:
maven-version: 3.9.3
maven-version: 3.9.11

- name: Update version
working-directory: ./timefold-quickstarts
Expand Down
7 changes: 4 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
# Maven and Gradle files
target
.gradle
build
bin

# Eclipse, Netbeans and IntelliJ files
/.*
.*
!/.github
!/.ci
!/.mvn
!.gitignore
!.gitattributes
!/.mvn
/nbproject
*.ipr
*.iws
Expand Down
4 changes: 2 additions & 2 deletions CONTRIBUTING.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@ This is an open source project, and you are more than welcome to contribute!
* Want to fix an issue or contribute an improvement? https://github.com/TimefoldAI/timefold-solver/discussions[Talk to us about your ideas] or just start coding:

. https://github.com/TimefoldAI/timefold-quickstarts/fork[Fork it.]
. Create a feature branch: `git checkout -b feature`
. Create a feature branch off the `development` branch: `git checkout -b feature development`
. Commit your changes with a comment: `git commit -m "feat: add shiny new feature"`
(See xref:commit-messages[Commit messages] for details.)
. Push to the branch to GitHub: `git push origin feature`
. https://github.com/TimefoldAI/timefold-quickstarts/compare/development...development[Create a new Pull Request.]
. https://github.com/TimefoldAI/timefold-quickstarts/compare/development...development[Create a new Pull Request to the `development` branch].

The CI checks against your PR to ensure that it doesn't introduce errors.
If the CI identifies a potential problem, our friendly PR maintainers will help you resolve it.
Loading
Loading