9191 required : true
9292 DOCKERHUB_TOKEN :
9393 required : true
94+ workflow_dispatch :
95+ inputs :
96+ service_name :
97+ description : " Name of the service"
98+ required : true
99+ type : string
100+ docker_image_name :
101+ description : " Docker image name from setup outputs"
102+ required : true
103+ type : string
104+ build_context :
105+ description : " Build context path"
106+ required : true
107+ type : string
108+ dockerfile_path :
109+ description : " Path to Dockerfile"
110+ required : true
111+ type : string
112+ build_release :
113+ description : " Build release flag"
114+ required : true
115+ type : string
116+ build_prerelease :
117+ description : " Build prerelease flag"
118+ required : true
119+ type : string
120+ release_version :
121+ description : " Release version"
122+ required : true
123+ type : string
124+ buildx_driver :
125+ description : " Buildx driver"
126+ required : true
127+ type : string
128+ buildx_version :
129+ description : " Buildx version"
130+ required : true
131+ type : string
132+ buildx_platforms :
133+ description : " Buildx platforms"
134+ required : true
135+ type : string
136+ buildx_endpoint :
137+ description : " Buildx endpoint"
138+ required : false
139+ type : string
140+ default : " "
141+ private_registry_push :
142+ description : " Push to private registry"
143+ required : false
144+ type : string
145+ default : " false"
146+ private_registry_username :
147+ description : " Private registry username"
148+ required : false
149+ type : string
150+ private_registry_token :
151+ description : " Private registry token"
152+ required : false
153+ type : string
154+ private_registry_addr :
155+ description : " Private registry address"
156+ required : false
157+ type : string
158+ private_registry_project :
159+ description : " Private registry project"
160+ required : false
161+ type : string
162+ build_args :
163+ description : " Additional build args (multiline)"
164+ required : false
165+ type : string
166+ generate_keypair :
167+ description : " Generate keypair for monitor service"
168+ required : false
169+ type : boolean
170+ default : false
171+ target_branch :
172+ description : " Target branch name"
173+ required : false
174+ type : string
175+ default_private_key :
176+ description : " Default private key for non-master branches"
177+ required : false
178+ type : string
179+ secrets :
180+ DOCKERHUB_USERNAME :
181+ required : true
182+ DOCKERHUB_TOKEN :
183+ required : true
184+ workflow_dispatch :
185+ inputs :
186+ service_name :
187+ description : " Name of the service"
188+ required : true
189+ type : choice
190+ options :
191+ - Admin
192+ - Web
193+ - Space
194+ - Live Collaboration
195+ - Silo
196+ - API Server
197+ - Proxy
198+ - Monitor
199+ - Email
200+ - Plane PI
201+ docker_image_name :
202+ description : " Docker image name (e.g., web-commercial)"
203+ required : true
204+ type : string
205+ build_context :
206+ description : " Build context path (e.g., . or ./apps/api)"
207+ required : true
208+ type : string
209+ dockerfile_path :
210+ description : " Path to Dockerfile (e.g., ./apps/web/Dockerfile.web)"
211+ required : true
212+ type : string
213+ build_release :
214+ description : " Build release flag"
215+ required : true
216+ type : boolean
217+ default : false
218+ build_prerelease :
219+ description : " Build prerelease flag"
220+ required : true
221+ type : boolean
222+ default : false
223+ release_version :
224+ description : " Release version (e.g., v1.0.0 or latest)"
225+ required : true
226+ type : string
227+ default : " latest"
228+ buildx_driver :
229+ description : " Buildx driver (docker-container or cloud)"
230+ required : true
231+ type : choice
232+ default : " docker-container"
233+ options :
234+ - docker-container
235+ - cloud
236+ buildx_version :
237+ description : " Buildx version"
238+ required : true
239+ type : string
240+ default : " latest"
241+ buildx_platforms :
242+ description : " Buildx platforms (e.g., linux/amd64 or linux/amd64,linux/arm64)"
243+ required : true
244+ type : string
245+ default : " linux/amd64"
246+ buildx_endpoint :
247+ description : " Buildx endpoint (leave empty for docker-container)"
248+ required : false
249+ type : string
250+ default : " "
251+ private_registry_push :
252+ description : " Push to private registry"
253+ required : false
254+ type : boolean
255+ default : false
256+ private_registry_username :
257+ description : " Private registry username"
258+ required : false
259+ type : string
260+ private_registry_token :
261+ description : " Private registry token"
262+ required : false
263+ type : string
264+ private_registry_addr :
265+ description : " Private registry address"
266+ required : false
267+ type : string
268+ private_registry_project :
269+ description : " Private registry project"
270+ required : false
271+ type : string
272+ build_args :
273+ description : " Additional build args (multiline, optional)"
274+ required : false
275+ type : string
276+ generate_keypair :
277+ description : " Generate keypair for monitor service"
278+ required : false
279+ type : boolean
280+ default : false
281+ target_branch :
282+ description : " Target branch name (for keypair generation)"
283+ required : false
284+ type : string
285+ default : " master"
286+ default_private_key :
287+ description : " Default private key for non-master branches"
288+ required : false
289+ type : string
94290
95291jobs :
96292 build_push_service :
@@ -101,13 +297,24 @@ jobs:
101297 uses : actions/checkout@v4
102298
103299 - name : Generate Keypair
104- if : inputs.generate_keypair == true
300+ if : inputs.service_name == 'Monitor' || inputs. generate_keypair == true || inputs.generate_keypair == 'true'
105301 id : generate_keypair
106302 run : |
107- if [ "${{ inputs.target_branch }}" == "master" ] || [ "${{ inputs.build_release }}" == "true" ]; then
303+ # Determine target branch - use input if provided, otherwise use GitHub ref
304+ TARGET_BRANCH="${{ inputs.target_branch }}"
305+ if [ -z "$TARGET_BRANCH" ]; then
306+ TARGET_BRANCH="${GITHUB_REF#refs/heads/}"
307+ fi
308+ BUILD_RELEASE="${{ inputs.build_release }}"
309+ if [ "$TARGET_BRANCH" == "master" ] || [ "$BUILD_RELEASE" == "true" ] || [ "$BUILD_RELEASE" == true ]; then
108310 openssl genrsa -out private_key.pem 2048
109311 else
110- echo "${{ inputs.default_private_key }}" > private_key.pem
312+ if [ -n "${{ inputs.default_private_key }}" ]; then
313+ echo "${{ inputs.default_private_key }}" > private_key.pem
314+ else
315+ echo "Warning: No default private key provided, generating new keypair"
316+ openssl genrsa -out private_key.pem 2048
317+ fi
111318 fi
112319 openssl rsa -in private_key.pem -pubout -out public_key.pem
113320 cat public_key.pem
@@ -124,7 +331,7 @@ jobs:
124331 if [ -n "${{ inputs.build_args }}" ]; then
125332 echo "${{ inputs.build_args }}" >> "$BUILD_ARGS_FILE"
126333 fi
127- if [ "${{ inputs.generate_keypair }}" == "true" ] && [ -n "${{ env.PRIVATE_KEY }}" ]; then
334+ if ( [ "${{ inputs.service_name }}" == "Monitor" ] || [ "${{ inputs. generate_keypair }}" == "true" ] || [ "${{ inputs.generate_keypair }}" == true ]) && [ -n "${{ env.PRIVATE_KEY }}" ]; then
128335 echo "PRIVATE_KEY=${{ env.PRIVATE_KEY }}" >> "$BUILD_ARGS_FILE"
129336 fi
130337 if [ -s "$BUILD_ARGS_FILE" ]; then
@@ -135,15 +342,35 @@ jobs:
135342 fi
136343 rm -f "$BUILD_ARGS_FILE"
137344
345+ - name : Prepare Build Flags
346+ id : prepare_flags
347+ run : |
348+ # Convert boolean/string to proper string format
349+ if [ "${{ inputs.build_release }}" == "true" ] || [ "${{ inputs.build_release }}" == true ]; then
350+ echo "build_release=true" >> $GITHUB_OUTPUT
351+ else
352+ echo "build_release=false" >> $GITHUB_OUTPUT
353+ fi
354+ if [ "${{ inputs.build_prerelease }}" == "true" ] || [ "${{ inputs.build_prerelease }}" == true ]; then
355+ echo "build_prerelease=true" >> $GITHUB_OUTPUT
356+ else
357+ echo "build_prerelease=false" >> $GITHUB_OUTPUT
358+ fi
359+ if [ "${{ inputs.private_registry_push }}" == "true" ] || [ "${{ inputs.private_registry_push }}" == true ]; then
360+ echo "private_registry_push=true" >> $GITHUB_OUTPUT
361+ else
362+ echo "private_registry_push=${{ inputs.private_registry_push }}" >> $GITHUB_OUTPUT
363+ fi
364+
138365 - name : ${{ inputs.service_name }} Build and Push
139366 uses : makeplane/actions/build-push@v1.1.0
140367 with :
141- build-release : ${{ inputs .build_release }}
142- build-prerelease : ${{ inputs .build_prerelease }}
368+ build-release : ${{ steps.prepare_flags.outputs .build_release }}
369+ build-prerelease : ${{ steps.prepare_flags.outputs .build_prerelease }}
143370 release-version : ${{ inputs.release_version }}
144371 dockerhub-username : ${{ secrets.DOCKERHUB_USERNAME }}
145372 dockerhub-token : ${{ secrets.DOCKERHUB_TOKEN }}
146- private-registry-push : ${{ inputs .private_registry_push }}
373+ private-registry-push : ${{ steps.prepare_flags.outputs .private_registry_push }}
147374 private-registry-username : ${{ inputs.private_registry_username }}
148375 private-registry-token : ${{ inputs.private_registry_token }}
149376 private-registry-addr : ${{ inputs.private_registry_addr }}
0 commit comments