Skip to content

Update release/changelog generation workflow after main/develop split (DCNE-890) - #518

Open
samiib wants to merge 4 commits into
CiscoDevNet:developfrom
samiib:fix_release_workflow
Open

samiib wants to merge 4 commits into
CiscoDevNet:developfrom
samiib:fix_release_workflow

Conversation

@samiib

@samiib samiib commented Aug 20, 2026

Copy link
Copy Markdown
Collaborator

Related Issue(s)

Proposed Changes

  • Made the changelog comparison ref configurable via a new compare_ref workflow_dispatch input (defaults to develop), instead of hard-coding develop in both the collection checkout step and the release script's compare URL. This allows generating a changelog against any branch, tag, or commit SHA.
  • Pinned the release_script checkout to a specific commit (c3405128f9ff87cf5231cf2aac8e03424921b1a6) rather than a mutable ref, so the workflow always runs a known-good version of the automation script.
  • Added an optional target_version workflow_dispatch input, allowing the release version to be manually overridden (e.g. 2.0.0) instead of relying solely on the automatically calculated version derived from bug/minor/major commit types.
  • Fixed the python-version input being unintentionally parsed as 3.1 instead of 3.10 due to YAML interpreting the unquoted value as a float; it is now quoted as a string.

Test Notes

Cisco Nexus Dashboard Version

Related ND API Resource Category

  • analyze
  • infa
  • manage
  • onemanage
  • other

Checklist

  • Latest commit is rebased from develop with merge conflicts resolved
  • New or updates to documentation has been made accordingly
  • Assigned the proper reviewers

@samiib samiib self-assigned this Aug 20, 2026
@samiib samiib added 2.0.0 Release 2.0.0 ready for review Submitter is requesting a PR review jira-sync Sync this issue to Jira labels Aug 20, 2026
@github-actions github-actions Bot changed the title Update release/changelog generation workflow after main/develop split Update release/changelog generation workflow after main/develop split (DCNE-890) Aug 20, 2026
@samiib samiib mentioned this pull request Aug 20, 2026
8 tasks
@samiib
samiib force-pushed the fix_release_workflow branch from 18eba9f to 664c933 Compare August 20, 2026 02:32
Comment thread .github/workflows/sync_main.yml Outdated
Comment thread .github/workflows/changelog-generation.yml Outdated
Comment thread .github/workflows/sync_main.yml Outdated
Comment thread .github/workflows/changelog-generation.yml
@samiib samiib removed the ready for review Submitter is requesting a PR review label Aug 25, 2026
@samiib
samiib force-pushed the fix_release_workflow branch 2 times, most recently from 4cfbf1b to b24ec2d Compare August 26, 2026 04:36
@samiib
samiib force-pushed the fix_release_workflow branch from b24ec2d to b773e67 Compare August 26, 2026 04:45
@samiib
samiib requested a review from mikewiebe August 26, 2026 06:41
@samiib samiib added the ready for review Submitter is requesting a PR review label Aug 26, 2026

@allenrobel allenrobel left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code review

The workflow changes look good — the compare_ref/target_version inputs are wired exactly to what the pinned release_script commit (edd5e186) reads, and the added permissions block matches what the script needs. One inline finding below on the deleted changelog fragment, plus one note on the PR body:

  1. The PR body's "Related Issue(s)" section is still the template placeholder — per the team convention, every PR should link an issue with Closes #N (DCNE-890 in the title doesn't auto-link/close anything on GitHub). Also, none of the "Related ND API Resource Category" checkboxes is checked — other would apply for a CI-only change.

🤖 Generated with Claude Code

Comment thread changelogs/fragments/relocate_nd_argument_spec.yml
@samiib
samiib requested a review from allenrobel September 1, 2026 21:38

@mikewiebe mikewiebe left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

allenrobel added a commit that referenced this pull request Sep 10, 2026
…commit subjects

The release workflow (changelog-generation.yml -> ciscoecosystem/release_script)
builds changelogs/changelog.yaml from the squash-merge commit messages and never
reads changelogs/fragments/. No release entry references a fragment, none of the
recent merged PRs added one, and PR #518 removes the only remaining fragment on
develop, so this one would sit unused.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GtjGrZGWEtY2dfDPuVVfkb
allenrobel added a commit that referenced this pull request Sep 11, 2026
…commit subjects

