Continuous integration and delivery for WoA

This page captures the requirements and challenges for deploying CI/CD for WoA open-source projects.

CI/CD requirement for Open source projects

Most of the open-source projects prefer to use publically available cloud instances for deploying CI/CD for their projects. There are no public cloud instances available for WoA yet. The only option at the moment is to use self-hosted runners with major CI/CD services but since they are hard to maintain open-source projects only accept them if there is a strong demand for the platform.

Cloud Services

Most open-source projects use one of the following for windows testing

  • Github Actions

  • Azure Pipeline

  • Appveyor

  • Travis

WoA instances need to be available with one of the above cloud services for deployment.

Virtual Environment Requirement

At least following toolchain and runtime are required for WoA instances in the cloud

  • Windows 11 OS

  • Visual Studio 2019

    • ARM64/x64/x86 C++ toolchain

  • Visual Studio 2017 with ARM64 C++ toolchain

  • LLVM (WoA)

  • Python

  • Rust

  • Powershell

  • Cmd

  • NuGet

  • CMake

  • Git

  • Ninja

  • Mercurial

  • Perl

Cloud Availability and Instances

There are many open-source projects which would require WoA instances for deploying CI/CD. Some of the main ones required for enabling the python ecosystem are given below but this list is growing very fast. Most of the repository has good CI traffic and we expect a huge number of instances are required for supporting them.

Project

Reference

Impact

Alternatives

Project

Reference

Impact

Alternatives

1

CPython

https://github.com/python/cpython

LTS blocked by cloud CI

  • Cross-compilation

2

Numpy

https://github.com/numpy/numpy

LTS blocked by cloud CI

 

3

CFFI

https://foss.heptapod.net/pypy/cffi

LTS blocked by cloud CI

 

4

lxml

LTS blocked by cloud CI

 

5

Apache Arrow

LTS blocked by cloud CI

  • Cross-compilation

6

greenlet

LTS blocked by cloud CI

 

7

Pywin32

LTS blocked by cloud CI

 

8

Maturin

 

  • Cross-compilation

9

Pywinpty

LTS blocked by cloud CI

 

10

cibuildwheel

LTS blocked by cloud CI

 

11

Pillow

 

 

12

OpenBLAS

LTS blocked by cloud CI

 

13

FreeType

 

 

14

ZeroMQ

LTS blocked by cloud CI

  • Cross-compilation

15

Pyzmq

LTS blocked by cloud CI

 

16

OpenSSL

LTS blocked by cloud CI

  • Cross-compilation

17

Cryptography

LTS blocked by cloud CI

 

18

Pyopenssl

LTS blocked by cloud CI

 

19

Libsodium

LTS blocked by cloud CI

  • Cross-compilation

20

pycryptodome

PR adoption blocked by cloud CI

 

21

Goes

 

  • Cross-compilation

22

Shapely