From a42dc2184c34fbf3f52c369896585bf2389ee675 Mon Sep 17 00:00:00 2001 From: Ben Hardill Date: Tue, 10 Feb 2026 11:57:01 +0000 Subject: [PATCH 1/4] Add action to poke flows.nodered.org partof https://github.com/FlowFuse/CloudProject/issues/1095 --- actions/update-nr-flows/action.yml | 42 ++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 actions/update-nr-flows/action.yml diff --git a/actions/update-nr-flows/action.yml b/actions/update-nr-flows/action.yml new file mode 100644 index 0000000..88b3f43 --- /dev/null +++ b/actions/update-nr-flows/action.yml @@ -0,0 +1,42 @@ +name: "Update Node-RED Catalogue" +description: "Triggers update to latest published version" + +inputs: + package: + description: 'name of package to update' + required: true + version: + description: 'latest version of package' + required: true + +runs: + using: composite + steps: + - name: Update flows.nodered.org + shell: bash + run: | + URL=https://flows.nodered.org + COUNT=1 + until [ $COUNT -gt 5 ]; do + sleep 10 + LATEST=`npm info "${{ inputs.package }}" --json version | sed -e 's/"//g'` + echo "current version $LATEST" + if [[ "${{ inputs.version }}" == "$LATEST" ]] + then + break + fi + ((COUNT++)) + done + + if [ $COUNT -gt 5 ] + then + echo "timed out after 50 seconds" + exit 1 + fi + + echo "new version available, triggering flows.nodered.org" + + TOKEN=`curl "$URL/node/${{ inputs.package }}" -c cookies.txt | awk '/input name="_csrf/ {print $4 }' | awk -F'"' '{print $2; exit}'` + curl -b cookies.txt -c cookies.txt -H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" "$URL/add/node" --data-urlencode "_csrf=$TOKEN" --data-urlencode "module=${{ inputs.package }}" + + From cfe71f8363bc795556568ee7350a148b049456c9 Mon Sep 17 00:00:00 2001 From: PPawlowski Date: Tue, 10 Feb 2026 14:01:24 +0100 Subject: [PATCH 2/4] Add `--fail` flag to curl to fail on http error --- actions/update-nr-flows/action.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/actions/update-nr-flows/action.yml b/actions/update-nr-flows/action.yml index 88b3f43..f87c8a0 100644 --- a/actions/update-nr-flows/action.yml +++ b/actions/update-nr-flows/action.yml @@ -36,7 +36,7 @@ runs: echo "new version available, triggering flows.nodered.org" - TOKEN=`curl "$URL/node/${{ inputs.package }}" -c cookies.txt | awk '/input name="_csrf/ {print $4 }' | awk -F'"' '{print $2; exit}'` - curl -b cookies.txt -c cookies.txt -H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" "$URL/add/node" --data-urlencode "_csrf=$TOKEN" --data-urlencode "module=${{ inputs.package }}" + TOKEN=`curl "$URL/node/${{ inputs.package }}" --fail -c cookies.txt | awk '/input name="_csrf/ {print $4 }' | awk -F'"' '{print $2; exit}'` + curl -b cookies.txt -c cookies.txt --fail -H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" "$URL/add/node" --data-urlencode "_csrf=$TOKEN" --data-urlencode "module=${{ inputs.package }}" From 3b2123ff7247c8fa0679d9c60dace4630dcd0856 Mon Sep 17 00:00:00 2001 From: PPawlowski Date: Tue, 10 Feb 2026 14:01:59 +0100 Subject: [PATCH 3/4] Remove file with cookies --- actions/update-nr-flows/action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/actions/update-nr-flows/action.yml b/actions/update-nr-flows/action.yml index f87c8a0..1bb9452 100644 --- a/actions/update-nr-flows/action.yml +++ b/actions/update-nr-flows/action.yml @@ -38,5 +38,5 @@ runs: TOKEN=`curl "$URL/node/${{ inputs.package }}" --fail -c cookies.txt | awk '/input name="_csrf/ {print $4 }' | awk -F'"' '{print $2; exit}'` curl -b cookies.txt -c cookies.txt --fail -H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" "$URL/add/node" --data-urlencode "_csrf=$TOKEN" --data-urlencode "module=${{ inputs.package }}" - + rm -f cookies.txt From 37bdc2dfce42503ca69ebc0e8cdb2518c52e0cd7 Mon Sep 17 00:00:00 2001 From: PPawlowski Date: Tue, 10 Feb 2026 14:03:19 +0100 Subject: [PATCH 4/4] Fix indentation --- actions/update-nr-flows/action.yml | 46 +++++++++++++++--------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/actions/update-nr-flows/action.yml b/actions/update-nr-flows/action.yml index 1bb9452..770b391 100644 --- a/actions/update-nr-flows/action.yml +++ b/actions/update-nr-flows/action.yml @@ -12,31 +12,31 @@ inputs: runs: using: composite steps: - - name: Update flows.nodered.org - shell: bash - run: | - URL=https://flows.nodered.org - COUNT=1 - until [ $COUNT -gt 5 ]; do - sleep 10 - LATEST=`npm info "${{ inputs.package }}" --json version | sed -e 's/"//g'` - echo "current version $LATEST" - if [[ "${{ inputs.version }}" == "$LATEST" ]] + - name: Update flows.nodered.org + shell: bash + run: | + URL=https://flows.nodered.org + COUNT=1 + until [ $COUNT -gt 5 ]; do + sleep 10 + LATEST=`npm info "${{ inputs.package }}" --json version | sed -e 's/"//g'` + echo "current version $LATEST" + if [[ "${{ inputs.version }}" == "$LATEST" ]] + then + break + fi + ((COUNT++)) + done + + if [ $COUNT -gt 5 ] then - break + echo "timed out after 50 seconds" + exit 1 fi - ((COUNT++)) - done - - if [ $COUNT -gt 5 ] - then - echo "timed out after 50 seconds" - exit 1 - fi - echo "new version available, triggering flows.nodered.org" + echo "new version available, triggering flows.nodered.org" - TOKEN=`curl "$URL/node/${{ inputs.package }}" --fail -c cookies.txt | awk '/input name="_csrf/ {print $4 }' | awk -F'"' '{print $2; exit}'` - curl -b cookies.txt -c cookies.txt --fail -H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" "$URL/add/node" --data-urlencode "_csrf=$TOKEN" --data-urlencode "module=${{ inputs.package }}" - rm -f cookies.txt + TOKEN=`curl "$URL/node/${{ inputs.package }}" --fail -c cookies.txt | awk '/input name="_csrf/ {print $4 }' | awk -F'"' '{print $2; exit}'` + curl -b cookies.txt -c cookies.txt --fail -H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" "$URL/add/node" --data-urlencode "_csrf=$TOKEN" --data-urlencode "module=${{ inputs.package }}" + rm -f cookies.txt