The release workflow (changelog-generation.yml -> ciscoecosystem/release_script)
builds changelogs/changelog.yaml from the squash-merge commit messages and never
reads changelogs/fragments/. No release entry references a fragment, none of the
recent merged PRs added one, and PR #518 removes the only remaining fragment on
develop, so this one would sit unused.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GtjGrZGWEtY2dfDPuVVfkb
allenrobel added a commit that referenced this pull request Sep 14, 2026
… path (#547)

* Finalize controller-accepted mutations on every nd_interface_* failure path

The failure-path finalizer added to nd_interface_loopback in the #403 review
(deploy_accepted_mutations) covered only that module. The nine sibling interface
modules share the same stranding bug: when a task with config_actions.deploy: true
fails after the controller has already accepted some mutations, the accepted subset
stays staged-but-undeployed, and a retry classifies those interfaces as no_diff and
never deploys them.

Lift the module-side helper into base_interface.py as finalize_accepted_intent()
(orchestrator-shaped signature so the orchestrator layer does not import the state
machine) and call it from every except handler in all ten nd_interface_* modules.
The three modules that carry only the NDStateMachineError handler (svi,
subinterface_managed, subinterface_unmanaged) get it there; their missing broad
handler is tracked by #379.

Docs: carry the loopback deploy-option sentence about the accepted subset over to
the nine siblings.

Tests: finalize_accepted_intent unit tests (base_interface 00680-00685) and a
parametrized module-level test that drives each module's main() with AnsibleModule
and NDStateMachine stand-ins, covering both handlers, deploy: false, and check mode.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01H5ogXuT7RjKHTF8Ty5RXpL

* Wrap ACCEPTED_NOTE literal to satisfy CI pep8 E501

CI started running once #403 merged and this PR retargeted to develop;
its pep8 sanity check flagged the 172-character string at line 62
(limit 160). Split it with implicit concatenation. No behavior change.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LMnfP2KGp9yEo4XnFdBkZM

* Cover nd_interface_ethernet_routed in the finalize_accepted_intent module tests

PR #550 shipped the routed module with the same finalize_accepted_intent helper wired
into both of its handlers, so add it to TWO_HANDLER_MODULES now that it is on develop.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019hBwZnSG7sG8K9zYuGKfYn

* Reconcile mixed-207 removes and skip the finalizer after a failed normal deploy

Two failure-path finalizer gaps raised in the PR #547 review:

- remove_pending: interfaceActions/remove answers HTTP 207 with an
  independent per-interface status, so one removal can succeed while
  another is rejected. The queue was cleared only on whole-request
  success, so an accepted removal stayed queued, was classified as
  unsent by _unsent_delete_pairs, and was excluded from the failure-path
  deploy. On retry the interface is already gone from controller
  inventory and is never deployed. On a failed request, dequeue the
  pairs the fresh response reports as an exact `success`, matched on
  (interfaceName, switchId) so the same name on two switches is told
  apart, and name them in the raised message. The response is consulted
  only when the request recorded a new one, so a sender exception that
  leaves the previous 207 in place (issue #554) cannot dequeue anything.

- deploy_accepted_mutations: the normal deploy_pending runs inside the
  same try as everything else and retains its queue on failure, so the
  broad handler's finalizer resubmitted the identical deployment. Track
  the stage with _deploy_attempted and return early once the normal
  deploy has been sent.

Tests: mixed 207 with a duplicate name on two switches, untrusted item
statuses, stale-response freshness guard, unit-level no-resubmit, and a
module-boundary test asserting exactly one deploy request when the
normal deploy fails.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GtjGrZGWEtY2dfDPuVVfkb

* Drop the changelog fragment; this repo's changelog is generated from commit subjects

The release workflow (changelog-generation.yml -> ciscoecosystem/release_script)
builds changelogs/changelog.yaml from the squash-merge commit messages and never
reads changelogs/fragments/. No release entry references a fragment, none of the
recent merged PRs added one, and PR #518 removes the only remaining fragment on
develop, so this one would sit unused.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GtjGrZGWEtY2dfDPuVVfkb

* Finalize accepted intent in the broad handlers PR #551 added to svi and subinterface modules

PR #551 landed the broad `except Exception` fallback in nd_interface_svi,
nd_interface_subinterface_managed and nd_interface_subinterface_unmanaged
after this branch was written, so those three handlers lacked the
finalize_accepted_intent call the other eight modules carry. Add it, and
drop the one-handler/two-handler split from the module tests now that
every interface module carries both handlers.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LWWfs7x2encjhvZSQyc8MY

---------

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

2.0.0 Release 2.0.0 jira-sync Sync this issue to Jira ready for review Submitter is requesting a PR review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants