cache import image #206
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: 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 --no-build 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 db | |
- name: Prepare and start API | |
run: | | |
api/prepare-api.sh | |
docker compose build api | |
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 db | |
- name: Start tile server | |
run: | | |
docker compose build martin | |
docker compose up --no-build --wait 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 | |
run: | | |
# TODO | |
true | |
- name: Service logs | |
if: always() | |
continue-on-error: true | |
run: | | |
echo "Martin logs" | |
docker compose logs martin | |
echo "Proxy logs" | |
docker compose logs martin-proxy | |
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: 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 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 |