Skip to content
This repository was archived by the owner on Mar 14, 2026. It is now read-only.

Commit 72f9bd1

Browse files
committed
Merge branch 'dev'
2 parents 248da5c + 46c7d92 commit 72f9bd1

File tree

468 files changed

+44364
-21644
lines changed

Some content is hidden

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

468 files changed

+44364
-21644
lines changed

.github/FUNDING.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# These are supported funding model platforms
2+
3+
github: [blackopsrepl]
Lines changed: 172 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,172 @@
1+
name: CI/CD Pipeline
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
- dev
8+
- 'release/**'
9+
paths:
10+
- 'rust/employee-scheduling/**'
11+
- 'legacy/employee-scheduling-fast/**'
12+
- 'legacy/maintenance-scheduling-fast/**'
13+
- 'legacy/meeting-scheduling-fast/**'
14+
- 'legacy/order-picking-fast/**'
15+
- 'legacy/vehicle-routing-fast/**'
16+
- 'legacy/vm-placement-fast/**'
17+
- '.github/workflows/docker-publish.yml'
18+
workflow_dispatch:
19+
inputs:
20+
apps:
21+
description: 'Apps to build (comma-separated, or "all")'
22+
required: false
23+
default: 'all'
24+
25+
env:
26+
REGISTRY: ghcr.io
27+
28+
jobs:
29+
# Rust tests
30+
test-rust:
31+
runs-on: ubuntu-latest
32+
steps:
33+
- name: Checkout repository
34+
uses: actions/checkout@v4
35+
36+
- name: Set up Rust
37+
uses: dtolnay/rust-toolchain@stable
38+
39+
- name: Cache Rust dependencies
40+
uses: Swatinem/rust-cache@v2
41+
with:
42+
workspaces: rust/employee-scheduling
43+
44+
- name: Run tests
45+
working-directory: rust/employee-scheduling
46+
run: cargo test --verbose
47+
48+
- name: Build
49+
working-directory: rust/employee-scheduling
50+
run: cargo build --release --verbose
51+
52+
# Python legacy tests
53+
test-python:
54+
runs-on: ubuntu-latest
55+
strategy:
56+
fail-fast: false
57+
matrix:
58+
app:
59+
- name: employee-scheduling-fast
60+
path: legacy/employee-scheduling-fast
61+
- name: maintenance-scheduling-fast
62+
path: legacy/maintenance-scheduling-fast
63+
- name: meeting-scheduling-fast
64+
path: legacy/meeting-scheduling-fast
65+
- name: order-picking-fast
66+
path: legacy/order-picking-fast
67+
- name: vehicle-routing-fast
68+
path: legacy/vehicle-routing-fast
69+
- name: vm-placement-fast
70+
path: legacy/vm-placement-fast
71+
steps:
72+
- name: Checkout repository
73+
uses: actions/checkout@v4
74+
75+
- name: Set up Python
76+
uses: actions/setup-python@v5
77+
with:
78+
python-version: '3.12'
79+
80+
- name: Set up JDK 21
81+
uses: actions/setup-java@v4
82+
with:
83+
java-version: '21'
84+
distribution: 'temurin'
85+
86+
- name: Install dependencies
87+
working-directory: ${{ matrix.app.path }}
88+
run: |
89+
python -m pip install --upgrade pip
90+
pip install -e .
91+
pip install pytest
92+
93+
- name: Run tests
94+
working-directory: ${{ matrix.app.path }}
95+
run: pytest -v
96+
97+
# Build and push on main and dev
98+
build-and-push:
99+
needs: [test-rust, test-python]
100+
runs-on: ubuntu-latest
101+
permissions:
102+
contents: read
103+
packages: write
104+
strategy:
105+
fail-fast: false
106+
matrix:
107+
app:
108+
- name: employee-scheduling
109+
context: rust/employee-scheduling
110+
- name: employee-scheduling-fast
111+
context: legacy/employee-scheduling-fast
112+
- name: maintenance-scheduling-fast
113+
context: legacy/maintenance-scheduling-fast
114+
- name: meeting-scheduling-fast
115+
context: legacy/meeting-scheduling-fast
116+
- name: order-picking-fast
117+
context: legacy/order-picking-fast
118+
- name: vehicle-routing-fast
119+
context: legacy/vehicle-routing-fast
120+
- name: vm-placement-fast
121+
context: legacy/vm-placement-fast
122+
steps:
123+
- name: Checkout repository
124+
uses: actions/checkout@v4
125+
126+
- name: Check if app should be built
127+
id: check
128+
run: |
129+
if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
130+
apps="${{ github.event.inputs.apps }}"
131+
if [[ "$apps" == "all" || "$apps" == *"${{ matrix.app.name }}"* ]]; then
132+
echo "build=true" >> $GITHUB_OUTPUT
133+
else
134+
echo "build=false" >> $GITHUB_OUTPUT
135+
fi
136+
else
137+
echo "build=true" >> $GITHUB_OUTPUT
138+
fi
139+
140+
- name: Set up Docker Buildx
141+
if: steps.check.outputs.build == 'true'
142+
uses: docker/setup-buildx-action@v3
143+
144+
- name: Log in to Container Registry
145+
if: steps.check.outputs.build == 'true'
146+
uses: docker/login-action@v3
147+
with:
148+
registry: ${{ env.REGISTRY }}
149+
username: ${{ github.actor }}
150+
password: ${{ secrets.GITHUB_TOKEN }}
151+
152+
- name: Extract metadata (tags, labels)
153+
if: steps.check.outputs.build == 'true'
154+
id: meta
155+
uses: docker/metadata-action@v5
156+
with:
157+
images: ${{ env.REGISTRY }}/${{ github.repository_owner }}/${{ matrix.app.name }}
158+
tags: |
159+
type=ref,event=branch
160+
type=sha,prefix=
161+
type=raw,value=latest
162+
163+
- name: Build and push Docker image
164+
if: steps.check.outputs.build == 'true'
165+
uses: docker/build-push-action@v5
166+
with:
167+
context: ${{ matrix.app.context }}
168+
push: true
169+
tags: ${{ steps.meta.outputs.tags }}
170+
labels: ${{ steps.meta.outputs.labels }}
171+
cache-from: type=gha
172+
cache-to: type=gha,mode=max

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,6 @@ __pycache__
2222

2323
# Repository wide ignore mac DS_Store files
2424
.DS_Store
25+
.osm_cache
2526
*.code-workspace
27+
CLAUDE.md

0 commit comments

Comments
 (0)