proxy tests #217
Workflow file for this run
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: ~ | |
# TODO cache imported DB or filtered & downloaded data | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: ${{ github.ref != '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 }} | |
test-api: | |
name: Test 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: 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: Prepare and start API | |
run: | | |
api/prepare-api.sh | |
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 | |
- name: Service logs | |
if: always() | |
continue-on-error: true | |
run: | | |
echo "API logs" | |
docker compose logs api | |
test-web: | |
name: Test web | |
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: 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 | |
- name: Run UI tests | |
if: false | |
run: | | |
# TODO | |
- name: Service logs | |
if: always() | |
continue-on-error: true | |
run: | | |
echo "Martin logs" | |
docker compose logs martin | |
DB_CONTAINER_ID="$(docker compose ps --all --format json | jq -r 'select(.Service == "martin") | .ID')" | |
docker inspect openrailwaymap-cartocss-martin-1 | |
echo "Proxy logs" | |
docker compose logs martin-proxy | |
DB_CONTAINER_ID="$(docker compose ps --all --format json | jq -r 'select(.Service == "martin-proxy") | .ID')" | |
docker inspect openrailwaymap-cartocss-martin-proxy-1 | |
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: 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 |