#292 Add sequential stopping rule for benchmark iterations #120
Workflow file for this run
This file contains hidden or 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: 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: | |
| # ---- RQ1 query benchmarks ---- | |
| - 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: point-in-polygon-lookup-local | |
| image: point-in-polygon-lookup-local | |
| display_name: Shapefile Point-in-Polygon Lookup | |
| - service: knn-search-duckdb | |
| image: knn-search-duckdb | |
| display_name: DuckDB KNN Search | |
| - service: knn-search-postgis | |
| image: knn-search-postgis | |
| display_name: PostGIS KNN Search | |
| - service: knn-search-local | |
| image: knn-search-local | |
| display_name: Shapefile KNN Search | |
| - service: bbox-filtering-duckdb | |
| image: bbox-filtering-duckdb | |
| display_name: DuckDB Bounding Box Filtering | |
| - service: bbox-filtering-postgis | |
| image: bbox-filtering-postgis | |
| display_name: PostGIS Bounding Box Filtering | |
| - service: bbox-filtering-local | |
| image: bbox-filtering-local | |
| display_name: Shapefile Bounding Box Filtering | |
| # ---- RQ2 national-scale spatial join ---- | |
| - 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-broadcast-2-nodes | |
| image: national-scale-spatial-join-databricks-broadcast-2-nodes | |
| display_name: Sedona National Scale Spatial Join - Broadcast - 2 Nodes | |
| - service: national-scale-spatial-join-databricks-broadcast-4-nodes | |
| image: national-scale-spatial-join-databricks-broadcast-4-nodes | |
| display_name: Sedona National Scale Spatial Join - Broadcast - 4 Nodes | |
| - service: national-scale-spatial-join-databricks-broadcast-8-nodes | |
| image: national-scale-spatial-join-databricks-broadcast-8-nodes | |
| display_name: Sedona National Scale Spatial Join - Broadcast - 8 Nodes | |
| - service: national-scale-spatial-join-databricks-partitioned-2-nodes | |
| image: national-scale-spatial-join-databricks-partitioned-2-nodes | |
| display_name: Sedona National Scale Spatial Join - Partitioned - 2 Nodes | |
| - service: national-scale-spatial-join-databricks-partitioned-4-nodes | |
| image: national-scale-spatial-join-databricks-partitioned-4-nodes | |
| display_name: Sedona National Scale Spatial Join - Partitioned - 4 Nodes | |
| - service: national-scale-spatial-join-databricks-partitioned-8-nodes | |
| image: national-scale-spatial-join-databricks-partitioned-8-nodes | |
| display_name: Sedona National Scale Spatial Join - Partitioned - 8 Nodes | |
| - service: national-scale-spatial-join-databricks-broadcast-12-nodes | |
| image: national-scale-spatial-join-databricks-broadcast-12-nodes | |
| display_name: Sedona National Scale Spatial Join - Broadcast - 12 Nodes | |
| - service: national-scale-spatial-join-databricks-broadcast-16-nodes | |
| image: national-scale-spatial-join-databricks-broadcast-16-nodes | |
| display_name: Sedona National Scale Spatial Join - Broadcast - 16 Nodes | |
| - service: national-scale-spatial-join-databricks-partitioned-12-nodes | |
| image: national-scale-spatial-join-databricks-partitioned-12-nodes | |
| display_name: Sedona National Scale Spatial Join - Partitioned - 12 Nodes | |
| - service: national-scale-spatial-join-databricks-partitioned-16-nodes | |
| image: national-scale-spatial-join-databricks-partitioned-16-nodes | |
| display_name: Sedona National Scale Spatial Join - Partitioned - 16 Nodes | |
| - service: national-scale-spatial-join-databricks-default-2-nodes | |
| image: national-scale-spatial-join-databricks-default-2-nodes | |
| display_name: Sedona National Scale Spatial Join - Default - 2 Nodes | |
| - service: national-scale-spatial-join-databricks-default-4-nodes | |
| image: national-scale-spatial-join-databricks-default-4-nodes | |
| display_name: Sedona National Scale Spatial Join - Default - 4 Nodes | |
| - service: national-scale-spatial-join-databricks-default-8-nodes | |
| image: national-scale-spatial-join-databricks-default-8-nodes | |
| display_name: Sedona National Scale Spatial Join - Default - 8 Nodes | |
| - service: national-scale-spatial-join-databricks-default-12-nodes | |
| image: national-scale-spatial-join-databricks-default-12-nodes | |
| display_name: Sedona National Scale Spatial Join - Default - 12 Nodes | |
| - service: national-scale-spatial-join-databricks-default-16-nodes | |
| image: national-scale-spatial-join-databricks-default-16-nodes | |
| display_name: Sedona National Scale Spatial Join - Default - 16 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 }} |