Octopus.Client is a code library that makes it easy to use the Octopus REST API from .NET applications, C# and powershell scripts and LinqPad. Anything that can be done through the web interface can also be done programmatically using the library.
A few weeks ago we separated Octopus.Client from our main code base and quietly sent it on it's way with an Open Source licence. It has found a home in our OctopusClients GitHub repository.
To report bugs, ask questions, or request features, please use our support forum or email us. Issues and pull requests are monitored, but if it relates to a problem you are experiencing, please contact us through our support channel so that we can prioritise it accordingly. Also please discuss any large changes with us first to ensure it aligns with our goals for the product.
We have also open sourced a tool to create sample data in an Octopus instance for testing and demo purposes. You can find the source and documentation in the Sampler GitHub repository, and releases on the repository's releases tab.
SemVer and Compatibility
We have decided to adopt Semantic Versioning for our open source libraries and tools. This breaks with our previous practice of keeping version numbers in sync with Octopus Server. Some of our libraries have already begun to drift away.
Within a major version of Octopus.Client we will maintain backwards compatibility to a set version of Octopus Server, allowing worry free minor and patch upgrades.
Conversely we also maintain backwards compatibility in our Server API as much as possible while still being able to add new features. This means that an older version of Octopus.Client will work with newer versions of Octopus Server.
Refer to our compatibility page to get an overview of which versions work with a particular version of Octopus Server.
.NET Core and Async API
We have also ported Octopus.Client to .NET Core, targeting netstandard1.6 and .NET Framework 4.5. This means that the library can now be used anywhere .NET Core runs. It has been released as version 4.0, which is compatible with Octopus Server 3.3 or later.
Due to the .NET Standard version of HttpClient being fully asynchronous, we now only expose an async API in the .NET Standard build of Octopus.Client. We will re-add a sync API if .NET Standard supports it.
The structure of the API itself has largely not changed, and it should be straight forward to port to the async API. For examples of how to use the async API, see our Octopus.Client documentation.
If you are using the library with the .NET Framework, the synchronous API will still be available maintaining backwards compatibility. The synchronous and asynchronous APIs both have the exact same capabilities, and will continue to do so.
We have not yet decided to deprecate the synchronous API, and are unsure when or if we will. If we do, we will give plenty of notice.
Octo.exe, also in the OctopusClients repository, has also been ported to .NET Core. Keep an eye out for a cross-platform version in the near future. For more information on this tool, see our documentation.