Skip to content

Automate Package Deploy to nuget.org #67

@nGoline

Description

@nGoline

What Happened

Today, I released new package versions for NLightning.Bolt11 and NLightning.Domain, but I had to re-release them after bumping other packages they depend on.

Later today, I fixed another bug, but I again forgot to bump the correct versions, which broke another release.

Why it Happened

The bug was reported for NLightning.Bolt11@4.0.0, and the fix involved changes in both NLightning.Bolt11 and NLightning.Domain.

The dependency tree is as follows:

  • NLightning.Bolt11
    • NLightning.Infrastructure
      • NLightning.Domain
    • NLightning.Infrastructure.Bitcoin
      • NLightning.Infrastructure
        • NLightning.Domain

When I released the fix, I bumped NLightning.Bolt11 to v4.0.1 and NLightning.Domain to v1.1.1. However, I forgot to bump NLightning.Infrastructure to v1.0.1 and NLightning.Infrastructure.Bitcoin to v0.0.2 before packing and publishing NLightning.Bolt11 and NLightning.Domain.

The solution was to bump the versions of the two missing packages and the two mis-published ones, then publish everything.

Now the correct versions should be up, and the dependency tree should be resolved, right? RIGHT?

Yeah, RIGHT. Then @rsafier found another bug introduced by the fix, and while making the release, I messed it up again...

How to fix it?

The fix involves automating the release process through GitHub Actions. This Action should check for changes between previous versions of each package and bump, pack, and publish all the necessary packages.

I believe the best way to keep track of changes between versions is to use the CHANGELOG.md file in each project, ensuring it is updated for every change merged to main before a release. Then, this Action can check the differences between the CHANGELOG.md of the last tag and the current one to determine if the update is a patch, minor, or major version, following SemVer guidelines.

Please

Before any real work starts on this matter, let's discuss it here. I want to ensure we put ideas on the table to find a suitable and feasible solution.

Metadata

Metadata

Assignees

No one assigned

    Labels

    AutomationAutomate some manual task to make it more reliableCI/CDGithub Actions related workenhancementNew feature or requesthelp wantedExtra attention is needed

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions