diff --git a/CI.md b/CI.md index d1282bc36..6b45fffc3 100644 --- a/CI.md +++ b/CI.md @@ -1,10 +1,10 @@ This is a summary of the host Python versions and platforms covered by the different CI platforms: -| | 3.11 | 3.12 | 3.13 | -|---------|----------------------------------|---------------------------------------------------------|----------------| -| Linux | Azure Pipelines / GitHub Actions | AppVeyor¹ / CircleCI¹ / Cirrus CI / GitLab¹ / Travis CI | GitHub Actions | -| macOS | Azure Pipelines | AppVeyor¹ / CircleCI¹ / Cirrus CI / GitLab¹ | GitHub Actions | -| Windows | Azure Pipelines | AppVeyor¹ / Cirrus CI / GitLab¹ / Travis CI | GitHub Actions | +| | 3.11 | 3.12 | 3.13 | +|---------|----------------------------------|---------------------------------------------|----------------| +| Linux | Azure Pipelines / GitHub Actions | CircleCI¹ / Cirrus CI / GitLab¹ / Travis CI | GitHub Actions | +| macOS | Azure Pipelines | CircleCI¹ / Cirrus CI / GitLab¹ | GitHub Actions | +| Windows | Azure Pipelines | Cirrus CI / GitLab¹ / Travis CI | GitHub Actions | > ¹ Runs a reduced set of tests to reduce CI load diff --git a/README.md b/README.md index 2d9af6b11..d9f258e38 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,6 @@ cibuildwheel [![Documentation Status](https://readthedocs.org/projects/cibuildwheel/badge/?version=stable)](https://cibuildwheel.pypa.io/en/stable/?badge=stable) [![Actions Status](https://github.com/pypa/cibuildwheel/workflows/Test/badge.svg)](https://github.com/pypa/cibuildwheel/actions) [![Travis Status](https://img.shields.io/travis/com/pypa/cibuildwheel/main?logo=travis)](https://travis-ci.com/github/pypa/cibuildwheel) -[![Appveyor status](https://ci.appveyor.com/api/projects/status/gt3vwl88yt0y3hur/branch/main?svg=true)](https://ci.appveyor.com/project/joerick/cibuildwheel/branch/main) [![CircleCI Status](https://img.shields.io/circleci/build/gh/pypa/cibuildwheel/main?logo=circleci)](https://circleci.com/gh/pypa/cibuildwheel) [![Azure Status](https://dev.azure.com/joerick0429/cibuildwheel/_apis/build/status/pypa.cibuildwheel?branchName=main)](https://dev.azure.com/joerick0429/cibuildwheel/_build/latest?definitionId=4&branchName=main) @@ -16,7 +15,7 @@ cibuildwheel Python wheels are great. Building them across **Mac, Linux, Windows**, on **multiple versions of Python**, is not. -`cibuildwheel` is here to help. `cibuildwheel` runs on your CI server - currently it supports GitHub Actions, Azure Pipelines, Travis CI, AppVeyor, CircleCI, and GitLab CI - and it builds and tests your wheels across all of your platforms. +`cibuildwheel` is here to help. `cibuildwheel` runs on your CI server - currently it supports GitHub Actions, Azure Pipelines, Travis CI, CircleCI, and GitLab CI - and it builds and tests your wheels across all of your platforms. What does it do? @@ -45,7 +44,7 @@ While cibuildwheel itself requires a recent Python version to run (we support th ⁵ manylinux armv7l support is experimental. As there are no RHEL based image for this architecture, it's using an Ubuntu based image instead.
- Builds manylinux, musllinux, macOS 10.9+ (10.13+ for Python 3.12+), and Windows wheels for CPython, PyPy, and GraalPy -- Works on GitHub Actions, Azure Pipelines, Travis CI, AppVeyor, CircleCI, GitLab CI, and Cirrus CI +- Works on GitHub Actions, Azure Pipelines, Travis CI, CircleCI, GitLab CI, and Cirrus CI - Bundles shared library dependencies on Linux and macOS through [auditwheel](https://github.com/pypa/auditwheel) and [delocate](https://github.com/matthew-brett/delocate) - Runs your library's tests against the wheel-installed version of your library @@ -61,7 +60,6 @@ Usage | GitHub Actions | ✅ | ✅ | ✅ | ✅ | ✅ | ✅² | ✅³ | | Azure Pipelines | ✅ | ✅ | ✅ | | ✅ | ✅² | ✅³ | | Travis CI | ✅ | | ✅ | ✅ | | | | -| AppVeyor | ✅ | ✅ | ✅ | | ✅ | ✅² | ✅³ | | CircleCI | ✅ | ✅ | | ✅ | ✅ | | ✅³ | | Gitlab CI | ✅ | ✅ | ✅ | ✅¹ | ✅ | | ✅³ | | Cirrus CI | ✅ | ✅ | ✅ | ✅ | ✅ | | ✅³ | @@ -188,7 +186,6 @@ Here are some repos that use cibuildwheel. [Prophet]: https://github.com/facebook/prophet [Kivy]: https://github.com/kivy/kivy -[appveyor icon]: docs/data/readme_icons/appveyor.svg [github icon]: docs/data/readme_icons/github.svg [azurepipelines icon]: docs/data/readme_icons/azurepipelines.svg [circleci icon]: docs/data/readme_icons/circleci.svg diff --git a/appveyor.yml b/appveyor.yml deleted file mode 100644 index ca5d4a6c4..000000000 --- a/appveyor.yml +++ /dev/null @@ -1,38 +0,0 @@ -environment: - matrix: - - APPVEYOR_BUILD_WORKER_IMAGE: Ubuntu2204 - APPVEYOR_JOB_NAME: "python312-x64-ubuntu" - - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2022 - APPVEYOR_JOB_NAME: "python312-x64-vs2022" - - APPVEYOR_BUILD_WORKER_IMAGE: macos-sonoma - APPVEYOR_JOB_NAME: "python312-x64-macos" - -stack: python 3.12 - -build: off - -init: -- ps: | - $BRANCH = if ($env:APPVEYOR_PULL_REQUEST_HEAD_REPO_BRANCH) { $env:APPVEYOR_PULL_REQUEST_HEAD_REPO_BRANCH } else { $env:APPVEYOR_REPO_BRANCH } - if (-not ($BRANCH -eq 'main' -or $BRANCH.ToLower().StartsWith('appveyor-'))) { - $env:PYTEST_ADDOPTS = '-k "unit_test or test_0_basic" --suppress-no-test-exit-code' - } - if ($IsLinux) { - docker run --rm --privileged docker.io/tonistiigi/binfmt:latest --install all - } - -install: - - python -m pip install -U pip - - python -m pip install -e ".[dev]" pytest-custom-exit-code - -# the '-u' flag is required so the output is in the correct order. -# See https://github.com/pypa/cibuildwheel/pull/24 for more info. -test_script: python -u ./bin/run_tests.py - -branches: - only: - - main - -skip_commits: - files: - - docs/* diff --git a/bin/projects.py b/bin/projects.py index 7414be963..029ef6679 100755 --- a/bin/projects.py +++ b/bin/projects.py @@ -33,7 +33,6 @@ from github import Github, GithubException ICONS = ( - "appveyor", "github", "azurepipelines", "circleci", diff --git a/bin/run_example_ci_configs.py b/bin/run_example_ci_configs.py index c7a5b8718..a6bd1bd06 100755 --- a/bin/run_example_ci_configs.py +++ b/bin/run_example_ci_configs.py @@ -41,11 +41,6 @@ class CIService(typing.NamedTuple): services = [ - CIService( - name="appveyor", - dst_config_path="appveyor.yml", - badge_md="[![Build status](https://ci.appveyor.com/api/projects/status/gt3vwl88yt0y3hur/branch/{branch}?svg=true)](https://ci.appveyor.com/project/joerick/cibuildwheel/branch/{branch})", - ), CIService( name="azure-pipelines", dst_config_path="azure-pipelines.yml", diff --git a/cibuildwheel/ci.py b/cibuildwheel/ci.py index a7ba04ee1..03205b7a4 100644 --- a/cibuildwheel/ci.py +++ b/cibuildwheel/ci.py @@ -6,13 +6,17 @@ class CIProvider(Enum): + # official support travis_ci = "travis" - appveyor = "appveyor" circle_ci = "circle_ci" azure_pipelines = "azure_pipelines" github_actions = "github_actions" gitlab = "gitlab" cirrus_ci = "cirrus_ci" + + # unofficial support + appveyor = "appveyor" + other = "other" diff --git a/docs/ci-services.md b/docs/ci-services.md index ba0c53ec8..6564052f8 100644 --- a/docs/ci-services.md +++ b/docs/ci-services.md @@ -86,22 +86,6 @@ Then setup a deployment method by following the [Travis CI deployment docs](http [`examples/travis-ci-deploy.yml`](https://github.com/pypa/cibuildwheel/blob/main/examples/travis-ci-deploy.yml) extends this minimal example with a demonstration of how to automatically upload the built wheels to PyPI. -### AppVeyor [linux/mac/windows] {: #appveyor} - -To build Linux, Mac, and Windows wheels on AppVeyor, create an `appveyor.yml` file in your repo. - -> appveyor.yml - -```yaml -{% include "../examples/appveyor-minimal.yml" %} -``` - -Commit this file, enable building of your repo on AppVeyor, and push. - -AppVeyor will store the built wheels for you - you can access them from the project console. Alternatively, you may want to store them in the same place as the Travis CI build. See [AppVeyor deployment docs](https://www.appveyor.com/docs/deployment/) for more info, or see [Delivering to PyPI](deliver-to-pypi.md) below. - -For more info on this config file, check out the [docs](https://www.appveyor.com/docs/). - ### CircleCI [linux/mac] {: #circleci} To build Linux and Mac wheels on CircleCI, create a `.circleci/config.yml` file in your repo, @@ -149,6 +133,12 @@ Cirrus CI will store the built wheels for you - you can access them from the ind > ⚠️ Got an error? Check the [FAQ](faq.md). +### Other CI services + +#### AppVeyor {: #appveyor} + +Appveyor official support was dropped in cibuildwheel v3.0, due to a lack of CI credits. However, it can probably still be used as-is. Check the Appveyor example from the cibuildwheel v2.0 branch: [appveyor-minimal.yml](https://github.com/pypa/cibuildwheel/blob/v2.23.3/examples/appveyor-minimal.yml). + ## Next steps Once you've got the wheel building successfully, you might want to set up [testing](options.md#test-command) or [automatic releases to PyPI](deliver-to-pypi.md#automatic-method). diff --git a/docs/data/projects.schema.json b/docs/data/projects.schema.json index ba12ccb9e..452b52c52 100644 --- a/docs/data/projects.schema.json +++ b/docs/data/projects.schema.json @@ -18,7 +18,6 @@ "enum": [ "github", "travisci", - "appveyor", "circleci", "gitlab", "cirrusci", diff --git a/docs/data/projects.yml b/docs/data/projects.yml index 8c9315bd9..e6ce488d9 100644 --- a/docs/data/projects.yml +++ b/docs/data/projects.yml @@ -4,7 +4,7 @@ # stars: GitHub repo (optional, if different from package, such as for Twisted) # pypi: The pypi name, if different from the GitHub package name # os: Operating system list, [windows, apple, linux] (optional) -# ci: [appveyor, github, azurepipelines, circleci, gitlab, travisci, cirrusci] (optional) +# ci: [github, azurepipelines, circleci, gitlab, travisci, cirrusci] (optional) # notes: (text, optional) - name: abess @@ -19,11 +19,11 @@ ci: [github] os: [windows, apple, linux] -- name: pyinstrument_cext - gh: joerick/pyinstrument_cext - ci: [travisci, appveyor] +- name: pyinstrument + gh: joerick/pyinstrument + ci: [github] os: [windows, apple, linux] - notes: A simple C extension, without external dependencies + notes: Python profiler with a C extension. No external dependencies. - name: websockets gh: python-websockets/websockets @@ -182,7 +182,7 @@ - name: python-rapidjson gh: python-rapidjson/python-rapidjson - ci: [travisci, gitlab, appveyor] + ci: [travisci, gitlab] os: [windows, linux] - name: jq.py diff --git a/docs/data/readme_icons/appveyor.svg b/docs/data/readme_icons/appveyor.svg deleted file mode 100644 index 6fa0bac27..000000000 --- a/docs/data/readme_icons/appveyor.svg +++ /dev/null @@ -1 +0,0 @@ -AppVeyor icon \ No newline at end of file diff --git a/docs/working-examples.md b/docs/working-examples.md index 366d6f257..9f254988f 100644 --- a/docs/working-examples.md +++ b/docs/working-examples.md @@ -75,7 +75,7 @@ title: Working examples | [KDEpy][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Kernel Density Estimation in Python | | [dd-trace-py][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Uses custom alternate arch emulation on GitHub | | [tgcalls][] | ![github icon][] | ![apple icon][] ![windows icon][] | Python `pybind11` binding to Telegram's WebRTC library with third party dependencies like `OpenSSL`, `MozJPEG`, `FFmpeg`, etc. | -| [python-rapidjson][] | ![travisci icon][] ![gitlab icon][] ![appveyor icon][] | ![windows icon][] ![linux icon][] | Python wrapper around rapidjson | +| [python-rapidjson][] | ![travisci icon][] ![gitlab icon][] | ![windows icon][] ![linux icon][] | Python wrapper around rapidjson | | [pybind11 python_example][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Example pybind11 module built with a Python-based build system | | [sourmash][] | ![github icon][] | ![apple icon][] ![linux icon][] ![windows icon][] | Quickly search, compare, and analyze genomic and metagenomic data sets. | | [abess][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A fast best-subset selection library. It uses cibuildwheel to build a large project with C++ extensions. | @@ -115,7 +115,7 @@ title: Working examples | [CorrectionLib][] | ![github icon][] | ![apple icon][] ![linux icon][] | Structured JSON powered correction library for HEP, designed for the CMS experiment at CERN. | | [xmlstarlet][] | ![github icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Python 3.6+ CFFI bindings with true MSVC build. | | [werpy][] | ![github icon][] | ![windows icon][] ![linux icon][] ![apple icon][] | An ultra-fast python package using optimized dynamic programming to compute the Word Error Rate (WER). | -| [pyinstrument_cext][] | ![travisci icon][] ![appveyor icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A simple C extension, without external dependencies | +| [pyinstrument_cext][] | ![travisci icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | A simple C extension, without external dependencies | | [pybind11 cross build example][] | ![github icon][] ![gitlab icon][] | ![windows icon][] ![apple icon][] ![linux icon][] | Same as pybind11 cmake_example but used to demo Linux ARM + Windows + macOS builds on GitLab | [scikit-learn]: https://github.com/scikit-learn/scikit-learn @@ -228,7 +228,6 @@ title: Working examples [pyinstrument_cext]: https://github.com/joerick/pyinstrument_cext [pybind11 cross build example]: https://github.com/wbarnha/pybind_cmake_example_crossbuild -[appveyor icon]: data/readme_icons/appveyor.svg [github icon]: data/readme_icons/github.svg [azurepipelines icon]: data/readme_icons/azurepipelines.svg [circleci icon]: data/readme_icons/circleci.svg diff --git a/examples/appveyor-minimal.yml b/examples/appveyor-minimal.yml deleted file mode 100644 index 446c2c912..000000000 --- a/examples/appveyor-minimal.yml +++ /dev/null @@ -1,18 +0,0 @@ -environment: - matrix: - - APPVEYOR_BUILD_WORKER_IMAGE: Ubuntu2204 - APPVEYOR_JOB_NAME: "linux-x64" - - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2022 - APPVEYOR_JOB_NAME: "windows-x64" - - APPVEYOR_BUILD_WORKER_IMAGE: macos-sonoma - APPVEYOR_JOB_NAME: "macos-x64" - -stack: python 3.12 - -install: python -m pip install cibuildwheel==2.23.3 - -build_script: python -m cibuildwheel --output-dir wheelhouse - -artifacts: - - path: "wheelhouse\\*.whl" - name: Wheels diff --git a/pyproject.toml b/pyproject.toml index 9ab482337..1495b9b32 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -13,7 +13,6 @@ authors = [ { name = "Joe Rickerby", email = "joerick@mac.com" }, ] keywords = [ - "appveyor", "ci", "linux", "macos", diff --git a/test/test_cpp_standards.py b/test/test_cpp_standards.py index bb884ad8e..85fcb6d96 100644 --- a/test/test_cpp_standards.py +++ b/test/test_cpp_standards.py @@ -1,7 +1,4 @@ -import os - import jinja2 -import pytest from . import utils from .test_projects import TestProject @@ -100,9 +97,6 @@ def test_cpp17(tmp_path): """ cpp17_project.generate(project_dir) - if os.environ.get("APPVEYOR_BUILD_WORKER_IMAGE", "") == "Visual Studio 2015": - pytest.skip("Visual Studio 2015 does not support C++17") - add_env = {} if utils.platform == "macos": add_env["MACOSX_DEPLOYMENT_TARGET"] = "10.13"