Skip to content

Docs/256 add docstring #101

Docs/256 add docstring

Docs/256 add docstring #101

name: Build & Push Benchmarking Containers to ACR
on:
pull_request:
types: [closed]
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
id-token: write
contents: read
jobs:
detect-changes:
name: Detect changed paths
runs-on: ubuntu-latest
if: github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true
permissions:
contents: read
pull-requests: read
outputs:
orchestrator: ${{ steps.filter.outputs.orchestrator || (github.event_name == 'workflow_dispatch' && 'true') }}
benchmarks: ${{ steps.filter.outputs.benchmarks || (github.event_name == 'workflow_dispatch' && 'true') }}
steps:
- uses: actions/checkout@v4
- uses: dorny/paths-filter@v3
id: filter
if: github.event_name == 'pull_request'
with:
filters: |
orchestrator:
- 'main.py'
- 'benchmarks.yml'
- 'src/__init__.py'
- 'src/config.py'
- 'src/application/common/**'
- 'src/domain/enums/storage_container.py'
- '.docker/Orchestrator.Dockerfile'
- 'requirements.txt'
- 'docker-compose.yml'
benchmarks:
- 'src/**'
- 'benchmark_runner.py'
- '.docker/Query.Dockerfile'
- '.docker/Setup.Dockerfile'
- 'requirements.txt'
- 'docker-compose.yml'
build-and-push-queries:
name: Build & Push ${{ matrix.display_name }}
needs: detect-changes
if: ${{ needs.detect-changes.outputs.benchmarks == 'true' }}
runs-on: ubuntu-latest
strategy:
matrix:
include:
- service: db-scan-blob-storage
image: db-scan-blob-storage
display_name: Blob Storage DB Scan
- service: db-scan-postgis
image: db-scan-postgis
display_name: PostGIS DB Scan
- service: bbox-filtering-advanced-duckdb
image: bbox-filtering-advanced-duckdb
display_name: Advanced DuckDB Bounding Box Filtering
- service: bbox-filtering-advanced-postgis
image: bbox-filtering-advanced-postgis
display_name: Advanced PostGIS Bounding Box Filtering
- service: bbox-filtering-simple-local
image: bbox-filtering-simple-local
display_name: Simple Shapefile Bounding Box Filtering
- service: bbox-filtering-simple-blob-storage
image: bbox-filtering-simple-blob-storage
display_name: Simple GeoParquet Bounding Box Filtering
- service: bbox-filtering-result-set-sizes-neighborhood-duckdb
image: bbox-filtering-result-set-sizes-neighborhood-duckdb
display_name: DuckDB Bounding Box Filtering - Neighborhood
- service: bbox-filtering-result-set-sizes-municipality-duckdb
image: bbox-filtering-result-set-sizes-municipality-duckdb
display_name: DuckDB Bounding Box Filtering - Municipality
- service: bbox-filtering-result-set-sizes-county-duckdb
image: bbox-filtering-result-set-sizes-county-duckdb
display_name: DuckDB Bounding Box Filtering - County
- service: bbox-filtering-result-set-sizes-neighborhood-postgis
image: bbox-filtering-result-set-sizes-neighborhood-postgis
display_name: PostGIS Bounding Box Filtering - Neighborhood
- service: bbox-filtering-result-set-sizes-municipality-postgis
image: bbox-filtering-result-set-sizes-municipality-postgis
display_name: PostGIS Bounding Box Filtering - Municipality
- service: bbox-filtering-result-set-sizes-county-postgis
image: bbox-filtering-result-set-sizes-county-postgis
display_name: PostGIS Bounding Box Filtering - County
- service: bbox-filtering-result-set-sizes-neighborhood-local
image: bbox-filtering-result-set-sizes-neighborhood-local
display_name: Shapefile Bounding Box Filtering - Neighborhood
- service: bbox-filtering-result-set-sizes-municipality-local
image: bbox-filtering-result-set-sizes-municipality-local
display_name: Shapefile Bounding Box Filtering - Municipality
- service: bbox-filtering-result-set-sizes-county-local
image: bbox-filtering-result-set-sizes-county-local
display_name: Shapefile Bounding Box Filtering - County
- service: vector-tiles-single-tile-pmtiles
image: vector-tiles-single-tile-pmtiles
display_name: PMTiles Fetch Single Tile
- service: vector-tiles-single-tile-vmt
image: vector-tiles-single-tile-vmt
display_name: VMT Fetch Single Tile
- service: vector-tiles-100k-pmtiles
image: vector-tiles-100k-pmtiles
display_name: PMTiles Fetch 100 000 Tiles
- service: vector-tiles-100k-vmt
image: vector-tiles-100k-vmt
display_name: VMT Fetch 100 000 Tiles
- service: spatial-aggregation-grid-duckdb
image: spatial-aggregation-grid-duckdb
display_name: DuckDB Spatial Aggregation by Grid Cell
- service: spatial-aggregation-grid-postgis
image: spatial-aggregation-grid-postgis
display_name: PostGIS Spatial Aggregation by Grid Cell
- service: attribute-spatial-compound-filter-duckdb
image: attribute-spatial-compound-filter-duckdb
display_name: DuckDB Attribute + Spatial Compound Filter
- service: attribute-spatial-compound-filter-postgis
image: attribute-spatial-compound-filter-postgis
display_name: PostGIS Attribute + Spatial Compound Filter
- service: ordered-range-query-duckdb
image: ordered-range-query-duckdb
display_name: DuckDB Ordered Range Query with LIMIT
- service: ordered-range-query-postgis
image: ordered-range-query-postgis
display_name: PostGIS Ordered Range Query with LIMIT
- service: point-in-polygon-lookup-duckdb
image: point-in-polygon-lookup-duckdb
display_name: DuckDB Point-in-Polygon Lookup
- service: point-in-polygon-lookup-postgis
image: point-in-polygon-lookup-postgis
display_name: PostGIS Point-in-Polygon Lookup
- service: national-scale-spatial-join-duckdb
image: national-scale-spatial-join-duckdb
display_name: DuckDB National Scale Spatial Join
- service: national-scale-spatial-join-postgis
image: national-scale-spatial-join-postgis
display_name: PostGIS National Scale Spatial Join
- service: national-scale-spatial-join-databricks-2-nodes
image: national-scale-spatial-join-databricks-2-nodes
display_name: Databricks National Scale Spatial Join - 2 Nodes
- service: national-scale-spatial-join-databricks-4-nodes
image: national-scale-spatial-join-databricks-4-nodes
display_name: Databricks National Scale Spatial Join - 4 Nodes
- service: national-scale-spatial-join-databricks-8-nodes
image: national-scale-spatial-join-databricks-8-nodes
display_name: Databricks National Scale Spatial Join - 8 Nodes
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Azure Login
uses: azure/login@v2
with:
client-id: ${{ vars.AZURE_CLIENT_ID }}
tenant-id: ${{ vars.AZURE_TENANT_ID }}
subscription-id: ${{ vars.AZURE_SUBSCRIPTION_ID }}
- name: Log in to ACR
run: az acr login --name ${{ vars.ACR_NAME }}
- name: Build ${{ matrix.display_name }} from docker-compose
run: docker compose build ${{ matrix.service }}
- name: Tag ${{ matrix.display_name }} as latest
run: docker tag ${{ matrix.service }}:latest ${{ vars.ACR_LOGIN_SERVER }}/${{ matrix.image }}:latest
- name: Tag ${{ matrix.display_name }} with commit SHA
run: docker tag ${{ matrix.service }}:latest ${{ vars.ACR_LOGIN_SERVER }}/${{ matrix.image }}:${{ github.sha }}
- name: Push ${{ matrix.display_name }} (latest)
run: docker push ${{ vars.ACR_LOGIN_SERVER }}/${{ matrix.image }}:latest
- name: Push ${{ matrix.display_name }} (commit SHA)
run: docker push ${{ vars.ACR_LOGIN_SERVER }}/${{ matrix.image }}:${{ github.sha }}
build-and-push-container-orchestrator:
name: Build & Push Container Orchestrator
needs:
- detect-changes
- build-and-push-queries
if: |
always()
&& !cancelled()
&& needs.detect-changes.result == 'success'
&& needs.detect-changes.outputs.orchestrator == 'true'
&& (needs.build-and-push-queries.result == 'success' || needs.build-and-push-queries.result == 'skipped')
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Azure Login
uses: azure/login@v2
with:
client-id: ${{ vars.AZURE_CLIENT_ID }}
tenant-id: ${{ vars.AZURE_TENANT_ID }}
subscription-id: ${{ vars.AZURE_SUBSCRIPTION_ID }}
- name: Log in to ACR
run: az acr login --name ${{ vars.ACR_NAME }}
- name: Build Container Orchestrator from docker-compose
run: docker compose build container-orchestrator
- name: Tag Container Orchestrator as latest
run: docker tag container-orchestrator:latest ${{ vars.ACR_LOGIN_SERVER }}/container-orchestrator:latest
- name: Tag Container Orchestrator with commit SHA
run: docker tag container-orchestrator:latest ${{ vars.ACR_LOGIN_SERVER }}/container-orchestrator:${{ github.sha }}
- name: Push Container Orchestrator (latest)
run: docker push ${{ vars.ACR_LOGIN_SERVER }}/container-orchestrator:latest
- name: Push Container Orchestrator (commit SHA)
run: docker push ${{ vars.ACR_LOGIN_SERVER }}/container-orchestrator:${{ github.sha }}
build-and-push-setup-framework:
name: Build & Push Setup Framework
needs:
- detect-changes
- build-and-push-queries
if: |
always()
&& !cancelled()
&& needs.detect-changes.result == 'success'
&& needs.detect-changes.outputs.benchmarks == 'true'
&& (needs.build-and-push-queries.result == 'success' || needs.build-and-push-queries.result == 'skipped')
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Azure Login
uses: azure/login@v2
with:
client-id: ${{ vars.AZURE_CLIENT_ID }}
tenant-id: ${{ vars.AZURE_TENANT_ID }}
subscription-id: ${{ vars.AZURE_SUBSCRIPTION_ID }}
- name: Log in to ACR
run: az acr login --name ${{ vars.ACR_NAME }}
- name: Build Setup Framework from docker-compose
run: docker compose build setup-framework
- name: Tag Setup Framework as latest
run: docker tag setup-framework:latest ${{ vars.ACR_LOGIN_SERVER }}/setup-framework:latest
- name: Tag Setup Framework with commit SHA
run: docker tag setup-framework:latest ${{ vars.ACR_LOGIN_SERVER }}/setup-framework:${{ github.sha }}
- name: Push Setup Framework (latest)
run: docker push ${{ vars.ACR_LOGIN_SERVER }}/setup-framework:latest
- name: Push Setup Framework (commit SHA)
run: docker push ${{ vars.ACR_LOGIN_SERVER }}/setup-framework:${{ github.sha }}