Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
600 commits
Select commit Hold shift + click to select a range
6a2232f
Fix feature popup for NL 304 stop signals (#376)
hiddewie May 1, 2025
e5e1d2e
Import platform relations (#374)
hiddewie May 1, 2025
7dec446
Handle `public_transport=stop_area` relations (#377)
hiddewie May 3, 2025
0e03c71
Order signal features on their definition order (#369)
hiddewie May 3, 2025
e1023c9
Base order of signal features (#379)
hiddewie May 3, 2025
b693da6
Ordering of PL signals (#381)
hiddewie May 4, 2025
947bc41
Ordering of DE signals (#380)
hiddewie May 4, 2025
98aa4f0
Fix duplicated signals if more than one type (#386)
hiddewie May 4, 2025
b906e5b
Add JOSM (and compatible) as possible editor (#378)
mmoll May 5, 2025
5a59856
Set news hash explicitly (#387)
hiddewie May 5, 2025
8fb0516
Hurl 6.1.1 (#389)
hiddewie May 5, 2025
3b0c92e
Run tests on ARM64 runners (#382)
hiddewie May 7, 2025
7b65114
AT signal order & improvements (#388)
hiddewie May 9, 2025
e620581
Allow for We1a, We1b and We1c to be rendered (#390)
Anasmasuris May 10, 2025
509699e
Fix missing icons in legend (#393)
hiddewie May 11, 2025
f23dbf8
CZ signalling (#391)
hiddewie May 11, 2025
1852b45
Maplibre GL JS 5.5 (#394)
hiddewie May 11, 2025
49fc2d1
Missing DE signals (#395)
hiddewie May 14, 2025
0a8f9a1
NEXTEO train protection (#398)
hiddewie May 15, 2025
b294add
Fix missing icons in preset (#399)
hiddewie May 15, 2025
b897129
Fix POIs with zoom levels > 14 not output to tiles (#403)
hiddewie May 24, 2025
f59c419
Preset: fix duplicate tags for vacancy detection (#404)
hiddewie May 24, 2025
73720f7
Output all signal tags (#400)
hiddewie May 25, 2025
acf8851
Update speed signals in PL (half speeds) (#406)
Anasmasuris May 25, 2025
190e1d2
Import station feature and state (#407)
hiddewie May 25, 2025
b13e973
Catenary masts & portals (#412)
hiddewie Jun 3, 2025
08e0d78
Catenary mast portal (#417)
hiddewie Jun 3, 2025
f3d0588
Add W1 to distant PL signals (#410)
Anasmasuris Jun 3, 2025
f3bb801
OpenHistoricalMap: use transport centroid points layer (#418)
hiddewie Jun 3, 2025
82bfde9
Store last view in local storage (#421)
hiddewie Jun 4, 2025
5ee036c
Handle `any`/`all` array tags for presets (#422)
hiddewie Jun 4, 2025
4159128
MapLibre GL JS 5.6 (#423)
hiddewie Jun 4, 2025
19c2dcd
BE signals (#424)
hiddewie Jun 5, 2025
3c5d845
Display station area including subway entrances (#425)
hiddewie Jun 7, 2025
3ad898e
Split signal tile generation (#426)
hiddewie Jun 7, 2025
b861833
Fix CI Berlin data cache (#427)
hiddewie Jun 7, 2025
285d1f1
Mobile UI elements (#429)
hiddewie Jun 10, 2025
2a8b451
Serve styles and tiles from `openrailwaymap.app` domain (#430)
hiddewie Jun 11, 2025
e3bc1fa
Station entrances (#432)
hiddewie Jun 14, 2025
136ed62
Replace reference to Americana style to Stadia Maps style (#433)
hiddewie Jun 14, 2025
a69f114
Import `tourism=museum` with `museum=railway` (#434)
hiddewie Jun 14, 2025
c7c882f
Power supplies to electrification layer (#435)
hiddewie Jun 14, 2025
90e81d7
Catenary masts with power transition (#437)
hiddewie Jun 14, 2025
e7fa1d7
Import vehicle types to specify station type (#438)
hiddewie Jun 17, 2025
dd2722d
Add redirect from `openrailwaymap.fly.dev` to `openrailwaymap.app` (#…
hiddewie Jun 28, 2025
c6e2bbb
News for May and June 2025 (#444)
hiddewie Jun 29, 2025
441ad57
News: show popup when clicking the about image (#445)
hiddewie Jun 29, 2025
3f998be
Operator layer (#442)
hiddewie Jun 29, 2025
b6d0caa
Operator: show both name and operator on line (#446)
hiddewie Jun 29, 2025
45963da
Display `image` in popup (#447)
hiddewie Jun 29, 2025
b7b9412
Fix API tests (#452)
hiddewie Jul 3, 2025
59f5ba9
Train protection: change *other* to *no train protection* (#451)
hiddewie Jul 4, 2025
d8532fe
Ordering of north american train protection (#450)
hiddewie Jul 4, 2025
f6c46e2
Update domains to openrailwaymap.app (#453)
hiddewie Jul 4, 2025
693073f
Support SSL in proxy (#455)
hiddewie Jul 5, 2025
44f8f7b
Replace replication timestamp with API (#456)
hiddewie Jul 5, 2025
8d149f0
Support non-absolute URLs in style (#457)
hiddewie Jul 5, 2025
97875fe
Deploy OpenRailwayMap on a server, remove Fly.io deployment (#454)
hiddewie Jul 5, 2025
36e1ccc
Ensure API is lightweight container without Postgres (#459)
hiddewie Jul 6, 2025
1c19391
Simplify API database views (#461)
hiddewie Jul 6, 2025
944654a
Nightly update: simplify and build containers (#462)
hiddewie Jul 6, 2025
ce8f3a1
Simplify API proxying, improve API caching (#464)
hiddewie Jul 9, 2025
cbf86cb
Railway ferries (#465)
hiddewie Jul 10, 2025
3e1eb83
Add watching to API container (#468)
hiddewie Jul 10, 2025
6eee74d
Render Isolated track sections (#467)
hiddewie Jul 10, 2025
7c9a8dc
Support station areas (#469)
hiddewie Jul 10, 2025
8ad474a
Show owner and primary operator (#470)
hiddewie Jul 11, 2025
fa331c2
Operator layer: show stations (#472)
hiddewie Jul 12, 2025
eaa3e5c
Show compass color (#474)
hiddewie Jul 13, 2025
2eef122
Show Wikidata images in popup (#475)
hiddewie Jul 16, 2025
c550294
Station areas with platforms as ways (#478)
hiddewie Jul 16, 2025
d0c8145
DE Rostock trams (#479)
hiddewie Jul 16, 2025
6df82f6
ASES train protection (#480)
hiddewie Jul 16, 2025
b9a052a
Railway position improvements (#481)
hiddewie Jul 19, 2025
8dff63b
Fix map not showing colored rotation icon on page reload (#482)
hiddewie Jul 19, 2025
3519e20
Add missing railway features (#483)
hiddewie Jul 19, 2025
feeb14c
Fix missing railway feature for rotary car dumper (#485)
hiddewie Jul 19, 2025
1a1384b
Fix milestones wrong property during import (#486)
hiddewie Jul 19, 2025
8e6d5d3
Allow reloading materialized facilities views (#490)
hiddewie Jul 20, 2025
2b2aa26
Show operator on signal box (#488)
hiddewie Jul 20, 2025
6498b16
Change defaults of background map (#492)
hiddewie Jul 20, 2025
cbbfa64
Optimize page loading time (#491)
hiddewie Jul 20, 2025
a616696
Ensure railway crossing has an icon (#493)
hiddewie Jul 22, 2025
552e3b6
DK signals (#405)
hiddewie Jul 24, 2025
71fc72b
Ensure milestone zeros work correctly (#497)
hiddewie Jul 24, 2025
37fff90
Give NEXTEO priority over KVB train protection (#505)
hiddewie Jul 30, 2025
78da01f
IT signals (#502)
hiddewie Jul 30, 2025
3c0c1c3
PL 6-cell semaphores (#501)
Anasmasuris Jul 31, 2025
98dfa36
Render switches without references (#507)
hiddewie Jul 31, 2025
28cd7d2
Fix integration test Berlin station response order (#509)
hiddewie Aug 2, 2025
1f39ac8
correct CM4 track class (#508)
mmoll Aug 2, 2025
b5013e4
Signal cone larger to avoid covering it with ref (#506)
hiddewie Aug 2, 2025
332a790
Move border crossing and owner change to operator layer (#510)
hiddewie Aug 2, 2025
ed1ff5b
Clean up icons filtering code on zoom level (#511)
hiddewie Aug 3, 2025
af9514a
Clean up source URLs (#512)
hiddewie Aug 3, 2025
4ac9bf4
Document downloading, filtering and publishing the planet data (#516)
hiddewie Aug 3, 2025
8ef40f6
IT signals (part 2) (#517)
hiddewie Aug 3, 2025
dcff4c1
render `railway=hirail_access` (#530)
k-yle Sep 14, 2025
c8f3c89
Finland specific track classes added (#531)
pirttju Sep 14, 2025
808f82d
Add Finnish train protection system JKV (#532)
pirttju Sep 14, 2025
f2aba9f
Maplibre GL JS 5.7 (#537)
hiddewie Sep 14, 2025
ad65e01
Render signal boxes ref on high zooms if no name (#538)
hiddewie Sep 14, 2025
e7b7959
Update signals_railway_signals.yaml (#536)
MatCr90 Sep 14, 2025
86e5431
Add a few more German signals (#534)
besentv Sep 14, 2025
dd57682
Implement GB whistle boards (#523)
Liaely Sep 15, 2025
cd3a8f4
fallback to `oneway=*` if `railway:preferred_direction=*` does not ex…
k-yle Sep 15, 2025
3fbaf32
IT crossing PL sign (#539)
hiddewie Sep 17, 2025
bb5dea2
Remove custom display of DE Blockkennzeichen (#540)
hiddewie Sep 17, 2025
9eef19e
Use `railway:signal:regime` tag for BE signal regime (#541)
hiddewie Sep 17, 2025
495174f
add TWC to train_protection.yaml (#529)
k-yle Sep 18, 2025
387c853
add ATMS to train_protection.yaml (#546)
k-yle Sep 18, 2025
4d59fda
Planet deployment script, plain copy (#552)
hiddewie Sep 20, 2025
405344a
Upgrade Cypress to version 15 (#551)
hiddewie Sep 20, 2025
c5248f1
Show name and reference for station/subway entrances (#553)
hiddewie Sep 20, 2025
6e9729d
Maplibre GL JS 5.7.3 (#558)
hiddewie Sep 20, 2025
31f48ae
Render Wikipedia titles and signal features with flag emoji (#556)
hiddewie Sep 21, 2025
5c1cedc
Fix errors for station/subway entrances in legend (#559)
hiddewie Sep 21, 2025
3e1f14e
Deactivated signals per feature (#560)
hiddewie Sep 23, 2025
25f81b1
Add German signals Pl 3, Pl 4 (#564)
entbert Sep 23, 2025
13b53e3
Platforms (#557)
hiddewie Sep 23, 2025
80b9230
Ignore signal feature type for popup (#566)
hiddewie Sep 23, 2025
f9832d4
add NZ signals (part 1) (#565)
k-yle Sep 24, 2025
a0b0574
Merge branch 'master' of github.com:OpenRailwayMap/OpenRailwayMap-Car…
hiddewie Sep 24, 2025
26adcf9
automatically generate taginfo.json file from the yaml files (#563)
k-yle Sep 25, 2025
06b335d
Use Maplibre `global-state` for theme (#570)
hiddewie Sep 26, 2025
ec0b3eb
Add further signals from Germany (#573)
entbert Sep 27, 2025
1ca9919
Fix relation links opening as ways (#576)
hiddewie Sep 27, 2025
95388ee
Fix platforms with multiple references (#577)
hiddewie Sep 27, 2025
a5ff81e
Ensure non-loading images do not take space in popup (#578)
hiddewie Sep 27, 2025
c492efb
Fix IT speed, speed distant, main and combined signal icons (#582)
hiddewie Sep 28, 2025
235837e
Podman support (#574)
hiddewie Sep 29, 2025
e371013
Stacked signal features: offset icons with signal height (#580)
hiddewie Sep 29, 2025
e68d06b
Specify tagging for NL shunting / train protection signal addons (#583)
hiddewie Sep 29, 2025
ddb3c65
Detect unknown signals (#579)
hiddewie Sep 29, 2025
3934abb
Fix DE-AVG crossing signals (#581)
entbert Sep 29, 2025
95e7dc4
Revert usage of port 8443 (#584)
hiddewie Sep 30, 2025
10ddb3a
Signal position in popup (#588)
hiddewie Oct 2, 2025
0563f27
Do not import bus/taxy/ferry-only platforms (#589)
hiddewie Oct 3, 2025
741066c
Fix EN Wikipedia emoji not displaying (#591)
hiddewie Oct 3, 2025
fe49bbe
Station bubbles for stations mapped as ways (#592)
hiddewie Oct 3, 2025
e735a90
Stop area groups (#593)
hiddewie Oct 4, 2025
321213b
Render buffer stop and derail features in train protection layer (#550)
hiddewie Oct 6, 2025
1edf3ad
Improve signal halo in dark mode (#604)
hiddewie Oct 6, 2025
8d9c3b7
add Australian metro signals (#601)
k-yle Oct 6, 2025
d13fdb6
PL tram signals (AT, BT and DT) (#596)
Anasmasuris Oct 6, 2025
967ea2a
Fix API container build (Python alpine base image) (#607)
hiddewie Oct 9, 2025
c098888
Include platforms in station bubbles (#606)
hiddewie Oct 9, 2025
daadbd9
Add German tram switch signals (#595)
entbert Oct 10, 2025
1e8f35a
Hillshading (#608)
hiddewie Oct 11, 2025
7affcb0
News June until October 2025 (#610)
hiddewie Oct 15, 2025
62a222f
BE Carwash speed signals (#616)
hiddewie Oct 15, 2025
65c9bfd
Correction of IT distant stop signs (#613)
MatCr90 Oct 17, 2025
3e2a489
add Australian light-rail signals (#609)
k-yle Oct 17, 2025
1927996
Missing deactivated layer for zooms 13-16 (#618)
hiddewie Oct 17, 2025
d56b1bb
Exact line positions (#620)
hiddewie Oct 18, 2025
f912fab
Render disused and preserved railways in all styles (#619)
hiddewie Oct 18, 2025
00348e1
Link tram stops to stop areas for station bubbles (#622)
hiddewie Oct 18, 2025
a897b66
Station names for low zooms (#623)
hiddewie Oct 21, 2025
9ed3464
Prioritize dwarf Ne3 signs over normal ones. (#628)
besentv Oct 21, 2025
36a508f
Add support for German Sk signals (#627)
besentv Oct 21, 2025
f7c4b1f
Merge branch 'master' of github.com:OpenRailwayMap/OpenRailwayMap-Car…
hiddewie Oct 21, 2025
13ecd03
Merge branch 'master' of github.com:hiddewie/OpenRailwayMap-vector
hiddewie Oct 21, 2025
2a33978
Postgres 18, PostGIS 3.6 (#590)
hiddewie Oct 21, 2025
609f07e
add Australian signs (NSW) (#626)
k-yle Oct 24, 2025
fca32eb
Tests for Lua import script logic (#625)
hiddewie Oct 24, 2025
0051742
Run Hurl in CI through Docker image (#629)
hiddewie Oct 25, 2025
f97690e
Split `.dockerignore` per `Dockerfile` (#632)
hiddewie Oct 26, 2025
40737a4
Minimize tile data for low zoom railway lines (#631)
hiddewie Oct 26, 2025
ef0b553
Funding buttons on Github (#635)
hiddewie Oct 26, 2025
ff5a2f6
Maplibre GL JS 5.10 (#636)
hiddewie Oct 26, 2025
85f1d19
FR train protection, route, shunting and stop signals (#638)
hiddewie Oct 30, 2025
212e24c
NL ETCS block markers (#637)
hiddewie Oct 30, 2025
7ff5004
Move all tile sources to function sources (#634)
hiddewie Oct 30, 2025
eede969
Implement GB cab signalling (#640)
Liaely Oct 30, 2025
1d12849
add TMACS to train_protection.yaml (#643)
k-yle Nov 1, 2025
217645d
Update Maplibre GL JS from 5.10 to 5.11 (#650)
hiddewie Nov 4, 2025
6359869
Render platforms mapped as lines (#649)
hiddewie Nov 5, 2025
421f748
Italian square main, distant and combined signal icons. (#639)
MatCr90 Nov 5, 2025
a84c519
Render stop positions (#652)
hiddewie Nov 6, 2025
40cdb71
Hide all modals and popups when `Escape` is pressed (#655)
hiddewie Nov 6, 2025
e7334be
Split signal direction and signal features materialized views from si…
hiddewie Nov 9, 2025
bb0331b
add Australian signals (NSW, part 1) (#642)
k-yle Nov 14, 2025
e1b4ab8
Fix import tests for shunting_route tags (#666)
hiddewie Nov 14, 2025
e3bfc37
Fix UI control for enabling references as station label (#669)
hiddewie Nov 16, 2025
138e0a8
Signals: support multiple icons per feature (#657)
hiddewie Nov 16, 2025
7138704
Feature icon height for non-centered positioned icons (#670)
hiddewie Nov 16, 2025
b63ea41
BE Petit Signal d'Arrêt signs (#671)
hiddewie Nov 16, 2025
91a08bd
FI stop positions (#672)
hiddewie Nov 20, 2025
d00e807
Simplify IT main/combined/distant icons with composed icons (#658)
hiddewie Nov 20, 2025
4d0044a
Import additional yard fields (#675)
hiddewie Nov 22, 2025
a85df64
Update signals_railway_signals.yaml (#677)
MatCr90 Nov 22, 2025
a5b9ee2
PL Warsaw Central specific semaphore (#676)
Anasmasuris Nov 22, 2025
3c33169
Import polygon stations as areas (#678)
hiddewie Nov 22, 2025
4bb7df4
CA main and US main/distant signals (#673)
hiddewie Nov 23, 2025
8af707a
Fix paragraph properties not displaying (#682)
hiddewie Nov 23, 2025
aa12dba
Adjust speed colour scale (#683)
entbert Nov 25, 2025
65aec5f
Yards: use total yard rail length as importance (#679)
hiddewie Nov 26, 2025
4acd6c7
Generalize stations using discrete isolation (#633)
hiddewie Nov 30, 2025
0878141
Emoji flag translations for cases where country does not match langua…
hiddewie Nov 30, 2025
2eb85bc
Update yards with their landuse (#688)
hiddewie Nov 30, 2025
2fcbdfe
Localized station names (#680)
hiddewie Nov 30, 2025
bbb5f3d
Render historical ferries (#690)
hiddewie Nov 30, 2025
4e13e82
Localized search API (#691)
hiddewie Nov 30, 2025
917f4bc
Add User-Agent header to Wikidata API requests (#693)
hiddewie Nov 30, 2025
0551f51
Mark geometry columns as non-null for import (#695)
hiddewie Nov 30, 2025
26a6f1d
Speed color scheme using Turbo color map (#694)
hiddewie Dec 2, 2025
6bac9be
Reorder Berlin search API response (#701)
hiddewie Dec 3, 2025
3eb2102
Stop area relations with only stops or platforms should be imported (…
hiddewie Dec 3, 2025
cb68b8b
add all remaining NZ signs+signals, except speed (#686)
k-yle Dec 3, 2025
2facf52
use the new icon composition system for AU (#685)
k-yle Dec 5, 2025
f7eee12
Make localization configurable through settings (#702)
hiddewie Dec 5, 2025
e58902d
Add additional UK loading gauges & combinations (#704)
Liaely Dec 6, 2025
c9624c9
Import multipolygons for `landuse=railway` (#698)
wolfy1339 Dec 7, 2025
910af9e
Known operators (#707)
hiddewie Dec 7, 2025
95e30fc
Traction substations (#709)
hiddewie Dec 8, 2025
bec9b18
Improve yard areas (#706)
hiddewie Dec 8, 2025
033147a
Docker Compose one command start (#710)
hiddewie Dec 8, 2025
141ddce
Format for github Action caching
hiddewie Dec 8, 2025
2fdb3c3
Nightly update workflow fixes (#715)
hiddewie Dec 8, 2025
a1a71bb
Add more US operators (#716)
wolfy1339 Dec 11, 2025
6bafafd
Add colours for some German operators (#717)
entbert Dec 11, 2025
1c7b0c8
Common operators (#718)
hiddewie Dec 11, 2025
0a564de
add AU-NSW main/distant signals (#689)
k-yle Dec 13, 2025
90c75ce
Maplibre GL JS 5.15 (#722)
hiddewie Dec 18, 2025
d09d122
Common operators (part 2) (#720)
hiddewie Dec 18, 2025
e3a03ac
Support GB junction signals with both feather & theatre design (#724)
hiddewie Dec 19, 2025
299d211
Hillshade: use global state to toggle layer visibility (#725)
hiddewie Dec 20, 2025
d7b3af6
Train protection: ATS, ATACS, KTCS (#728)
hiddewie Dec 20, 2025
0648532
Configuration for display of historical and future railways (#600)
hiddewie Dec 20, 2025
21f5b82
Import railway line maximum current (#730)
hiddewie Dec 20, 2025
41d9d40
Specify services to run when running locally (#729)
hiddewie Dec 20, 2025
9ee4743
Add two operators (#735)
besentv Dec 22, 2025
85c3dff
Generate legend in UI (#742)
hiddewie Dec 28, 2025
5821cfe
Layer configuration and support for maximum current in electrificatio…
hiddewie Dec 28, 2025
d039be1
Infrastructure configuration in configuration modal (#738)
hiddewie Dec 28, 2025
125f513
Electrification: maximum power (#737)
hiddewie Dec 28, 2025
f171146
Fix invalid color for "Toronto Transit Commission" operator (#744)
hiddewie Dec 28, 2025
b87e3c8
Ensure yards only show their outline in operator layer (#745)
hiddewie Dec 28, 2025
7cdbf42
Don't render short tunnels on low zooms (#743)
hiddewie Dec 28, 2025
4195bf5
Merge Gauge, Loading gauge and Track class styles into Track style (#…
hiddewie Dec 30, 2025
39983c2
Render historical railway landuse (#747)
hiddewie Dec 30, 2025
55ca345
Update README.md - Update contact links (#736)
danieldegroot2 Dec 30, 2025
1fef5c4
Offset signal reference/caption based on icon height (#754)
hiddewie Jan 1, 2026
4204761
Add more German operators (#751)
besentv Jan 1, 2026
35abbbc
Add GB stop and fixed distant boards (#753)
Liaely Jan 1, 2026
be6f7f7
Fix feature lookup for complex signal icons (#755)
hiddewie Jan 1, 2026
4ac0b5b
Integrate routes with stations, platforms, stop positions and railway…
hiddewie Jan 1, 2026
984b532
BE opposite regime for distant signals (#756)
hiddewie Jan 1, 2026
37b5f8f
BE: revert distant signal plates (#758)
hiddewie Jan 3, 2026
9a77d8d
Remove delete query for unneeded routes, clean data during nightly up…
hiddewie Jan 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
2 changes: 1 addition & 1 deletion .editorconfig
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
root = true

[*.{mss,sql,yml}]
[*]
charset = utf-8
indent_size = 2
indent_style = space
Expand Down
2 changes: 2 additions & 0 deletions .github/FUNDING.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
github: hiddewie
buy_me_a_coffee: hiddewie
165 changes: 165 additions & 0 deletions .github/workflows/nightly-update.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,165 @@
name: Nightly update

on:
workflow_dispatch: ~
schedule:
# Run daily at 23:47 or 00:47 Europe/Amsterdam
- cron: '47 22 * * *'

jobs:
update-data:
name: Update data
runs-on: ubuntu-24.04

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Pull OSM data
run: |
docker pull ghcr.io/${{ github.repository_owner }}/openrailwaymap-data:latest
docker tag ghcr.io/${{ github.repository_owner }}/openrailwaymap-data:latest openrailwaymap-data

- name: Copy OSM data
run: |
docker compose create data
docker compose cp data:/data/data.osm.pbf data/filtered/data.osm.pbf
docker compose rm data

- name: Build containers
uses: docker/bake-action@v6
with:
load: true
targets: db,import
set: |
db.cache-from=type=gha,scope=db-${{ runner.arch }}
import.cache-from=type=gha,scope=import-${{ runner.arch }}

- name: Update OSM data
run: |
docker compose run --no-deps import update

- name: Push data
run: |
docker compose build --no-cache data
docker tag openrailwaymap-data ghcr.io/${{ github.repository_owner }}/openrailwaymap-data:latest
docker push ghcr.io/${{ github.repository_owner }}/openrailwaymap-data:latest

- name: Start database
run: |
docker compose up --wait db

- name: Import data
env:
OSM2PGSQL_NUMPROC: '8'
run: |
docker compose run --no-deps import import
rm -f data/filtered/data.osm.pbf

- name: Create database image
run: |
docker compose stop db
DB_CONTAINER_ID="$(docker compose ps --all --format json | jq -r 'select(.Service == "db") | .ID')"
docker commit "$DB_CONTAINER_ID" ghcr.io/${{ github.repository_owner }}/openrailwaymap-import-db:latest

- name: Push database image
run: |
docker push ghcr.io/${{ github.repository_owner }}/openrailwaymap-import-db:latest

build-martin:
name: Build tiles container
runs-on: ubuntu-24.04

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Build containers
uses: docker/bake-action@v6
with:
push: true
targets: martin
set: |
martin.cache-from=type=gha,scope=martin-${{ runner.arch }}
martin.tags=ghcr.io/${{ github.repository_owner }}/openrailwaymap-martin:latest

build-proxy:
name: Build proxy container
runs-on: ubuntu-24.04

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Get Date
id: get-date
shell: bash
run: |
echo "date=$(/bin/date -u "+1.%Y%m%d-%Y-%m-%d")" >> $GITHUB_OUTPUT

- name: Build containers
uses: docker/bake-action@v6
with:
push: true
targets: proxy
set: |
proxy.cache-from=type=gha,scope=proxy-${{ runner.arch }}
proxy.args.PRESET_VERSION=${{ steps.get-date.outputs.date }}
proxy.tags=ghcr.io/${{ github.repository_owner }}/openrailwaymap-proxy:latest

build-api:
name: Build API container
runs-on: ubuntu-24.04

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Build containers
uses: docker/bake-action@v6
with:
push: true
targets: api
set: |
api.cache-from=type=gha,scope=api-${{ runner.arch }}
api.tags=ghcr.io/${{ github.repository_owner }}/openrailwaymap-api:latest
144 changes: 144 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
name: Test

on:
workflow_dispatch: ~
push:
branches:
- master
pull_request: ~

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.ref_name != 'master' }}

jobs:
test:
name: Build and test

strategy:
matrix:
runs-on:
- ubuntu-24.04
- ubuntu-24.04-arm

runs-on: ${{ matrix.runs-on }}

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Get Date
id: get-date
shell: bash
run: |
echo "date=$(/bin/date -u "+%Y%m")" >> $GITHUB_OUTPUT

- name: Cache data
uses: actions/cache@v4
id: cache-data
with:
path: |
data/berlin.osm.pbf
data/filtered/berlin.osm.pbf
key: data-${{ steps.get-date.outputs.date }}-berlin
enableCrossOsArchive: true

- name: Download Berlin
if: ${{ steps.cache-data.outputs.cache-hit != 'true' }}
run: |
curl --location --fail --output data/berlin.osm.pbf https://download.geofabrik.de/europe/germany/berlin-latest.osm.pbf

- name: Build containers
uses: docker/bake-action@v6
with:
load: true
targets: db,import,import-test,api,martin,proxy
set: |
db.cache-from=type=gha,scope=db-${{ runner.arch }}
${{ github.ref_name == 'master' && format('db.cache-to=type=gha,mode=max,scope=db-{0}', runner.arch) || '' }}
import.cache-from=type=gha,scope=import-${{ runner.arch }}
${{ github.ref_name == 'master' && format('import.cache-to=type=gha,mode=max,scope=import-{0}', runner.arch) || '' }}
import-test.cache-from=type=gha,scope=import-test-${{ runner.arch }}
${{ github.ref_name == 'master' && format('import-test.cache-to=type=gha,mode=max,scope=import-test-{0}', runner.arch) || '' }}
api.cache-from=type=gha,scope=api-${{ runner.arch }}
${{ github.ref_name == 'master' && format('api.cache-to=type=gha,mode=max,scope=api-{0}', runner.arch) || '' }}
martin.cache-from=type=gha,scope=martin-${{ runner.arch }}
${{ github.ref_name == 'master' && format('martin.cache-to=type=gha,mode=max,scope=martin-{0}', runner.arch) || '' }}
proxy.cache-from=type=gha,scope=proxy-${{ runner.arch }}
${{ github.ref_name == 'master' && format('proxy.cache-to=type=gha,mode=max,scope=proxy-{0}', runner.arch) || '' }}

- name: Start database
run: |
docker compose up --wait db

- name: Run import tests
run: |
docker compose run --rm import-test

- name: Import data
env:
OSM2PGSQL_DATAFILE: berlin.osm.pbf
run: |
docker compose run --rm --no-deps import import

- name: Start API
run: |
docker compose up --wait --no-deps api

- name: Run API tests
run: |
docker compose up --no-deps api-test

- name: Start tile server
run: |
docker compose up --detach --no-deps martin

- name: Start proxy
run: |
docker compose up --wait --no-deps proxy

- name: Run proxy tests
run: |
docker compose run --no-deps proxy-test

- name: Download preset
if: always()
run: |
curl -sSf -o preset.zip http://localhost:8000/preset.zip

- name: Store preset
uses: actions/upload-artifact@v4
if: always()
with:
name: ${{ runner.arch }}-presets
path: preset.zip
if-no-files-found: warn

- name: Run UI tests
uses: cypress-io/github-action@v6
with:
working-directory: proxy/test/ui
browser: ${{ runner.arch == 'X64' && 'chrome' || 'firefox' }}

- name: Store screenshots
uses: actions/upload-artifact@v4
if: always()
with:
name: ${{ runner.arch }}-screenshots
path: proxy/test/ui/cypress/screenshots
if-no-files-found: warn

- name: Print logs
if: always()
run: |
docker compose logs
8 changes: 8 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
*.swp
data/
db/postgres-data
standard.xml
maxspeed.xml
signals.xml
Expand All @@ -11,3 +12,10 @@ tmp
.kosmtik-config.yml
.env
*.osm.pbf
.idea
compose.override.yaml
localhost.pem
localhost-key.pem
node_modules
taginfo.json
.DS_Store
Loading