Boost logo

Boost :

From: Niall Douglas (s_sourceforge_at_[hidden])
Date: 2021-01-24 14:24:12


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-pipelines/

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=azure-devops

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-support-for-linuxarm64/

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


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk