Building XComps with Github actions

Bastiaan Olij bastiaan at muxworks.com.au
Mon Mar 14 00:07:19 UTC 2022


Hi All,

I've been working on creating CI/CD implementations of some of my xcomps 
including those I host publicly on Github. It may be of interest to some 
others to see how I've approached this.
It fully compiles the xcomps for Windows and macOS on every push 
request, both so you can test if it compiles before merging into master 
and to allow you to download the compiled xcomps and test them.
I've also added logic so you can tag a release and it will put together 
a nice downloadable zip file with both Windows and macOS builds.
Right now it only builds with the latest Studio 10.2 SDK but I guess the 
build system could be enhanced to build against various different 
versions fairly easily, well anything going back to Studio 8.x as the 
project files need to be different for older versions.

It does not code sign the xcomps. I'm sure it's possible to organise 
that in some way, shape or form but since we code sign everything on 
building our entire application

The most bare bones example I have is this one: 
https://github.com/BastiaanOlij/omnis.xcomp.bgwidgets
Which is very similar to the generic example that comes with the SDK but 
with a few more classes build in.

Note that the Omnis SDK is installed in thirdparty/omnis.sdk which is 
different then how Omnis organises their SDK for their examples and the 
project files have been altered. Also the SDK is not embedded in the 
repository but the scripts download and extract the SDK from the Omnis 
developer FTP. If you want to build the project locally you'll have to 
put the Mac and Windows SDK inside of that folder

The CI/CD script itself can be found here: 
https://github.com/BastiaanOlij/omnis.xcomp.bgwidgets/blob/master/.github/workflows/build_on_push.yml

And finally, this is what a release looks like: 
https://github.com/BastiaanOlij/omnis.xcomp.bgwidgets/releases

-- 
Kindest Regards,

Bastiaan Olij
bastiaan at muxworks.com.au
+61-432144833



More information about the omnisdev-en mailing list