miki3421 opened a new issue, #214:
URL: https://github.com/apache/openserverless/issues/214

   - [x] I have searched the 
[issues](https://github.com/apache/openserverless/issues) and believe this is 
not a duplicate.
   
   ### Issue description
   
   \`ops ide deploy\` has two related problems in the IDE deploy workflow:
   
   1. The post-deploy \`setup\` hook always runs \`ops action list setup\`, 
even when the project has no \`setup\` package. The positional argument is not 
interpreted as “list actions in the current namespace's setup package”, and the 
command reports an error for namespace \`default\`.
   2. \`ops ide deploy --dry-run\` still executes \`ops package update\` and 
\`ops action update\`. The flag is parsed and stored, but the deploy 
implementation never checks it before running mutating commands.
   
   The behavior is present in both:
   
   - [\`apache/openserverless-task:0.9.1\` setup 
task](https://github.com/apache/openserverless-task/blob/0.9.1/ide/opsfile.yml#L102-L110)
   - [\`apache/openserverless-task:0.9.1\` unconditional post-deploy 
hook](https://github.com/apache/openserverless-task/blob/0.9.1/ide/opsfile.yml#L240-L275)
   - [\`apache/openserverless-task:0.9.1\` dry-run 
state](https://github.com/apache/openserverless-task/blob/0.9.1/ide/deploy/deploy.js#L27-L31)
   - [\`apache/openserverless-task:0.9.1\` action 
update](https://github.com/apache/openserverless-task/blob/0.9.1/ide/deploy/deploy.js#L122-L139)
   - \`nuvolaris/bestia:bestia\`, where the same implementation is present. 
That repository has GitHub Issues disabled.
   
   ### Observed behavior
   
   With a valid login and a project that has no local or remote \`setup\` 
package:
   
   \`\`\`sh
   ops ide deploy --dry-run
   \`\`\`
   
   The command performs real package/action updates and ends with:
   
   \`\`\`text
   ops action list setup
   error: Unable to obtain the list of actions for namespace 'default':
   The requested resource does not exist.
   \`\`\`
   
   The overall deploy still exits with code 0 because the failing command is 
the first stage of a pipeline whose final \`while\` loop succeeds.
   
   ### Expected behavior
   
   - \`--dry-run\` must not update packages, actions, projects, or invoke 
post-deploy setup actions.
   - A project without a \`setup\` package must finish silently without a false 
error.
   - If listing actions genuinely fails, the task should propagate the failure 
instead of hiding it behind the pipeline.
   - Setup actions, when present, should be selected from the authenticated 
namespace rather than by passing \`setup\` as a namespace argument.
   
   ### Minimal reproduction
   
   1. Log in to a valid namespace.
   2. Use any OPS project with \`packages/\` but without \`packages/setup/\`.
   3. Run:
      \`\`\`sh
      ops ide deploy --dry-run
      \`\`\`
   4. Observe real \`package update\` / \`action update\` commands followed by 
the namespace \`default\` setup error.
   
   ### Proposed fix
   
   #### Setup discovery
   
   List actions in the current authenticated namespace and filter fully 
qualified names for the \`setup\` package, instead of calling \`ops action list 
setup\`. For example:
   
   \`\`\`sh
   setup_prefix="/\${OPSDEV_USERNAME}/setup/"
   ops action list |
     awk -v prefix="$setup_prefix" 'NR > 1 && index($1, prefix) == 1 { print $1 
}'
   \`\`\`
   
   Capture the list first so a genuine \`ops action list\` failure is 
propagated. An empty result should be a successful no-op.
   
   #### Dry-run behavior
   
   - Do not execute the \`setup\` task when \`{{.__dry_run}}\` is true.
   - In \`ide/deploy/deploy.js\`, make the execution boundary aware of whether 
a command is mutating.
   - When \`dryRun\` is true, print but do not spawn:
     - \`ops package update\`
     - \`ops action update\`
     - \`ops -wsk project deploy\`
   - Local scanning/packaging may continue if desired, but no remote operation 
should run.
   
   #### Tests
   
   Add coverage that verifies:
   
   - a missing setup package is a silent success;
   - setup actions are selected only from the authenticated namespace;
   - a listing failure is not masked by a pipeline;
   - \`--dry-run\` spawns no remote mutation and skips setup invocation;
   - normal deploy behavior remains unchanged.
   
   ### Environment
   
   - OPS CLI: \`0.9.1-2607121109.dev\`
   - Tested task branches: \`nuvolaris/bestia:bestia\` and 
\`apache/openserverless-task:0.9.1\`
   - OS/architecture: Linux amd64


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to