88 branches : [main]
99 paths :
1010 - ' asap-common/installation/**'
11- - ' asap-planner/**'
12- - ' asap-sketch -ingest/**'
11+ - ' asap-planner-rs /**'
12+ - ' asap-summary -ingest/**'
1313 - ' asap-query-engine/**'
1414 - ' asap-tools/queriers/prometheus-client/**'
15+ - ' asap-tools/data-sources/prometheus-exporters/fake_exporter/fake_exporter_rust/**'
1516 - ' .github/workflows/docker.yml'
1617 workflow_dispatch :
18+ inputs :
19+ image-tag :
20+ description : ' Tag to use for pushed images (e.g. v0.1.0, dev)'
21+ required : true
22+ default : ' dev'
1723
1824permissions :
1925 packages : write
3642 username : ${{ github.repository_owner }}
3743 password : ${{ secrets.GITHUB_TOKEN }}
3844
45+ - name : Resolve image tag
46+ id : tag
47+ run : |
48+ if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
49+ echo "value=${{ inputs.image-tag }}" >> $GITHUB_OUTPUT
50+ elif [ "${{ github.event_name }}" = "push" ]; then
51+ echo "value=${{ github.ref_name }}" >> $GITHUB_OUTPUT
52+ else
53+ echo "value=pr-test" >> $GITHUB_OUTPUT
54+ fi
55+
3956 # --- Base image (Python, fast) ---
4057 - name : Build base image
4158 run : |
@@ -45,44 +62,42 @@ jobs:
4562 asap-common
4663
4764 - name : Push base image
48- if : startsWith(github.ref, 'refs/tags/')
65+ if : startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch'
4966 run : |
50- docker tag sketchdb-base:latest ghcr.io/projectasap/asap-base:${{ github.ref_name }}
67+ docker tag sketchdb-base:latest ghcr.io/projectasap/asap-base:${{ steps.tag.outputs.value }}
5168 docker tag sketchdb-base:latest ghcr.io/projectasap/asap-base:latest
52- docker push ghcr.io/projectasap/asap-base:${{ github.ref_name }}
69+ docker push ghcr.io/projectasap/asap-base:${{ steps.tag.outputs.value }}
5370 docker push ghcr.io/projectasap/asap-base:latest
5471
55- # --- Planner (Python, depends on base) ---
56- - name : Build planner image
57- run : |
58- docker build \
59- -t asap-planner:local \
60- -f asap-planner/Dockerfile \
61- asap-planner
72+ # --- Planner RS (Rust) ---
73+ - name : Build and push planner-rs
74+ uses : docker/build-push-action@v6
75+ with :
76+ context : .
77+ file : asap-planner-rs/Dockerfile
78+ push : ${{ startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' }}
79+ tags : |
80+ ghcr.io/projectasap/asap-planner-rs:${{ steps.tag.outputs.value }}
81+ ghcr.io/projectasap/asap-planner-rs:latest
82+ cache-from : type=registry,ref=ghcr.io/projectasap/asap-planner-rs:buildcache
83+ cache-to : ${{ (startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch') && 'type=registry,ref=ghcr.io/projectasap/asap-planner-rs:buildcache,mode=max' || '' }}
6284
63- - name : Push planner image
64- if : startsWith(github.ref, 'refs/tags/')
65- run : |
66- docker tag asap-planner:local ghcr.io/projectasap/asap-planner:${{ github.ref_name }}
67- docker tag asap-planner:local ghcr.io/projectasap/asap-planner:latest
68- docker push ghcr.io/projectasap/asap-planner:${{ github.ref_name }}
69- docker push ghcr.io/projectasap/asap-planner:latest
7085
71- # --- Sketch Ingest (Python, depends on base) ---
72- - name : Build sketch -ingest image
86+ # --- Summary Ingest (Python, depends on base) ---
87+ - name : Build summary -ingest image
7388 run : |
7489 docker build \
75- -t asap-sketch -ingest:local \
76- -f asap-sketch -ingest/Dockerfile \
77- asap-sketch -ingest
90+ -t asap-summary -ingest:local \
91+ -f asap-summary -ingest/Dockerfile \
92+ asap-summary -ingest
7893
79- - name : Push sketch -ingest image
80- if : startsWith(github.ref, 'refs/tags/')
94+ - name : Push summary -ingest image
95+ if : startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch'
8196 run : |
82- docker tag asap-sketch -ingest:local ghcr.io/projectasap/asap-sketch -ingest:${{ github.ref_name }}
83- docker tag asap-sketch -ingest:local ghcr.io/projectasap/asap-sketch -ingest:latest
84- docker push ghcr.io/projectasap/asap-sketch -ingest:${{ github.ref_name }}
85- docker push ghcr.io/projectasap/asap-sketch -ingest:latest
97+ docker tag asap-summary -ingest:local ghcr.io/projectasap/asap-summary -ingest:${{ steps.tag.outputs.value }}
98+ docker tag asap-summary -ingest:local ghcr.io/projectasap/asap-summary -ingest:latest
99+ docker push ghcr.io/projectasap/asap-summary -ingest:${{ steps.tag.outputs.value }}
100+ docker push ghcr.io/projectasap/asap-summary -ingest:latest
86101
87102 # --- Prometheus Client (Python, depends on base) ---
88103 - name : Build prometheus-client image
@@ -93,22 +108,35 @@ jobs:
93108 asap-tools/queriers/prometheus-client
94109
95110 - name : Push prometheus-client image
96- if : startsWith(github.ref, 'refs/tags/')
111+ if : startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch'
97112 run : |
98- docker tag asap-prometheus-client:local ghcr.io/projectasap/asap-prometheus-client:${{ github.ref_name }}
113+ docker tag asap-prometheus-client:local ghcr.io/projectasap/asap-prometheus-client:${{ steps.tag.outputs.value }}
99114 docker tag asap-prometheus-client:local ghcr.io/projectasap/asap-prometheus-client:latest
100- docker push ghcr.io/projectasap/asap-prometheus-client:${{ github.ref_name }}
115+ docker push ghcr.io/projectasap/asap-prometheus-client:${{ steps.tag.outputs.value }}
101116 docker push ghcr.io/projectasap/asap-prometheus-client:latest
102117
118+ # --- Fake Exporter (Rust) ---
119+ - name : Build and push fake-exporter
120+ uses : docker/build-push-action@v6
121+ with :
122+ context : asap-tools/data-sources/prometheus-exporters/fake_exporter/fake_exporter_rust/fake_exporter
123+ file : asap-tools/data-sources/prometheus-exporters/fake_exporter/fake_exporter_rust/fake_exporter/Dockerfile
124+ push : ${{ startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' }}
125+ tags : |
126+ ghcr.io/projectasap/asap-fake-exporter:${{ steps.tag.outputs.value }}
127+ ghcr.io/projectasap/asap-fake-exporter:latest
128+ cache-from : type=registry,ref=ghcr.io/projectasap/asap-fake-exporter:buildcache
129+ cache-to : ${{ (startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch') && 'type=registry,ref=ghcr.io/projectasap/asap-fake-exporter:buildcache,mode=max' || '' }}
130+
103131 # --- Query Engine (Rust, slow — uses GHCR layer cache) ---
104132 - name : Build and push query-engine
105133 uses : docker/build-push-action@v6
106134 with :
107135 context : .
108136 file : asap-query-engine/Dockerfile
109- push : ${{ startsWith(github.ref, 'refs/tags/') }}
137+ push : ${{ startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' }}
110138 tags : |
111- ghcr.io/projectasap/asap-query-engine:${{ startsWith(github.ref, 'refs/tags/') && github.ref_name || 'pr-test' }}
139+ ghcr.io/projectasap/asap-query-engine:${{ steps.tag.outputs.value }}
112140 ghcr.io/projectasap/asap-query-engine:latest
113141 cache-from : type=registry,ref=ghcr.io/projectasap/asap-query-engine:buildcache
114- cache-to : type=registry,ref=ghcr.io/projectasap/asap-query-engine:buildcache,mode=max
142+ cache-to : ${{ (startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch') && ' type=registry,ref=ghcr.io/projectasap/asap-query-engine:buildcache,mode=max' || '' }}
0 commit comments