Skip to content

Commit c18de9d

Browse files
build: release version 1.13.0 (#544)
At this point, the release of _Timefold Quickstarts_ is ready to be published. - Release branch has been created. - Git tag has been published. To finish the release of _Timefold Quickstarts_, review and merge this PR to update the `stable` branch with new code. Afterward, delete the branch that this PR is based on. (Typically a button appears on this page once the PR is merged.) --------- Co-authored-by: Fred <[email protected]>
1 parent daeec0c commit c18de9d

File tree

101 files changed

+1076
-1888
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

101 files changed

+1076
-1888
lines changed

.github/workflows/pull_request_gradle.yml

+5-17
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,11 @@ jobs:
2828
java-version: [ 17 ] # Only the first supported LTS; already too many jobs here.
2929
timeout-minutes: 120
3030
steps:
31-
# Clone timefold-solver
32-
# Need to check for stale repo, since Github is not aware of the build chain and therefore doesn't automate it.
31+
- name: Checkout timefold-quickstarts
32+
uses: actions/checkout@v4
33+
with:
34+
path: './timefold-quickstarts'
35+
3336
- name: Checkout timefold-solver (PR) # Checkout the PR branch first, if it exists
3437
if: github.head_ref # Only true if this is a PR.
3538
id: checkout-solver-pr
@@ -48,21 +51,6 @@ jobs:
4851
ref: main
4952
path: ./timefold-solver
5053
fetch-depth: 0 # Otherwise merge will fail on account of not having history.
51-
- name: Prevent stale fork of timefold-solver # Solver can't be stale if development/stable branch requested.
52-
if: ${{ steps.checkout-solver-pr.outcome == 'success' }}
53-
env:
54-
BLESSED_REPO: "timefold-solver"
55-
BLESSED_BRANCH: ${{ endsWith(github.head_ref, '.x') && github.head_ref || 'main' }}
56-
shell: bash
57-
working-directory: ./timefold-solver
58-
run: .github/scripts/prevent_stale_fork.sh
59-
60-
# Clone timefold-quickstarts
61-
# No need to check for stale repo, as Github merges the main repo into the fork automatically.
62-
- name: Checkout timefold-quickstarts
63-
uses: actions/checkout@v4
64-
with:
65-
path: './timefold-quickstarts'
6654

6755
# Build the solver
6856
- name: "Setup Java and Gradle"

.github/workflows/pull_request_maven.yml

+5-17
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,11 @@ jobs:
2828
java-version: [ 17, 21, 22 ] #Latest two LTS + latest non-LTS.
2929
timeout-minutes: 120
3030
steps:
31-
# Clone timefold-solver
32-
# Need to check for stale repo, since Github is not aware of the build chain and therefore doesn't automate it.
31+
- name: Checkout timefold-quickstarts
32+
uses: actions/checkout@v4
33+
with:
34+
path: './timefold-quickstarts'
35+
3336
- name: Checkout timefold-solver (PR) # Checkout the PR branch first, if it exists
3437
if: github.head_ref # Only true if this is a PR.
3538
id: checkout-solver-pr
@@ -48,21 +51,6 @@ jobs:
4851
ref: main
4952
path: ./timefold-solver
5053
fetch-depth: 0 # Otherwise merge will fail on account of not having history.
51-
- name: Prevent stale fork of timefold-solver # Solver can't be stale if development/stable branch requested.
52-
if: ${{ steps.checkout-solver-pr.outcome == 'success' }}
53-
env:
54-
BLESSED_REPO: "timefold-solver"
55-
BLESSED_BRANCH: ${{ endsWith(github.head_ref, '.x') && github.head_ref || 'main' }}
56-
shell: bash
57-
working-directory: ./timefold-solver
58-
run: .github/scripts/prevent_stale_fork.sh
59-
60-
# Clone timefold-quickstarts
61-
# No need to check for stale repo, as Github merges the main repo into the fork automatically.
62-
- name: Checkout timefold-quickstarts
63-
uses: actions/checkout@v4
64-
with:
65-
path: './timefold-quickstarts'
6654

6755
# Build and test
6856
- name: "Setup Java and Maven"

.github/workflows/pull_request_maven_long_running.yml

+61-55
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
name: Maven Long-Running
22

33
on:
4-
# Enables the workflow to run on PRs from forks;
5-
# token sharing is safe here, because enterprise is a private repo and therefore fully under our control.
4+
# Enables the workflow to run on PRs from forks.
5+
# CI will only run for trusted users, to prevent stealing of secrets.
66
pull_request_target:
77
branches: [stable, development, '*.x']
88
types:
@@ -16,7 +16,39 @@ on:
1616
- '.github/**/*.yml'
1717

1818
jobs:
19+
# Check if the user is a member of the organization; if so, allow the PR to sail through.
20+
known_user:
21+
runs-on: ubuntu-latest
22+
outputs:
23+
is_member_of_org: ${{ steps.auth_check.outputs.authorized }}
24+
steps:
25+
- id: auth_check
26+
env:
27+
GH_TOKEN: ${{ secrets.JRELEASER_GITHUB_TOKEN }} # Release account is a Solver Gatekeeper.
28+
shell: bash
29+
run: |
30+
# -g to allow actors such as dependabot[bot]
31+
ORG_MEMBERSHIP=`curl -g -L -H "Accept: application/vnd.github+json" -H "Authorization: Bearer $GH_TOKEN" "https://api.github.com/orgs/TimefoldAI/memberships/${{ github.actor }}" | jq -r '.state == "active"'`
32+
echo "authorized=$ORG_MEMBERSHIP" >> "$GITHUB_OUTPUT"
33+
- id: validation
34+
shell: bash
35+
run: |
36+
echo "Authorized user: ${{ steps.auth_check.outputs.authorized }}"
37+
# If the user is not a member, require a member to approve the PR.
38+
approval_required:
39+
needs: known_user
40+
environment:
41+
${{
42+
github.event_name == 'pull_request_target' &&
43+
github.event.pull_request.head.repo.full_name != github.repository &&
44+
(needs.known_user.outputs.is_member_of_org != 'true' || github.actor == 'dependabot[bot]') &&
45+
'external' || 'internal'
46+
}}
47+
runs-on: ubuntu-latest
48+
steps:
49+
- run: true
1950
build-quarkus:
51+
needs: approval_required
2052
concurrency:
2153
group: pull_request_long_running-${{ github.event_name }}-${{ github.head_ref }}-${{ matrix.module }}-${{ matrix.java-version }}
2254
cancel-in-progress: true
@@ -34,8 +66,14 @@ jobs:
3466
java-version: [ 17 ] # Only the first supported LTS; already too many jobs here.
3567
timeout-minutes: 120
3668
steps:
37-
# Clone timefold-solver
38-
# Need to check for stale repo, since Github is not aware of the build chain and therefore doesn't automate it.
69+
- name: Checkout timefold-quickstarts
70+
uses: actions/checkout@v4
71+
with:
72+
repository: ${{ github.actor }}/timefold-quickstarts
73+
ref: ${{ github.head_ref }}
74+
path: ./timefold-quickstarts
75+
fetch-depth: 0 # Otherwise merge will fail on account of not having history.
76+
3977
- name: Checkout timefold-solver (PR) # Checkout the PR branch first, if it exists
4078
id: checkout-solver
4179
uses: actions/checkout@v4
@@ -53,21 +91,6 @@ jobs:
5391
ref: main
5492
path: ./timefold-solver
5593
fetch-depth: 0 # Otherwise merge will fail on account of not having history.
56-
- name: Prevent stale fork of timefold-solver
57-
if: steps.checkout-solver.outcome == 'success'
58-
env:
59-
BLESSED_REPO: "timefold-solver"
60-
BLESSED_BRANCH: ${{ endsWith(github.head_ref, '.x') && github.head_ref || 'main' }}
61-
shell: bash
62-
working-directory: ./timefold-solver
63-
run: .github/scripts/prevent_stale_fork.sh
64-
65-
# Clone timefold-quickstarts
66-
# No need to check for stale repo, as Github merges the main repo into the fork automatically.
67-
- name: Checkout timefold-quickstarts
68-
uses: actions/checkout@v4
69-
with:
70-
path: './timefold-quickstarts'
7194

7295
# Build and test
7396
- name: "Setup GraalVM native image"
@@ -90,6 +113,7 @@ jobs:
90113
run: mvn -B -Dnative -Pnative verify
91114

92115
build-enterprise-quarkus:
116+
needs: approval_required
93117
concurrency:
94118
group: pull_request_enterprise_long_running-${{ github.event_name }}-${{ github.head_ref }}-${{ matrix.module }}-${{ matrix.java-version }}
95119
cancel-in-progress: true
@@ -100,8 +124,14 @@ jobs:
100124
java-version: [ 17 ] # Only the first supported LTS; already too many jobs here.
101125
timeout-minutes: 120
102126
steps:
103-
# Clone timefold-solver
104-
# Need to check for stale repo, since Github is not aware of the build chain and therefore doesn't automate it.
127+
- name: Checkout timefold-quickstarts
128+
uses: actions/checkout@v4
129+
with:
130+
repository: ${{ github.actor }}/timefold-quickstarts
131+
ref: ${{ github.head_ref }}
132+
path: ./timefold-quickstarts
133+
fetch-depth: 0 # Otherwise merge will fail on account of not having history.
134+
105135
- name: Checkout timefold-solver (PR) # Checkout the PR branch first, if it exists
106136
id: checkout-solver
107137
uses: actions/checkout@v4
@@ -119,16 +149,7 @@ jobs:
119149
ref: main
120150
path: ./timefold-solver
121151
fetch-depth: 0 # Otherwise merge will fail on account of not having history.
122-
- name: Prevent stale fork of timefold-solver
123-
if: steps.checkout-solver.outcome == 'success'
124-
env:
125-
BLESSED_REPO: "timefold-solver"
126-
BLESSED_BRANCH: ${{ endsWith(github.head_ref, '.x') && github.head_ref || 'main' }}
127-
shell: bash
128-
working-directory: ./timefold-solver
129-
run: .github/scripts/prevent_stale_fork.sh
130-
# Clone timefold-solver-enterprise
131-
# Need to check for stale repo, since Github is not aware of the build chain and therefore doesn't automate it.
152+
132153
- name: Checkout timefold-solver-enterprise (PR) # Checkout the PR branch first, if it exists
133154
id: checkout-solver-enterprise
134155
uses: actions/checkout@v4
@@ -149,13 +170,6 @@ jobs:
149170
path: ./timefold-solver-enterprise
150171
fetch-depth: 0 # Otherwise merge will fail on account of not having history.
151172

152-
# Clone timefold-quickstarts
153-
# No need to check for stale repo, as Github merges the main repo into the fork automatically.
154-
- name: Checkout timefold-quickstarts
155-
uses: actions/checkout@v4
156-
with:
157-
path: './timefold-quickstarts'
158-
159173
# Build and test
160174
- name: "Setup GraalVM native image"
161175
uses: graalvm/setup-graalvm@v1
@@ -177,6 +191,7 @@ jobs:
177191
run: mvn -B -Dnative -Denterprise -Pnative verify
178192

179193
build-spring-boot:
194+
needs: approval_required
180195
concurrency:
181196
group: pull_request_long_running-${{ github.event_name }}-${{ github.head_ref }}-${{ matrix.module }}-${{ matrix.java-version }}
182197
cancel-in-progress: true
@@ -189,8 +204,14 @@ jobs:
189204
java-version: [ 17 ] # Only the first supported LTS; already too many jobs here.
190205
timeout-minutes: 120
191206
steps:
192-
# Clone timefold-solver
193-
# Need to check for stale repo, since Github is not aware of the build chain and therefore doesn't automate it.
207+
- name: Checkout timefold-quickstarts
208+
uses: actions/checkout@v4
209+
with:
210+
repository: ${{ github.actor }}/timefold-quickstarts
211+
ref: ${{ github.head_ref }}
212+
path: ./timefold-quickstarts
213+
fetch-depth: 0 # Otherwise merge will fail on account of not having history.
214+
194215
- name: Checkout timefold-solver (PR) # Checkout the PR branch first, if it exists
195216
id: checkout-solver
196217
uses: actions/checkout@v4
@@ -208,21 +229,6 @@ jobs:
208229
ref: main
209230
path: ./timefold-solver
210231
fetch-depth: 0 # Otherwise merge will fail on account of not having history.
211-
- name: Prevent stale fork of timefold-solver
212-
if: steps.checkout-solver.outcome == 'success'
213-
env:
214-
BLESSED_REPO: "timefold-solver"
215-
BLESSED_BRANCH: ${{ endsWith(github.head_ref, '.x') && github.head_ref || 'main' }}
216-
shell: bash
217-
working-directory: ./timefold-solver
218-
run: .github/scripts/prevent_stale_fork.sh
219-
220-
# Clone timefold-quickstarts
221-
# No need to check for stale repo, as Github merges the main repo into the fork automatically.
222-
- name: Checkout timefold-quickstarts
223-
uses: actions/checkout@v4
224-
with:
225-
path: './timefold-quickstarts'
226232

227233
# Build and test
228234
- name: "Setup GraalVM native image"

.github/workflows/pull_request_python.yml

+7-53
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,11 @@ jobs:
2626
python-version: ['3.11', '3.12']
2727
timeout-minutes: 120
2828
steps:
29-
# Clone timefold-solver
30-
# Need to check for stale repo, since Github is not aware of the build chain and therefore doesn't automate it.
29+
- name: Checkout timefold-quickstarts
30+
uses: actions/checkout@v4
31+
with:
32+
path: './timefold-quickstarts'
33+
3134
- name: Checkout timefold-solver (PR) # Checkout the PR branch first, if it exists
3235
if: github.head_ref # Only true if this is a PR.
3336
id: checkout-solver-pr
@@ -46,50 +49,6 @@ jobs:
4649
ref: main
4750
path: ./timefold-solver
4851
fetch-depth: 0 # Otherwise merge will fail on account of not having history.
49-
- name: Prevent stale fork of timefold-solver # Solver can't be stale if development/stable branch requested.
50-
if: ${{ steps.checkout-solver-pr.outcome == 'success' }}
51-
env:
52-
BLESSED_REPO: "timefold-solver"
53-
BLESSED_BRANCH: ${{ endsWith(github.head_ref, '.x') && github.head_ref || 'main' }}
54-
shell: bash
55-
working-directory: ./timefold-solver
56-
run: .github/scripts/prevent_stale_fork.sh
57-
58-
# Clone timefold-solver-python
59-
# Need to check for stale repo, since Github is not aware of the build chain and therefore doesn't automate it.
60-
- name: Checkout timefold-solver-python (PR) # Checkout the PR branch first, if it exists
61-
if: github.head_ref # Only true if this is a PR.
62-
id: checkout-solver-python-pr
63-
uses: actions/checkout@v4
64-
continue-on-error: true
65-
with:
66-
repository: ${{ github.actor }}/timefold-solver-python
67-
ref: ${{ github.head_ref }}
68-
path: ./timefold-solver-python
69-
fetch-depth: 0 # Otherwise merge will fail on account of not having history.
70-
- name: Checkout timefold-solver-python (main) # Checkout the main branch if the PR branch does not exist
71-
if: ${{ steps.checkout-solver-python-pr.outcome != 'success' }}
72-
uses: actions/checkout@v4
73-
with:
74-
repository: TimefoldAI/timefold-solver-python
75-
ref: main
76-
path: ./timefold-solver-python
77-
fetch-depth: 0 # Otherwise merge will fail on account of not having history.
78-
- name: Prevent stale fork of timefold-solver-python # Solver can't be stale if development/stable branch requested.
79-
if: ${{ steps.checkout-solver-python-pr.outcome == 'success' }}
80-
env:
81-
BLESSED_REPO: "timefold-solver-python"
82-
BLESSED_BRANCH: ${{ endsWith(github.head_ref, '.x') && github.head_ref || 'main' }}
83-
shell: bash
84-
working-directory: ./timefold-solver-python
85-
run: ../timefold-solver/.github/scripts/prevent_stale_fork.sh
86-
87-
# Clone timefold-quickstarts
88-
# No need to check for stale repo, as Github merges the main repo into the fork automatically.
89-
- name: Checkout timefold-quickstarts
90-
uses: actions/checkout@v4
91-
with:
92-
path: './timefold-quickstarts'
9352

9453
# Build and test
9554
- name: "Setup Java and Maven"
@@ -109,19 +68,14 @@ jobs:
10968
11069
- name: Install build
11170
run:
112-
python -m pip install --upgrade pip
11371
pip install build
11472

115-
- name: Quickly build timefold-solver
73+
- name: Build timefold for python
11674
working-directory: ./timefold-solver
117-
run: mvn -B -Dquickly -DskipTests clean install
118-
119-
- name: Build timefold-solver-python
120-
working-directory: ./timefold-solver-python
12175
run: python -m build
12276

12377
- name: Build and test timefold-quickstarts
12478
working-directory: ./timefold-quickstarts
12579
env:
126-
TIMEFOLD_SOLVER_PYTHON_DIST: "${{ github.workspace }}/timefold-solver-python/dist"
80+
TIMEFOLD_SOLVER_PYTHON_DIST: "${{ github.workspace }}/timefold-solver/dist"
12781
run: .github/scripts/run_python_tests.sh

java/bed-allocation/pom.xml

+4-4
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@
1111
<maven.compiler.release>17</maven.compiler.release>
1212
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
1313

14-
<version.io.quarkus>3.12.1</version.io.quarkus>
15-
<version.ai.timefold.solver>1.12.0</version.ai.timefold.solver>
14+
<version.io.quarkus>3.13.2</version.io.quarkus>
15+
<version.ai.timefold.solver>1.13.0</version.ai.timefold.solver>
1616

1717
<version.compiler.plugin>3.13.0</version.compiler.plugin>
1818
<version.resources.plugin>3.3.1</version.resources.plugin>
19-
<version.surefire.plugin>3.3.0</version.surefire.plugin>
19+
<version.surefire.plugin>3.3.1</version.surefire.plugin>
2020
</properties>
2121

2222
<dependencyManagement>
@@ -84,7 +84,7 @@
8484
<dependency>
8585
<groupId>org.assertj</groupId>
8686
<artifactId>assertj-core</artifactId>
87-
<version>3.26.0</version>
87+
<version>3.26.3</version>
8888
<scope>test</scope>
8989
</dependency>
9090

0 commit comments

Comments
 (0)