This guide aims to provide guidance on how to release new versions of the apm-agent-dotnet binary as well as updating all the necessary parts to make it successful.
Releasing a new version of the binary implies that there have been changes in the source code which are meant to be released for wider consumption. Before releasing a new version there's some prerequisites that have to be checked.
Versioning off the binaries is automated through minver
The tag dictates the version number. Untagged commits are automatically versioned as prereleases according to their distance to their closest version tag.
Prior to tagging and releasing the new version we create a changelog commit. Adding relevant new features and bugfixes to CHANGELOG.asciidoc. The idea is to fill all the applicable sections so that users can consume an orderly changelog.
After a changelog has been manually curated, a new pull request must be opened with the changelog.
For instance, the changelog that was created for the 1.2 release can be found in this #640
In case you release a package the first time and you rely on the CI to push that to nuget.org, you need to make sure that t deploy.sh script is updated. You need to add the name of the new package into that script.
After the new changelog has been merged to main.
Create a new release on Github, creating a new tag for the version vMAJOR.MINOR.PATCH
Creating a release will trigger the release Github Action
NOTE: The steps below are now automated with GitHub actions.
We attach 2 files to the release on GitHub:
ElasticApmAgent_<major>.<minor>.<bug>(-<suffix>)?.zip: This is the startup-hook based agent.elastic_apm_profiler_<major>.<minor>.<bug>(-<suffix>)?.zip: This is the profiler-based agent. The CI currently generates 2 profiler zip files, one for Windows (withlibelastic_apm_profiler.dll), and one for Linux (withlibelastic_apm_profiler.so). The only difference in the zip files is the native agent, the remaining files are the same. We copy the 2 native files into a folder with the remaining files and zip that folder aselastic_apm_profiler_<major>.<minor>.<bug>(-<suffix>)?.zipwhich we attach to the release.
If required then it's possible to run the release script locally, for such, the credentials are needed to push to the NuGet repo.
./build.sh pack
.ci/linux/deploy.sh <API_KEY> <SERVER_URL>NOTE The above scripts are just wrapper for the dotnet command.