CycloneDX / cyclonedx-dotnet

Creates CycloneDX Software Bill of Materials (SBOM) from .NET Projects
https://cyclonedx.org/
Apache License 2.0
183 stars 88 forks source link

Unable to access nuget package CycloneDX release notes #643

Open Bertk opened 1 year ago

Bertk commented 1 year ago

The release note URL for the nuget package is invalid and therefore access fails.

This URL will work but the release note information should be available CHANGELOG.md file.

<PackageReleaseNotes>See $(PackageProjectUrl)/releases for release notes.</PackageReleaseNotes>`

https://github.com/CycloneDX/cyclonedx-dotnet/blob/master/Directory.Build.props#:~:text=%3CPackageReleaseNotes%3ESee%20%24(PackageProjectUrl)/blob/master/CHANGELOG.md%23%24(VersionSuffix.Replace(%27.%27%2C%27%27))%20for%20release%20notes.%3C/PackageReleaseNotes%3E

image image
Bertk commented 1 year ago

@coderpatros Could please send your feedback for the alternative solutions.

see also keep a changelog

What about GitHub Releases?

It's a great initiative. Releases can be used to turn simple git tags (for example a tag named v1.0.0) into rich release notes by manually adding release notes or it can pull annotated git tag messages and turn them into notes.

GitHub Releases create a non-portable changelog that can only be displayed to users within the context of GitHub. It's possible to make them look very much like the Keep a Changelog format, but it tends to be a bit more involved.

The current version of GitHub releases is also arguably not very discoverable by end-users, unlike the typical uppercase files (README, CONTRIBUTING, etc.). Another minor issue is that the interface doesn't currently offer links to commit logs between each release.

github-actions[bot] commented 10 months ago

This issue is stale because it has been open for 3 months with no activity.

Bertk commented 10 months ago

@mtsfoni

Possible DEV environment improvements:

I can create a PR for this 2 topics but only after a hint whether this will be merged. Happy New Year :rocket:

mtsfoni commented 10 months ago

I did see your old pull request regarding this, but I didn't get to fully review it yet. Unfortunately, a lot of stuff piled up before I became a maintainer.

I liked the approach with Versionize(?) and ConventionalCommits. If I understood it correctly, the build would decide the new version number by the ConventionalCommits and automatically writes the changes, right?

Only fixes -> patch
feat -> minor
something with exclamation mark -> major.

That could then be combinable with "Generate Changelog from GH Releases" and the problem is solved?

Did something change your opinion about Versionize?

Bertk commented 10 months ago

@mtsfoni I like the the conventional changelog of Versionize but not “bumps the version in your .csproj file”. The version number handling could be done by other tools much better e.g. Nerdbank.GitVersioning. I will look into Versionize options next. I also have concerns on the pull request and commit conventions. This will not work without continuous correction of commit messages.

Bertk commented 10 months ago

@mtsfoni I created PR #811 which uses Nerdbank.GitVersioning and Versionize. I cannot test release.yml but the following topics should be verified/resolved

mtsfoni commented 10 months ago

Could you give me a quick rundown how my workflows (what I personally need to do) for 'merging PR's' / 'releasing a new Version' after I merge this PR?

Bertk commented 10 months ago

The PR currently just replaces semver.txt with version.json and adds nbgv dotnet tool. version.json has the metadata for Nerdbank.Gitversioning and defines the version under development . The nbgv tool can be used with option prepare-release or nbgv set-version 3.0.6.

You have the freedom to choose which tool you want to generate CHANGELOG.md and I attached one generated with changelog-from-release -r https://github.com/CycloneDX/cyclonedx-dotnet > CHANGELOG.md.

CHANGELOG.md

@mtsfoni I used action Release Drafter which generates a draft release using labeled PRs . github/release-drafter.yml file is used for configuration of label category, template, version resolver.

https://github.com/Bertk/arcade-light/blob/main/.github/workflows/draft.yml