@@ -2,21 +2,23 @@ name: Docker Builds
22
33on :
44 push :
5- branches : [ main ]
6- paths :
7- - ' asap-common/installation/**'
8- - ' asap-planner/**'
9- - ' asap-tools/prometheus-client/**'
10- - ' .github/workflows/docker.yml'
5+ tags :
6+ - ' v[0-9]+.[0-9]+.[0-9]+*'
117 pull_request :
12- branches : [ main ]
8+ branches : [main]
139 paths :
1410 - ' asap-common/installation/**'
1511 - ' asap-planner/**'
16- - ' asap-tools/prometheus-client/**'
12+ - ' asap-sketch-ingest/**'
13+ - ' asap-query-engine/**'
14+ - ' asap-tools/queriers/prometheus-client/**'
1715 - ' .github/workflows/docker.yml'
1816 workflow_dispatch :
1917
18+ permissions :
19+ packages : write
20+ contents : read
21+
2022jobs :
2123 build-images :
2224 runs-on : ubuntu-latest
@@ -27,31 +29,86 @@ jobs:
2729 - name : Set up Docker Buildx
2830 uses : docker/setup-buildx-action@v3
2931
32+ - name : Login to GHCR
33+ uses : docker/login-action@v3
34+ with :
35+ registry : ghcr.io
36+ username : ${{ github.repository_owner }}
37+ password : ${{ secrets.GITHUB_TOKEN }}
38+
39+ # --- Base image (Python, fast) ---
3040 - name : Build base image
31- working-directory : asap-common/installation
3241 run : |
3342 docker build \
3443 -t sketchdb-base:latest \
35- -f Dockerfile \
36- ..
44+ -f asap-common/installation/Dockerfile \
45+ asap-common
46+
47+ - name : Push base image
48+ if : startsWith(github.ref, 'refs/tags/')
49+ run : |
50+ docker tag sketchdb-base:latest ghcr.io/projectasap/asap-base:${{ github.ref_name }}
51+ docker tag sketchdb-base:latest ghcr.io/projectasap/asap-base:latest
52+ docker push ghcr.io/projectasap/asap-base:${{ github.ref_name }}
53+ docker push ghcr.io/projectasap/asap-base:latest
3754
38- - name : Test base image
55+ # --- Planner (Python, depends on base) ---
56+ - name : Build planner image
3957 run : |
40- docker run --rm sketchdb-base:latest python --version
41- docker run --rm sketchdb-base:latest pip list
58+ docker build \
59+ -t asap-planner:local \
60+ -f asap-planner/Dockerfile \
61+ asap-planner
62+
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
4270
43- - name : Build Controller Docker image
44- working-directory : asap-planner
71+ # --- Sketch Ingest (Python, depends on base) ---
72+ - name : Build sketch-ingest image
4573 run : |
4674 docker build \
47- -t sketchdb-controller:latest \
48- -f Dockerfile \
49- .
75+ -t asap-sketch-ingest:local \
76+ -f asap-sketch-ingest/Dockerfile \
77+ asap-sketch-ingest
78+
79+ - name : Push sketch-ingest image
80+ if : startsWith(github.ref, 'refs/tags/')
81+ 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
5086
51- - name : Build PrometheusClient Docker image
52- working-directory : asap-tools/ prometheus-client
87+ # --- Prometheus Client (Python, depends on base) ---
88+ - name : Build prometheus-client image
5389 run : |
5490 docker build \
55- -t sketchdb-prometheus-client:latest \
56- -f Dockerfile \
57- .
91+ -t asap-prometheus-client:local \
92+ -f asap-tools/queriers/prometheus-client/Dockerfile \
93+ asap-tools/queriers/prometheus-client
94+
95+ - name : Push prometheus-client image
96+ if : startsWith(github.ref, 'refs/tags/')
97+ run : |
98+ docker tag asap-prometheus-client:local ghcr.io/projectasap/asap-prometheus-client:${{ github.ref_name }}
99+ 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 }}
101+ docker push ghcr.io/projectasap/asap-prometheus-client:latest
102+
103+ # --- Query Engine (Rust, slow — uses GHCR layer cache) ---
104+ - name : Build and push query-engine
105+ uses : docker/build-push-action@v6
106+ with :
107+ context : .
108+ file : asap-query-engine/Dockerfile
109+ push : ${{ startsWith(github.ref, 'refs/tags/') }}
110+ tags : |
111+ ghcr.io/projectasap/asap-query-engine:${{ startsWith(github.ref, 'refs/tags/') && github.ref_name || 'pr-test' }}
112+ ghcr.io/projectasap/asap-query-engine:latest
113+ 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
0 commit comments