44 workflow_call :
55 inputs :
66 component :
7- description : " Component to build (gateway, supervisor)"
7+ description : " Component to build (gateway, supervisor, cli )"
88 required : true
99 type : string
1010 timeout-minutes :
7171 binary_name : ${{ steps.resolve.outputs.binary_name }}
7272 artifact_prefix : ${{ steps.resolve.outputs.artifact_prefix }}
7373 image_tag_base : ${{ steps.resolve.outputs.image_tag_base }}
74+ features : ${{ steps.resolve.outputs.features }}
75+ has_image : ${{ steps.resolve.outputs.has_image }}
7476 steps :
7577 - name : Resolve component and platform matrix
7678 id : resolve
@@ -82,10 +84,20 @@ jobs:
8284 gateway)
8385 binary_component=gateway
8486 binary_name=openshell-gateway
87+ features="openshell-core/dev-settings"
88+ has_image=true
8589 ;;
8690 supervisor)
8791 binary_component=sandbox
8892 binary_name=openshell-sandbox
93+ features="openshell-core/dev-settings"
94+ has_image=true
95+ ;;
96+ cli)
97+ binary_component=cli
98+ binary_name=openshell
99+ features="bundled-z3"
100+ has_image=false
89101 ;;
90102 *)
91103 echo "unsupported component: $component" >&2
@@ -144,6 +156,8 @@ jobs:
144156 echo "binary_name=$binary_name"
145157 echo "artifact_prefix=rust-binary-${component}-${binary_component}"
146158 echo "image_tag_base=$image_tag_base"
159+ echo "features=$features"
160+ echo "has_image=$has_image"
147161 } >> "$GITHUB_OUTPUT"
148162
149163 rust-binary :
@@ -162,13 +176,14 @@ jobs:
162176 cargo-version : ${{ inputs['cargo-version'] }}
163177 image-tag : ${{ needs.resolve.outputs.image_tag_base }}
164178 checkout-ref : ${{ inputs['checkout-ref'] }}
165- features : openshell-core/dev-settings
179+ features : ${{ needs.resolve.outputs.features }}
166180 artifact-name : ${{ needs.resolve.outputs.artifact_prefix }}-linux-${{ matrix.arch }}
167181 secrets : inherit
168182
169183 build :
170184 name : Build ${{ inputs.component }} (${{ matrix.arch }})
171185 needs : [resolve, rust-binary]
186+ if : needs.resolve.outputs.has_image == 'true'
172187 runs-on : ${{ matrix.runner }}
173188 timeout-minutes : ${{ inputs['timeout-minutes'] }}
174189 strategy :
@@ -262,7 +277,7 @@ jobs:
262277 merge :
263278 name : Merge ${{ inputs.component }} manifest
264279 needs : [resolve, build]
265- if : ${{ inputs.push && inputs['publish-manifest'] }}
280+ if : ${{ inputs.push && inputs['publish-manifest'] && needs.resolve.outputs.has_image == 'true' }}
266281 runs-on : linux-amd64-cpu8
267282 timeout-minutes : 10
268283 container :
0 commit comments