flowchart TD A[code freeze each components see Fig. 2] --> D[/git hashsums in sf-stack repo/] D --> E[Linux build] E --> H[/.deb, python wheels \nand R tarballs/] D --> F[MacOSX build] H-- R tarballs --> G[Win build] G -->I[/.dll, R binary \ninstallers for windows/] F -->J[/.dylib, homebrew packages/] H --> K[Fetch artifacts] I --> K J --> K K --> L[copy to shared drive] click D "https://bitbucket.csiro.au/projects/SF/repos/sf-stack/browse" _blank click K "https://bitbucket.csiro.au/projects/SF/repos/cruise-control/browse/doc/build_pipelines.md" _blank
Build workflows
This page is an overview of the workflows devised to build the software stack (compile, package, version, document, etc.).
Building installers
Not counting third party established libraries such as Boost, a dozen git repositories under our control are used as inputs to the pipelines that package the software stack. Maintaining versions within each of these repositories may be influenced by various factors including unrelated projects, not necessarily solely by these installers. We are using the commit hashsums of this dozen of repositories to record and specify which version of each repositories is used as input to the build pipelines (see Fig. 1)
The source code for Azure Devops pipelines are also as of 2023-01 from github, for information purposes only. Their public availability may change in the future though.
Versioning
This is a (partly populated) placeholder section to document the rationale for versioning installer bundles, and components at a final granularity.
There may be a versioning, semantic or otherwise, used for the bundles of installers produced for various platforms (Fig. 1). The major product is still what used to be refered to as SWIFT2, but there are also other important, related but distinct, products (FoGSS, CHyPP) also.
flowchart TD A[Testing branch] --> B{testing} B -->|Yes| C[git tag] B -->|No| A C -->D[update CMakeLists.txt versions] D --> E[update debian changelog version] E --> F[update R package versions in\nDESCRIPTION and R doxygen] E --> G[Update python _version.py file] F --> H[roxygenise R packages] H --> I[commit new or updated .Rd files] I --> J[commit all repo changes] G --> J J --> K[tag repo] K --> L[git push]
Channels for software distribution
Some software such as the refcount python package are available via conda-forge and pypi. We cannot use these mechanism for closed source packages, but we may consider in the future distribution via:
- “private” conda channel
- “private” pypi repository
- “private” debian package repository
- “private” homebrew package repository (MacOSX)