Skip to content

Nightly update workflow fixes #2058

Nightly update workflow fixes

Nightly update workflow fixes #2058

Workflow file for this run

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