How do GitHub feeds work in Octopus Deploy?

I’m interested in moving the scripts stored in my step templates into GitHub and leveraging the GitHub feeds functionality as described here. I’d like to understand the ramifications of doing that? Can I have a “beta” version of my scripts that I can test with my step template? How are the versions picked up?

When you specify a GitHub package you are actually specifying the name of the repository in GitHub.

For example, this screenshot points to this repository.

For a new version of a script to be picked up you have to create a release inside of GitHub. That will snapshot the repo into a package. Here are some of the releases for that particular repo.

When I create a release the step is treated like any other package. It will automatically pick the latest release. As you can see it selected 2019.2.7, which was the last release in the previous screenshot.
image

I can select older versions if I so desire.
image

In terms of having a “beta” version of the script while everyone else uses the “main” or “master” version, you’d have to leverage channel version rules. For my test project I’d add a version rule which only accepts pre-release tags.
image

The version rule designer allows you test out different options.

Out of the box the channel version rules are set to accept any package version, even pre-release ones. To stop projects from using the pre-release versions you’d have to add a version rule to every project using that step to not allow pre-release tags.