Electricity signals (part 4) (#144) #259
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |