Skip to content

ci: updated branches and dev process#1704

Open
Tbaile wants to merge 3 commits into
nethsecurity-8.8from
build-changes
Open

ci: updated branches and dev process#1704
Tbaile wants to merge 3 commits into
nethsecurity-8.8from
build-changes

Conversation

@Tbaile
Copy link
Copy Markdown
Collaborator

@Tbaile Tbaile commented Jun 3, 2026

Proposal changes of dev processes

At the moment the dev process is as the following:

  • Changes are applied into main that produces a DEV build. This dev build is used for testing only
  • To release the packages, we need to bump the packages into the main, wait for a dev build to pass, then publish the packages manually. We lock this way merges to main until we're done publishing.
  • To release an image, we tie it to a TAG, which is not the ideal given how OpenWRT acts on builds. Source code should be the truth of the build version and if we ever need to release a new image over the already published one we need to rewrite git history.

Current proposal is to automatically push the packages and images when merged to specified branches:

  • main doesn't change, it's the dev branch and won't be touched, processes here happen as it always has been.
  • pr pull request also don't actually change.
  • staging introducing this branch to allow us to have a staging channel for some partners and/or specified machine we want test the not ready to release packages. This will be updated by merging the content of main or cherry-picking the changes.
  • release release is to release packages to the public, release channel. This can be used to release from testing or directly from main. Once this has been released it's needed to rebase main and staging to this branch, allowing changes already merged to be synced to the other channels.

When releasing to release or staging images are not written over if they're already present in the remote channel. I've considered the need for a rewrite of the image a complete edge-case with no clear path forward at the moment. The solution to this is a manual build and manual copy. This can however be changed by adding a flag over the CI that forces the image push, not implemented at the moment.

TAGS: Tags have been removed from the build process, since I've noted above the need to rewrite history if a botched build is pushed. Releases, however are needed to be made to save the sbom and manifest.
My proposal is to use TAGS just for releases and tie them up to the release branch instead of the main one.

Note: Not all documentation is up to date, if this draft goes forward I'll look into changing that, not applied at the moment due to uncertainty and changes to be applied if draft gets updated.

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR updates NethSecurity’s CI/CD and documentation to support a branch-based release flow, adding testing and stable as automated publishing branches and removing the previous tag/manual “release stable packages” workflow approach.

Changes:

  • Extend build-image workflow triggers to testing/stable, adjust version suffixing, and avoid overwriting existing stable/testing image artifacts.
  • Remove legacy workflows for “release stable packages” and subscription syncing.
  • Update docs and cleanup tooling to reflect the new version format and release process.

Reviewed changes

Copilot reviewed 9 out of 9 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
tools/cleanup/cleanup.py Updates dev-build timestamp extraction to support the new prerelease segment format.
docs/development_process.md Updates the documented stable release flow to branch-merge driven publishing and revises manual release guidance.
docs/build/index.md Clarifies build defaults/variable behavior wording.
build.conf.defaults Removes REPO_CHANNEL default from versioned defaults.
AGENTS.md Updates CI/release documentation table and stable release steps (but needs a correction for PR builds).
.github/workflows/subscription.yml Removes the workflow that synced stable → subscription on a schedule.
.github/workflows/release-stable.yml Removes the manual dev → stable package sync workflow.
.github/workflows/cleanup-branch.yml Adjusts cleanup logic to purge PR-numbered channels and exempts testing.
.github/workflows/build-image.yml Implements branch-based publishing (main→dev, testing/stable→respective channels) and conditional image artifact upload.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread AGENTS.md
Comment thread docs/development_process.md Outdated
podman exec -ti parceler-php php artisan repository:snapshots nethsecurity
```
Let's assume the latest snapshot is `2024-10-02T08:43:17+02:00`.
2. If you want to push all the packages to all firewall without waiting the tier period, execute:
@Tbaile Tbaile force-pushed the nethsecurity-8.8 branch from f19bdfc to 1ce9f52 Compare June 4, 2026 07:07
@Tbaile Tbaile marked this pull request as ready for review June 5, 2026 11:42
Copy link
Copy Markdown
Member

@gsanchietti gsanchietti left a comment

Choose a reason for hiding this comment

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

Minor changes

Comment thread docs/build/index.md
- Close related issues and milestones.
- Archive completed project-board items.
- Release NethSecurity Controller if applicable.
- Publish the user-facing announcement once the release draft is approved.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Please, re-add both links to forums

Comment thread docs/design/distfeed.md

If you want to change the base URL, add the variable override you need in `98-overrides.list`, `apk` will then handle by itself the replacement.

This changes for image updates, to recieve the correct popup you need to update the `ns-plug.config.repository_url` variable and the `/etc/repo-channel`, this will reflect even into `apk` unless a override has been set. This can be done as the following:
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

This is not clear, I really do not understand it

Comment thread docs/design/distfeed.md
```bash
cp /etc/apk/repositories.d/customfeeds.list /etc/apk/repositories.d/customfeeds.list.ori
cat /rom/etc/apk/repositories.d/distfeeds.list | sed 's/dev/stable/g' > /etc/apk/repositories.d/customfeeds.list
echo 'set repo_channel=staging' > /etc/apk/repositories.d/98-overrides.list
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Not sure we should use staging and example, I'd use release/stable.
Use case: an Enterprise user want to install an update directly from Community repo, before it's released to Enterprise.

### Packages
### Draft release from a tag

Tags are Git tags in the NethSecurity repository. They are created on the stable release commit, and on GitHub they are visible under the repository tags list and used as the name of the draft release.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

If I want to release a beta release, I should not create any tag, right?
Can we add an example?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants