Skip to content

Electricity signals (part 4) (#144) #259

Electricity signals (part 4) (#144)

Electricity signals (part 4) (#144) #259

Workflow file for this run

name: Test
on:
push: ~
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.ref_name != 'master' }}
jobs:
import:
name: Import data
runs-on: ubuntu-latest
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/germany.osm.pbf
data/filtered/germany.osm.pbf
key: ${{ runner.os }}-data-${{ steps.get-date.outputs.date }}-berlin
- name: Download Berlin
if: ${{ steps.cache.outputs.cache-hit != 'true' }}
run: |
curl --location --fail --output data/berlin.osm.pbf https://download.geofabrik.de/europe/germany/berlin-latest.osm.pbf
- name: Start database
env:
OSM2PGSQL_DATAFILE: berlin.osm.pbf
run: |
docker compose build db
docker compose up --no-build --wait db
- name: Build import image
run: |
docker compose build import
if [[ "${{ github.ref_name }}" = "master" ]]; then
docker compose push import
fi
- name: Import data
env:
OSM2PGSQL_DATAFILE: berlin.osm.pbf
run: |
docker compose run import import
- name: Prepare and start API
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/hiddewie/openrailwaymap-import-db:${{ github.sha }}
docker push ghcr.io/hiddewie/openrailwaymap-import-db:${{ github.sha }}
build-api:
name: Build API
runs-on: ubuntu-latest
needs:
- import
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 database
run: |
docker pull ghcr.io/hiddewie/openrailwaymap-import-db:${{ github.sha }}
docker tag ghcr.io/hiddewie/openrailwaymap-import-db:${{ github.sha }} ghcr.io/hiddewie/openrailwaymap-import-db:latest
- name: Start database
run: |
docker compose up --no-build --wait db
- name: Prepare API
run: |
api/prepare-api.sh
- name: Push API image
run: |
docker tag ghcr.io/hiddewie/openrailwaymap-api:latest ghcr.io/hiddewie/openrailwaymap-api:${{ github.sha }}
docker push ghcr.io/hiddewie/openrailwaymap-api:${{ github.sha }}
test-api:
name: Test API
runs-on: ubuntu-latest
needs:
- build-api
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: Install Hurl
env:
VERSION: '5.0.1'
run: |
curl --location --remote-name https://github.com/Orange-OpenSource/hurl/releases/download/$VERSION/hurl_${VERSION}_amd64.deb
sudo apt update && sudo apt install ./hurl_${VERSION}_amd64.deb
- name: Pull API
run: |
docker pull ghcr.io/hiddewie/openrailwaymap-api:${{ github.sha }}
docker tag ghcr.io/hiddewie/openrailwaymap-api:${{ github.sha }} ghcr.io/hiddewie/openrailwaymap-api:latest
- name: Start API
run: |
docker compose up --wait --no-build api
- name: Run API tests
working-directory: api
run: |
hurl --test --verbose --variable base_url=http://localhost:5000/api test/api.hurl
test-proxy:
name: Test proxy
runs-on: ubuntu-latest
needs:
- import
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: Install Hurl
env:
VERSION: '5.0.1'
run: |
curl --location --remote-name https://github.com/Orange-OpenSource/hurl/releases/download/$VERSION/hurl_${VERSION}_amd64.deb
sudo apt update && sudo apt install ./hurl_${VERSION}_amd64.deb
- name: Pull database
run: |
docker pull ghcr.io/hiddewie/openrailwaymap-import-db:${{ github.sha }}
docker tag ghcr.io/hiddewie/openrailwaymap-import-db:${{ github.sha }} ghcr.io/hiddewie/openrailwaymap-import-db:latest
- name: Start database
run: |
docker compose up --no-build --wait db
- name: Start tile server
run: |
docker compose build martin
docker compose up --no-build --detach martin
- name: Start web server
run: |
docker compose build martin-proxy
docker compose up --no-build --wait martin-proxy
- name: Run proxy tests
working-directory: proxy
run: |
hurl --test --verbose --variable base_url=http://localhost:8000 test/proxy.hurl
test-tiles:
name: Test tiles
runs-on: ubuntu-latest
needs:
- import
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: Install Hurl
env:
VERSION: '5.0.1'
run: |
curl --location --remote-name https://github.com/Orange-OpenSource/hurl/releases/download/$VERSION/hurl_${VERSION}_amd64.deb
sudo apt update && sudo apt install ./hurl_${VERSION}_amd64.deb
- name: Pull database
run: |
docker pull ghcr.io/hiddewie/openrailwaymap-import-db:${{ github.sha }}
docker tag ghcr.io/hiddewie/openrailwaymap-import-db:${{ github.sha }} ghcr.io/hiddewie/openrailwaymap-import-db:latest
- name: Start database
run: |
docker compose up --no-build --wait db
- name: Generate tiles
env:
BBOX: '12.9611,52.2934,13.8126,52.7147'
run: |
for tile in low-med high standard speed signals electrification; do
env "TILES=$tile" docker compose up --no-build martin-cp
done
- name: List generated tiles
run: |
ls -la tiles/*.mbtiles
- name: Start martin with tiles
run: |
docker compose build martin-static
docker compose up --no-build --wait martin-static
- name: Run static tile tests
working-directory: tiles
run: |
hurl --test --verbose --variable base_url=http://localhost:3000 test/tiles.hurl
test-ui:
name: Test UI
runs-on: ubuntu-latest
needs:
- test-proxy
- test-api
- build-api
- test-tiles
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 database
run: |
docker pull ghcr.io/hiddewie/openrailwaymap-import-db:${{ github.sha }}
docker tag ghcr.io/hiddewie/openrailwaymap-import-db:${{ github.sha }} ghcr.io/hiddewie/openrailwaymap-import-db:latest
- name: Pull API
run: |
docker pull ghcr.io/hiddewie/openrailwaymap-api:${{ github.sha }}
docker tag ghcr.io/hiddewie/openrailwaymap-api:${{ github.sha }} ghcr.io/hiddewie/openrailwaymap-api:latest
- name: Start database
run: |
docker compose up --no-build --wait db
- name: Start tile server
run: |
docker compose build martin
docker compose up --no-build --detach martin
- name: Start web server
run: |
docker compose build martin-proxy
docker compose up --no-build --wait martin-proxy
- name: Start API
run: |
docker compose up --wait --no-build api
- name: Run UI tests
uses: cypress-io/github-action@v6
with:
working-directory: proxy/test/ui
browser: chrome
- name: Store
uses: actions/upload-artifact@v4
if: always()
with:
name: screenshots
path: proxy/test/ui/cypress/screenshots
if-no-files-found: warn