-
Notifications
You must be signed in to change notification settings - Fork 95
134 lines (127 loc) · 4.85 KB
/
pull_request_quickstarts.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
name: Quickstarts Workflow
on:
push:
branches: [main]
pull_request:
branches: [main, '*.x']
types:
- opened
- reopened
- synchronize
paths-ignore:
- 'LICENSE*'
- '.gitignore'
- '**.md'
- '**.adoc'
- '*.txt'
jobs:
java:
name: "Java Quickstarts"
runs-on: ubuntu-latest
concurrency:
group: downstream-quickstarts-${{ github.event_name }}-${{ github.head_ref }}
cancel-in-progress: true
timeout-minutes: 120
steps:
# Clone timefold-solver
# No need to check for stale repo, as Github merges the main repo into the fork automatically.
- name: Checkout timefold-solver
uses: actions/checkout@v4
with:
path: ./timefold-solver
# Clone timefold-quickstarts
# Need to check for stale repo, since Github is not aware of the build chain and therefore doesn't automate it.
- name: Checkout timefold-quickstarts (PR) # Checkout the PR branch first, if it exists
if: github.head_ref # Only true if this is a PR.
id: checkout-quickstarts-pr
uses: actions/checkout@v4
continue-on-error: true
with:
repository: ${{ github.actor }}/timefold-quickstarts
ref: ${{ github.head_ref }}
path: ./timefold-quickstarts
fetch-depth: 0 # Otherwise merge will fail on account of not having history.
- name: Checkout timefold-quickstarts (development) # Checkout the development branch if the PR branch does not exist
if: ${{ steps.checkout-quickstarts-pr.outcome != 'success' }}
uses: actions/checkout@v4
with:
repository: TimefoldAI/timefold-quickstarts
ref: development
path: ./timefold-quickstarts
fetch-depth: 0 # Otherwise merge will fail on account of not having history.
# Build and test
- name: Setup Temurin 21 and Maven
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'
cache: 'maven'
- name: Quickly build timefold-solver
working-directory: ./timefold-solver
shell: bash
run: mvn -B -Dquickly clean install
- name: Build and test timefold-quickstarts
working-directory: ./timefold-quickstarts
shell: bash
run: mvn -B clean verify
python:
name: "Python Quickstarts"
concurrency:
group: pull_request_python_quickstarts-${{ github.event_name }}-${{ github.head_ref }}-${{ matrix.os }}-${{ matrix.java-version }}-${{ matrix.python-version }}
cancel-in-progress: true
strategy:
matrix:
os: [ ubuntu-latest ]
java-version: [ 21 ] # Only the latest supported LTS; already too many jobs here.
# TODO: Add Python 3.10 once employee scheduling and school timetabling support it
python-version: ['3.11', '3.12']
fail-fast: false
runs-on: ${{ matrix.os }}
steps:
- name: Check out repository code
uses: actions/checkout@v4
with:
path: './timefold-solver'
# Need to check for stale repo, since Github is not aware of the build chain and therefore doesn't automate it.
- name: Checkout timefold-quickstarts (PR) # Checkout the PR branch first, if it exists
id: checkout-quickstarts-pr
uses: actions/checkout@v4
continue-on-error: true
with:
repository: ${{ github.actor }}/timefold-quickstarts
ref: ${{ github.head_ref }}
path: ./timefold-quickstarts
fetch-depth: 0 # Otherwise merge will fail on account of not having history.
- name: Checkout timefold-quickstarts (development) # Checkout the development branch if the PR branch does not exist
if: steps.checkout-quickstarts-pr.outcome != 'success'
uses: actions/checkout@v4
with:
repository: TimefoldAI/timefold-quickstarts
ref: development
path: ./timefold-quickstarts
fetch-depth: 0 # Otherwise merge will fail on account of not having history.
# Build and test
- name: "Setup Java and Maven"
uses: actions/setup-java@v4
with:
java-version: ${{matrix.java-version}}
distribution: 'temurin'
cache: 'maven'
- name: Python Setup
uses: actions/setup-python@v5
with:
python-version: ${{matrix.python-version}}
cache: 'pip'
cache-dependency-path: |
**/setup.py
- name: Install build
run:
pip install build
- name: Build Timefold Solver for Python
working-directory: ./timefold-solver
run: python -m build
- name: Build and test timefold-quickstarts
working-directory: ./timefold-quickstarts
env:
TIMEFOLD_SOLVER_PYTHON_DIST: "${{ github.workspace }}/timefold-solver/dist"
run: .github/scripts/run_python_tests.sh