From ee1fa81ed7d758bde072a21b471641b0d5e7d731 Mon Sep 17 00:00:00 2001 From: Milind Srivastava Date: Thu, 19 Mar 2026 17:28:52 -0400 Subject: [PATCH 1/3] Added CI for building packages --- .github/workflows/docker.yml | 82 ++++++++++++++++++++++-------- asap-quickstart/docker-compose.yml | 6 +-- 2 files changed, 65 insertions(+), 23 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 3be7453..fa9b635 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -9,11 +9,18 @@ on: paths: - 'asap-common/installation/**' - 'asap-planner/**' + - 'asap-planner-rs/**' - 'asap-sketch-ingest/**' - 'asap-query-engine/**' - 'asap-tools/queriers/prometheus-client/**' + - 'asap-tools/data-sources/prometheus-exporters/fake_exporter/fake_exporter_rust/**' - '.github/workflows/docker.yml' workflow_dispatch: + inputs: + image-tag: + description: 'Tag to use for pushed images (e.g. v0.1.0, dev)' + required: true + default: 'dev' permissions: packages: write @@ -36,6 +43,15 @@ jobs: username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} + - name: Resolve image tag + id: tag + run: | + if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then + echo "value=${{ inputs.image-tag }}" >> $GITHUB_OUTPUT + else + echo "value=${{ github.ref_name }}" >> $GITHUB_OUTPUT + fi + # --- Base image (Python, fast) --- - name: Build base image run: | @@ -45,11 +61,11 @@ jobs: asap-common - name: Push base image - if: startsWith(github.ref, 'refs/tags/') + if: startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' run: | - docker tag sketchdb-base:latest ghcr.io/projectasap/asap-base:${{ github.ref_name }} + docker tag sketchdb-base:latest ghcr.io/projectasap/asap-base:${{ steps.tag.outputs.value }} docker tag sketchdb-base:latest ghcr.io/projectasap/asap-base:latest - docker push ghcr.io/projectasap/asap-base:${{ github.ref_name }} + docker push ghcr.io/projectasap/asap-base:${{ steps.tag.outputs.value }} docker push ghcr.io/projectasap/asap-base:latest # --- Planner (Python, depends on base) --- @@ -61,28 +77,41 @@ jobs: asap-planner - name: Push planner image - if: startsWith(github.ref, 'refs/tags/') + if: startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' run: | - docker tag asap-planner:local ghcr.io/projectasap/asap-planner:${{ github.ref_name }} + docker tag asap-planner:local ghcr.io/projectasap/asap-planner:${{ steps.tag.outputs.value }} docker tag asap-planner:local ghcr.io/projectasap/asap-planner:latest - docker push ghcr.io/projectasap/asap-planner:${{ github.ref_name }} + docker push ghcr.io/projectasap/asap-planner:${{ steps.tag.outputs.value }} docker push ghcr.io/projectasap/asap-planner:latest - # --- Sketch Ingest (Python, depends on base) --- - - name: Build sketch-ingest image + # --- Planner RS (Rust) --- + - name: Build and push planner-rs + uses: docker/build-push-action@v6 + with: + context: . + file: asap-planner-rs/Dockerfile + push: ${{ startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' }} + tags: | + ghcr.io/projectasap/asap-planner-rs:${{ steps.tag.outputs.value }} + ghcr.io/projectasap/asap-planner-rs:latest + cache-from: type=registry,ref=ghcr.io/projectasap/asap-planner-rs:buildcache + cache-to: type=registry,ref=ghcr.io/projectasap/asap-planner-rs:buildcache,mode=max + + # --- Summary Ingest (Python, depends on base) --- + - name: Build summary-ingest image run: | docker build \ - -t asap-sketch-ingest:local \ + -t asap-summary-ingest:local \ -f asap-sketch-ingest/Dockerfile \ asap-sketch-ingest - - name: Push sketch-ingest image - if: startsWith(github.ref, 'refs/tags/') + - name: Push summary-ingest image + if: startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' run: | - docker tag asap-sketch-ingest:local ghcr.io/projectasap/asap-sketch-ingest:${{ github.ref_name }} - docker tag asap-sketch-ingest:local ghcr.io/projectasap/asap-sketch-ingest:latest - docker push ghcr.io/projectasap/asap-sketch-ingest:${{ github.ref_name }} - docker push ghcr.io/projectasap/asap-sketch-ingest:latest + docker tag asap-summary-ingest:local ghcr.io/projectasap/asap-summary-ingest:${{ steps.tag.outputs.value }} + docker tag asap-summary-ingest:local ghcr.io/projectasap/asap-summary-ingest:latest + docker push ghcr.io/projectasap/asap-summary-ingest:${{ steps.tag.outputs.value }} + docker push ghcr.io/projectasap/asap-summary-ingest:latest # --- Prometheus Client (Python, depends on base) --- - name: Build prometheus-client image @@ -93,22 +122,35 @@ jobs: asap-tools/queriers/prometheus-client - name: Push prometheus-client image - if: startsWith(github.ref, 'refs/tags/') + if: startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' run: | - docker tag asap-prometheus-client:local ghcr.io/projectasap/asap-prometheus-client:${{ github.ref_name }} + docker tag asap-prometheus-client:local ghcr.io/projectasap/asap-prometheus-client:${{ steps.tag.outputs.value }} docker tag asap-prometheus-client:local ghcr.io/projectasap/asap-prometheus-client:latest - docker push ghcr.io/projectasap/asap-prometheus-client:${{ github.ref_name }} + docker push ghcr.io/projectasap/asap-prometheus-client:${{ steps.tag.outputs.value }} docker push ghcr.io/projectasap/asap-prometheus-client:latest + # --- Fake Exporter (Rust) --- + - name: Build and push fake-exporter + uses: docker/build-push-action@v6 + with: + context: asap-tools/data-sources/prometheus-exporters/fake_exporter/fake_exporter_rust/fake_exporter + file: asap-tools/data-sources/prometheus-exporters/fake_exporter/fake_exporter_rust/fake_exporter/Dockerfile + push: ${{ startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' }} + tags: | + ghcr.io/projectasap/asap-fake-exporter:${{ steps.tag.outputs.value }} + ghcr.io/projectasap/asap-fake-exporter:latest + cache-from: type=registry,ref=ghcr.io/projectasap/asap-fake-exporter:buildcache + cache-to: type=registry,ref=ghcr.io/projectasap/asap-fake-exporter:buildcache,mode=max + # --- Query Engine (Rust, slow — uses GHCR layer cache) --- - name: Build and push query-engine uses: docker/build-push-action@v6 with: context: . file: asap-query-engine/Dockerfile - push: ${{ startsWith(github.ref, 'refs/tags/') }} + push: ${{ startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' }} tags: | - ghcr.io/projectasap/asap-query-engine:${{ startsWith(github.ref, 'refs/tags/') && github.ref_name || 'pr-test' }} + ghcr.io/projectasap/asap-query-engine:${{ steps.tag.outputs.value }} ghcr.io/projectasap/asap-query-engine:latest cache-from: type=registry,ref=ghcr.io/projectasap/asap-query-engine:buildcache cache-to: type=registry,ref=ghcr.io/projectasap/asap-query-engine:buildcache,mode=max diff --git a/asap-quickstart/docker-compose.yml b/asap-quickstart/docker-compose.yml index 4d0dcba..5e32f48 100644 --- a/asap-quickstart/docker-compose.yml +++ b/asap-quickstart/docker-compose.yml @@ -170,7 +170,7 @@ services: ############################################################################# asap-planner: - image: ghcr.io/projectasap/asap-controller:v0.1.0 + image: ghcr.io/projectasap/asap-planner-rs:v0.1.0 container_name: asap-planner hostname: asap-planner networks: @@ -188,7 +188,7 @@ services: restart: "no" asap-sketch-ingest: - image: ghcr.io/projectasap/asap-arroyosketch:v0.1.0 + image: ghcr.io/projectasap/asap-summary-ingest:v0.1.0 container_name: asap-sketch-ingest hostname: asap-sketch-ingest networks: @@ -221,7 +221,7 @@ services: ############################################################################# queryengine: - image: ghcr.io/projectasap/asap-queryengine:v0.1.0 + image: ghcr.io/projectasap/asap-query-engine:v0.1.0 container_name: asap-queryengine hostname: queryengine networks: From 636f01a97a6853ea6e254f19ca328bf286f238d7 Mon Sep 17 00:00:00 2001 From: Milind Srivastava Date: Thu, 19 Mar 2026 17:34:35 -0400 Subject: [PATCH 2/3] Fixed CI --- .github/workflows/docker.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index c4ff3d9..7b4d3f8 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -48,8 +48,10 @@ jobs: run: | if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then echo "value=${{ inputs.image-tag }}" >> $GITHUB_OUTPUT - else + elif [ "${{ github.event_name }}" = "push" ]; then echo "value=${{ github.ref_name }}" >> $GITHUB_OUTPUT + else + echo "value=pr-test" >> $GITHUB_OUTPUT fi # --- Base image (Python, fast) --- From 3d676c66757e62238eb8e6ab60b4e83b7dbd3e38 Mon Sep 17 00:00:00 2001 From: Milind Srivastava Date: Thu, 19 Mar 2026 17:42:17 -0400 Subject: [PATCH 3/3] fixed CI --- .github/workflows/docker.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 7b4d3f8..9b52c11 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -97,7 +97,7 @@ jobs: ghcr.io/projectasap/asap-planner-rs:${{ steps.tag.outputs.value }} ghcr.io/projectasap/asap-planner-rs:latest cache-from: type=registry,ref=ghcr.io/projectasap/asap-planner-rs:buildcache - cache-to: type=registry,ref=ghcr.io/projectasap/asap-planner-rs:buildcache,mode=max + cache-to: ${{ (startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch') && 'type=registry,ref=ghcr.io/projectasap/asap-planner-rs:buildcache,mode=max' || '' }} # --- Summary Ingest (Python, depends on base) --- @@ -143,7 +143,7 @@ jobs: ghcr.io/projectasap/asap-fake-exporter:${{ steps.tag.outputs.value }} ghcr.io/projectasap/asap-fake-exporter:latest cache-from: type=registry,ref=ghcr.io/projectasap/asap-fake-exporter:buildcache - cache-to: type=registry,ref=ghcr.io/projectasap/asap-fake-exporter:buildcache,mode=max + cache-to: ${{ (startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch') && 'type=registry,ref=ghcr.io/projectasap/asap-fake-exporter:buildcache,mode=max' || '' }} # --- Query Engine (Rust, slow — uses GHCR layer cache) --- - name: Build and push query-engine @@ -156,4 +156,4 @@ jobs: ghcr.io/projectasap/asap-query-engine:${{ steps.tag.outputs.value }} ghcr.io/projectasap/asap-query-engine:latest cache-from: type=registry,ref=ghcr.io/projectasap/asap-query-engine:buildcache - cache-to: type=registry,ref=ghcr.io/projectasap/asap-query-engine:buildcache,mode=max + cache-to: ${{ (startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch') && 'type=registry,ref=ghcr.io/projectasap/asap-query-engine:buildcache,mode=max' || '' }}