[IDE] deploy runs invalid setup lookup and --dry-run still updates actions
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 58/100
- Issue type
- Bug
- Clarity
- Clearly specified
- Activity status
- Quiet
- Tech stack
- awk, javascript, shell
Research direction
Start with ide/opsfile.yml lines 102-110 and 240-275 for setup discovery and post-deploy behavior, then read ide/deploy/deploy.js lines 27-31 and 122-139 for dry-run state and action updates. Add or extend tests for missing setup, namespace selection, pipeline failures, and dry-run mutations. Done means absent setup is silent, failures propagate, dry-run performs no remote mutations, and normal deploy remains unchanged.
Written by the indexing model from the issue text.
Description
- I have searched the issues and believe this is not a duplicate.
Issue description
`ops ide deploy` has two related problems in the IDE deploy workflow:
- 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`.
- `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
- `apache/openserverless-task:0.9.1` unconditional post-deploy hook
- `apache/openserverless-task:0.9.1` dry-run state
- `apache/openserverless-task:0.9.1` action update
- `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
- Log in to a valid namespace.
- Use any OPS project with `packages/` but without `packages/setup/`.
- Run:
```sh
ops ide deploy --dry-run
``` - 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
- Dominant language
- Python
- Stars
- 576
- Forks
- 29
- Avg merge
- 51m
- Merged PRs (30d)
- 13
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from apache/openserverless
-
help wanted
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
apache/openserverless#253 ·
-
help wanted
apache/openserverless#254 · 3 comments · 1 assignee ·
-
help wanted
Difficulty 3/5 1-2 days Newbie friendliness 45/100
apache/openserverless#252 ·
-
enhancement
Difficulty 5/5 Over a week Newbie friendliness 25/100
apache/openserverless#215 ·
-
bug
Difficulty 4/5 3-5 days Newbie friendliness 72/100
apache/openserverless#213 ·
All issues in apache/openserverless
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100