On 24/01/2021 09:44, John Maddock via Boost wrote:
Github Actions is a convenience wrap of Azure Pipelines. You can use Azure Pipelines directly if you wish.
Azure Pipelines is free for open source projects and it comes with runners for:
- Windows Server 2019 x86/x64/ARM/ARM64 - Windows Server 2016 x86/x64/ARM/ARM64 - Ubuntu 20.04 x86/x64/ARM/ARM64 - Ubuntu 18.04 x64 - Ubuntu 16.04 x64 - Mac OS X 10.14 x64 - Mac OS X 10.15 x64
Even with the help of a famous-web-search-engine I couldn't find that information anywhere on the Azure website... just saying.
It was composed by me from multiple sources, including personal experience of programming GA and submitting pull requests for AP-based CI open source projects. Doing my own famous web searching to provide links to support my claims above: https://azure.microsoft.com/en-us/services/devops/pipelines/ Scroll to the very bottom, you'll see there are 10 parallel jobs with unlimited minutes for open source projects. They actually provide additional stuff too free of cost for open source, some of the enterprisey features e.g. 2Gb of build artifact storage. https://devblogs.microsoft.com/devops/top-5-open-source-features-in-azure-pi... You can examine libgit2 for how to use Azure Pipelines for CI on github. https://docs.microsoft.com/en-us/azure/devops/pipelines/agents/hosted?view=a... Here is a list of all the OS platforms supported, as I listed above. You can actually prod GA to use OS platforms which GA says it doesn't support, but is in the list above. Obviously you're on your own if you do that. https://azure.microsoft.com/en-us/updates/azure-devops-pipelines-introduces-... There's the announcement of ARM64 hardware. I actually couldn't find any proof that that ARM64 hardware they provide supports running ARM32 binaries, some ARM64 designs don't have the requisite hardware. Plus, the ARM32 implemented by ARM64 isn't "true" ARM32 e.g. with NEON being IEEE754 incomplete and so on. Something I haven't tried is whether qemu can emulate "legacy ARM" on ARM64 including all quirks in a performant fashion. I'd like to think it would.
But many thanks for the information, that's most useful (or will be if I can find the docs).
Hopefully the above helps. A huge short circuit to the learning curve is to find open source projects on github already using Azure Pipelines, and simply lift whatever they're doing. Github Actions has hugely closed the gap with Azure Pipelines in 2020 such that for most people implementing CI afresh, directly using Azure Pipelines is excess work when you can just "poke through" GA into the underlying AP if you need to, and otherwise remain within GA. GA is open source on github, so you can see how it converts your GA scripts into AP, and indeed you can then poke through into officially unsupported AP capabilities from GA. Stackoverflow is also an enormous help for unofficial hacks, as are various issue trackers on github. For me personally, last Autumn I invested about a month of my precious outside-of-work free time into permanently leaving Travis and Appveyor for Github Actions, given that Travis was shortly going to be become unusable, which it then became. I ended up with a solution as exemplified by https://github.com/ned14/llfio, whereby if all CI tests pass on all platforms, it automatically publishes a new prerelease of prebuilt binaries to github and tags the git commit as "all tests passed". It also does cool stuff like summarise all your unit tests per pull request e.g. https://github.com/ned14/llfio/pull/68 (unhide the comments to see the tables). This, in my opinion, is very cool. From time to time I choose a particular prerelease which I think particularly stable, and promote it to latest full release, merging that commit to master branch. I'm very happy with this setup, though I am now 100% dependent on Microsoft for everything. Feel free to lift from my .github/workflows GA scripting as you see fit. Niall