Versioning SDK's with Git for builds with Jenkins

Search for a command to run...

No comments yet. Be the first to comment.
This downloads a file if it's newer than the one that's on your local drive: curl -z "path\filename.lib" ftp://ftp.yoursite.com//ftppath/filename.lib -o "path\filename.lib" The "-z" means only copy if it's newer than a specified date. But then you ju...
rem building v8 rem following https://medium.com/angular-in-depth/how-to-build-v8-on-windows-and-not-go-mad-6347c69aacd4 echo off set Path=%cd%\depot_tools;%Path% set DEPOT_TOOLS_WIN_TOOLCHAIN=0 set GYP_MSVS_VERSION=2022 rem curl -O https://storage...
Find your Visual Studio install directory. It is probably something like "C:\Program Files\Microsoft Visual Studio\2022\Community" Navigate to the subfolder "Common7\Packages\Debugger\Visualizers". As administrator, edit the file default.natstepfilte...
Following the work in my previous post, I happened across this Mastodon post about how good it would be to use lambdas, or function objects, as inputs in shaders. [ ](https://mastodon.gamedev.place/@meuns/111119173437770101) It occurred to me that i...

The Sfx shader language and shader variants 19 Sep Written By Roderick Kennedy For some reason there seems to be a lot of interest in custom and alternative game engine development now. Whatever the cause of this mysterious uptick, I thought I'd post...
Why the Metaverse Failed 11 Sep Written By Roderick Kennedy The research firm Gartner has a way of visualizing the development and adoption of new technologies. After an initial work and investment gold rush, there follows a "trough of disillusionmen...

Alright I think I've finally figured out a way to build SDK's with versioning.
Git for source control, obviously.
Development happens on the "main" branch. There's a "dev" branch for experimental stuff.
About every other month, I'll create a numbered branch. I've started with 4.0 because it continues from the old versioning system.
Each numbered branch receives only bug-fixes. All feature changes go in the main branch.
Jenkins gets a list of versions to build, defined in the main Jenkins Config as an environment variable. At the moment is looks like this:

Using Jenkins' Dynamic Axis Plugin and Matrix Projects, I use this as an axis for the matrix builds. Over time, new project numbers will be added and older ones will drop off. Jenkins will add build numbers to the version numbers, so I'll end up with installers numbered 4.0.125 etc.
Because only bug-fixes go in numbered branches, higher build numbers will always be more stable. And once you've chosen a numbered branch for your project, you can stick with that number, report to us any bugs, and be confident that the fixes will go in without any new breaking changes.
And I can develop freely on the main branch without worrying about breaking the versions in use by customers.
This should work. I'm probably the last person to figure this out.