This is an automated email from the ASF dual-hosted git repository.

harishgokul01 pushed a commit to branch development
in repository https://gitbox.apache.org/repos/asf/incubator-resilientdb.git


The following commit(s) were added to refs/heads/development by this push:
     new ed8c4157 fixed JSON parsing in workflow
ed8c4157 is described below

commit ed8c4157262cfd5b11952cf346d753fddc187f0d
Author: harish876 <[email protected]>
AuthorDate: Tue Jan 20 00:54:17 2026 +0000

    fixed JSON parsing in workflow
---
 .github/workflows/deploy-ecosystem.yml | 64 ++++++++++++++++++++++------------
 1 file changed, 41 insertions(+), 23 deletions(-)

diff --git a/.github/workflows/deploy-ecosystem.yml 
b/.github/workflows/deploy-ecosystem.yml
index 350256cc..110fba23 100644
--- a/.github/workflows/deploy-ecosystem.yml
+++ b/.github/workflows/deploy-ecosystem.yml
@@ -43,6 +43,8 @@ jobs:
   determine-projects:
     name: Determine Projects to Deploy
     runs-on: ubuntu-latest
+    container:
+      image: node:20-bookworm-slim
     outputs:
       projects: ${{ steps.filter.outputs.projects }}
       projects_json: ${{ steps.filter.outputs.projects_json }}
@@ -66,35 +68,51 @@ jobs:
         id: filter
         shell: bash
         run: |
-          # Read config JSON
-          CONFIG_JSON="${{ steps.config.outputs.config_json }}"
+          # Use Node.js to parse JSON (already available in container)
+          node << 'EOF'
+          const fs = require('fs');
+          const configJson = `${{ steps.config.outputs.config_json }}`;
+          const config = JSON.parse(configJson);
           
-          # Manual trigger: deploy specific project or all
-          if [ "${{ github.event_name }}" == "workflow_dispatch" ]; then
-            if [ -n "${{ inputs.project_name }}" ]; then
-              # Find specific project using jq
-              PROJECT=$(echo "$CONFIG_JSON" | jq -r --arg name "${{ 
inputs.project_name }}" '.projects[] | select(.name == $name)')
-              if [ -n "$PROJECT" ] && [ "$PROJECT" != "null" ]; then
-                echo "projects_json=[$PROJECT]" >> "$GITHUB_OUTPUT"
-                echo "projects=[\"${{ inputs.project_name }}\"]" >> 
"$GITHUB_OUTPUT"
-                exit 0
-              fi
-            fi
-            if [ "${{ inputs.force_deploy_all }}" == "true" ]; then
-              echo "projects_json=$(echo "$CONFIG_JSON" | jq -c '.projects')" 
>> "$GITHUB_OUTPUT"
-              echo "projects=$(echo "$CONFIG_JSON" | jq -c 
'[.projects[].name]')" >> "$GITHUB_OUTPUT"
-              exit 0
-            fi
-          fi
+          const eventName = '${{ github.event_name }}';
+          const projectName = '${{ inputs.project_name }}';
+          const forceDeployAll = '${{ inputs.force_deploy_all }}' === 'true';
+          
+          let projectsToDeploy = [];
+          
+          // Manual trigger: deploy specific project or all
+          if (eventName === 'workflow_dispatch') {
+            if (projectName) {
+              const project = config.projects.find(p => p.name === 
projectName);
+              if (project) {
+                projectsToDeploy = [project];
+              } else {
+                projectsToDeploy = config.projects;
+              }
+            } else if (forceDeployAll) {
+              projectsToDeploy = config.projects;
+            } else {
+              projectsToDeploy = config.projects;
+            }
+          } else {
+            // For push events, deploy all projects
+            projectsToDeploy = config.projects;
+          }
+          
+          // Output results
+          const outputFile = process.env.GITHUB_OUTPUT;
+          const projectsJson = JSON.stringify(projectsToDeploy);
+          const projectsNames = JSON.stringify(projectsToDeploy.map(p => 
p.name));
           
-          # For push events or default, deploy all projects
-          echo "projects_json=$(echo "$CONFIG_JSON" | jq -c '.projects')" >> 
"$GITHUB_OUTPUT"
-          echo "projects=$(echo "$CONFIG_JSON" | jq -c '[.projects[].name]')" 
>> "$GITHUB_OUTPUT"
+          fs.appendFileSync(outputFile, 
`projects_json<<EOF\n${projectsJson}\nEOF\n`);
+          fs.appendFileSync(outputFile, `projects=${projectsNames}\n`);
+          EOF
 
       - name: Show projects to deploy
         run: |
           echo "Projects to deploy: ${{ steps.filter.outputs.projects }}"
-          if [ "${{ steps.filter.outputs.projects }}" == "[]" ]; then
+          PROJECTS="${{ steps.filter.outputs.projects }}"
+          if [ "$PROJECTS" = "[]" ]; then
             echo "No projects to deploy"
           fi
 

Reply via email to