Tengo un flujo de trabajo de github en el que quiero filtrar los cambios de destrucción de terraformación del archivo del plan de terraformación y publicarlo como comentario en el PR.
- name: Terraform Plan id: plan_json run: | terraform plan -out planfile 2>error.log terraform show -json planfile > plan.json continue-on-error: true - uses: actions/github-script@v5 id: message if: ${{ always() }} with: result-encoding: string script: | const fs = require('fs'); const report = JSON.parse(fs.readFileSync('./plan.json')); var message = ''; for (const changes in report.resource_changes) { message += `${changes.change.actions[0]} ${changes.name} (${changes.type})\n` }; console.log('Message: ', message); return message;Cuando ejecuto el flujo de trabajo da este error:
SyntaxError: Unexpected token c in JSON at position 1 at JSON.parse (<anonymous>) at eval (eval at callAsyncFunction (/home/runner/work/_actions/actions/github-script/v5/dist/index.js:4942:56), <anonymous>:4:21) at callAsyncFunction (/home/runner/work/_actions/actions/github-script/v5/dist/index.js:4943:12) Error: Unhandled error: SyntaxError: Unexpected token c in JSON at position 1 at main (/home/runner/work/_actions/actions/github-script/v5/dist/index.js:4997:26) at Module.272 (/home/runner/work/_actions/actions/github-script/v5/dist/index.js:4981:1) at __webpack_require__ (/home/runner/work/_actions/actions/github-script/v5/dist/index.js:24:31) at startup (/home/runner/work/_actions/actions/github-script/v5/dist/index.js:43:19) at /home/runner/work/_actions/actions/github-script/v5/dist/index.js:49:18 at Object.<anonymous> (/home/runner/work/_actions/actions/github-script/v5/dist/index.js:52:10) at Module._compile (internal/modules/cjs/loader.js:959:30)No tengo experiencia con nodejs/javascript, así que no tengo ni idea de lo que estoy haciendo mal aquí.
El archivo del plan real se puede encontrar aquí .
Cuando ejecuto el script nodejs localmente, funciona.
❯ node tfplan.js Message: create, rg (azurerm_resource_group) create, rg-name (random_pet)