/
githubmirror
/
pyyaml
Обзор
Документация
Войти
/
githubmirror
/
pyyaml
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
.github/workflows/ci.yaml
673 строки
24 KB
Ingy döt Net
Dos in merge key (#937)
18 июн 2026, 01:15
Не верифицирован
18 июн 2026, 01:15
34a9bf8
Код
Авторство
О чём код?
--- name: PyYAML CI on: push: pull_request: types: [opened, synchronize, reopened] workflow_dispatch: inputs: libyaml_repo: description: Repo URL for libyaml type: string default: https://github.com/yaml/libyaml libyaml_ref: description: Tag/branch ref for libyaml type: string default: 0.2.5 skip_artifact_upload: description: Skip most artifact uploads? type: boolean default: true skip_ci_redundant_jobs: description: Skip redundant jobs for CI? type: boolean default: true skip_slow_jobs: description: Skip slow (emulated) jobs for CI? type: boolean default: true env: LIBYAML_REPO: ${{ inputs.libyaml_repo || 'https://github.com/yaml/libyaml' }} # FIXME: can we ref the input.default value? LIBYAML_REF: ${{ inputs.libyaml_ref || '0.2.5' }} # FIXME: can we ref the input.default value? skip_ci_redundant_jobs: ${{ inputs.skip_ci_redundant_jobs || github.event_name == 'pull_request' || github.event_name == 'push' }} skip_slow_jobs: ${{ inputs.skip_slow_jobs || github.event_name == 'pull_request' || github.event_name == 'push' }} skip_artifact_upload: ${{ (github.event_name == 'workflow_dispatch' && inputs.skip_artifact_upload) || github.event_name != 'workflow_dispatch' }} jobs: python_sdist: name: pyyaml sdist runs-on: ubuntu-24.04 outputs: artifact_name: ${{ steps.build_sdist.outputs.artifact_name }} package_version: ${{ steps.build_sdist.outputs.package_version }} steps: - name: Checkout PyYAML uses: actions/checkout@v4 - name: Install a python uses: actions/setup-python@v5 with: python-version: 3.x - name: Build sdist id: build_sdist env: PYYAML_FORCE_CYTHON: 1 PYYAML_FORCE_LIBYAML: 0 run: | python -V python -m pip install build python -m build -s . echo "artifact_name=$(ls ./dist)" >> "$GITHUB_OUTPUT" echo "package_version=$(ls ./dist | sed -En 's/pyyaml-(.+)\.tar\.gz/\1/p')" >> "$GITHUB_OUTPUT" - name: Upload sdist artifact uses: actions/upload-artifact@v4 with: name: ${{ steps.build_sdist.outputs.artifact_name }} path: dist/${{ steps.build_sdist.outputs.artifact_name }} if-no-files-found: error # always upload the sdist artifact- all the wheel build jobs require it make_linux_libyaml_matrix: runs-on: ubuntu-24.04 outputs: matrix_json: ${{ steps.make_matrix.outputs.matrix_json }} steps: - uses: actions/checkout@v4 - name: make a matrix id: make_matrix uses: ./.github/actions/dynamatrix with: matrix_yaml: | include: - { platform: manylinux1, arch: x86_64 } - { platform: manylinux2014, arch: x86_64 } - { platform: manylinux2014, arch: aarch64 } - { platform: manylinux2014, arch: s390x, omit: ${{ env.skip_ci_redundant_jobs || env.skip_slow_jobs }} } - { platform: musllinux_1_2, arch: x86_64 } - { platform: musllinux_1_2, arch: aarch64 } linux_libyaml: needs: [make_linux_libyaml_matrix] name: libyaml ${{ matrix.platform }} ${{ matrix.arch }} runs-on: ${{ (matrix.arch == 'aarch64') && 'ubuntu-24.04-arm' || 'ubuntu-24.04' }} strategy: fail-fast: false matrix: ${{ fromJSON(needs.make_linux_libyaml_matrix.outputs.matrix_json) }} env: DOCKER_IMAGE: quay.io/pypa/${{ matrix.platform }}_${{ matrix.arch }} steps: - name: Check cached libyaml state id: cached_libyaml uses: actions/cache@v4 with: path: libyaml key: libyaml_${{ matrix.platform }}_${{ matrix.arch }}_${{ env.LIBYAML_REF }} - name: configure docker foreign arch support uses: docker/setup-qemu-action@v3 if: matrix.arch != 'x86_64' && steps.cached_libyaml.outputs.cache-hit != 'true' - name: Checkout pyyaml uses: actions/checkout@v4 if: steps.cached_libyaml.outputs.cache-hit != 'true' - name: Build libyaml run: > docker run --rm --volume "$(pwd):/io" --env LIBYAML_REF --env LIBYAML_REPO --workdir /io "$DOCKER_IMAGE" /io/packaging/build/libyaml.sh if: steps.cached_libyaml.outputs.cache-hit != 'true' - name: ensure output is world readable (or cache fill fails with Permission Denied) run: > sudo chmod -R a+r ./libyaml/ if: steps.cached_libyaml.outputs.cache-hit != 'true' make_linux_pyyaml_matrix: runs-on: ubuntu-24.04 outputs: matrix_json: ${{ steps.make_matrix.outputs.matrix_json }} steps: - uses: actions/checkout@v4 - name: make a matrix id: make_matrix uses: ./.github/actions/dynamatrix with: matrix_yaml: | include: - { platform: manylinux1, arch: x86_64, spec: cp38, cibw_version: 'cibuildwheel<4' } - { platform: manylinux1, arch: x86_64, spec: cp39, omit: ${{ env.skip_ci_redundant_jobs }} } - { platform: manylinux2014, arch: x86_64, spec: cp310, omit: ${{ env.skip_ci_redundant_jobs }} } - { platform: manylinux2014, arch: x86_64, spec: cp311, omit: ${{ env.skip_ci_redundant_jobs }} } - { platform: manylinux2014, arch: x86_64, spec: cp312, omit: ${{ env.skip_ci_redundant_jobs }} } - { platform: manylinux2014, arch: x86_64, spec: cp313, omit: ${{ env.skip_ci_redundant_jobs }} } - { platform: manylinux2014, arch: x86_64, spec: cp314 } - { platform: manylinux2014, arch: x86_64, spec: cp314t } - { platform: manylinux2014, arch: aarch64, spec: cp38, omit: ${{ env.skip_ci_redundant_jobs }} } - { platform: manylinux2014, arch: aarch64, spec: cp39, omit: ${{ env.skip_ci_redundant_jobs }} } - { platform: manylinux2014, arch: aarch64, spec: cp310, omit: ${{ env.skip_ci_redundant_jobs }} } - { platform: manylinux2014, arch: aarch64, spec: cp311, omit: ${{ env.skip_ci_redundant_jobs }} } - { platform: manylinux2014, arch: aarch64, spec: cp312, omit: ${{ env.skip_ci_redundant_jobs }} } - { platform: manylinux2014, arch: aarch64, spec: cp313, omit: ${{ env.skip_ci_redundant_jobs }} } - { platform: manylinux2014, arch: aarch64, spec: cp314 } - { platform: manylinux2014, arch: aarch64, spec: cp314t } - { platform: manylinux2014, arch: s390x, spec: cp38, omit: ${{ env.skip_ci_redundant_jobs || env.skip_slow_jobs }} } - { platform: manylinux2014, arch: s390x, spec: cp39, omit: ${{ env.skip_ci_redundant_jobs || env.skip_slow_jobs }} } - { platform: manylinux2014, arch: s390x, spec: cp310, omit: ${{ env.skip_ci_redundant_jobs || env.skip_slow_jobs }} } - { platform: manylinux2014, arch: s390x, spec: cp311, omit: ${{ env.skip_ci_redundant_jobs || env.skip_slow_jobs }} } - { platform: manylinux2014, arch: s390x, spec: cp312, omit: ${{ env.skip_ci_redundant_jobs || env.skip_slow_jobs }} } - { platform: manylinux2014, arch: s390x, spec: cp313, omit: ${{ env.skip_ci_redundant_jobs || env.skip_slow_jobs }} } - { platform: manylinux2014, arch: s390x, spec: cp314, omit: ${{ env.skip_slow_jobs }} } - { platform: manylinux2014, arch: s390x, spec: cp314t, omit: ${{ env.skip_ci_redundant_jobs || env.skip_slow_jobs }} } - { platform: musllinux_1_2, arch: x86_64, spec: cp38, omit: ${{ env.skip_ci_redundant_jobs }} } - { platform: musllinux_1_2, arch: x86_64, spec: cp39, omit: ${{ env.skip_ci_redundant_jobs }} } - { platform: musllinux_1_2, arch: x86_64, spec: cp310, omit: ${{ env.skip_ci_redundant_jobs }} } - { platform: musllinux_1_2, arch: x86_64, spec: cp311, omit: ${{ env.skip_ci_redundant_jobs }} } - { platform: musllinux_1_2, arch: x86_64, spec: cp312, omit: ${{ env.skip_ci_redundant_jobs }} } - { platform: musllinux_1_2, arch: x86_64, spec: cp313, omit: ${{ env.skip_ci_redundant_jobs }} } - { platform: musllinux_1_2, arch: x86_64, spec: cp314 } - { platform: musllinux_1_2, arch: x86_64, spec: cp314t } - { platform: musllinux_1_2, arch: aarch64, spec: cp39, omit: ${{ env.skip_ci_redundant_jobs }} } - { platform: musllinux_1_2, arch: aarch64, spec: cp310, omit: ${{ env.skip_ci_redundant_jobs }} } - { platform: musllinux_1_2, arch: aarch64, spec: cp311, omit: ${{ env.skip_ci_redundant_jobs }} } - { platform: musllinux_1_2, arch: aarch64, spec: cp312, omit: ${{ env.skip_ci_redundant_jobs }} } - { platform: musllinux_1_2, arch: aarch64, spec: cp313, omit: ${{ env.skip_ci_redundant_jobs }} } - { platform: musllinux_1_2, arch: aarch64, spec: cp314, omit: ${{ env.skip_slow_jobs }} } - { platform: musllinux_1_2, arch: aarch64, spec: cp314t, omit: ${{ env.skip_slow_jobs }} } linux_pyyaml: needs: [python_sdist, linux_libyaml, make_linux_pyyaml_matrix] name: pyyaml ${{matrix.spec}}-${{matrix.platform}}_${{matrix.arch}} runs-on: ${{ (matrix.arch == 'aarch64') && 'ubuntu-24.04-arm' || 'ubuntu-24.04' }} strategy: fail-fast: false matrix: ${{ fromJSON(needs.make_linux_pyyaml_matrix.outputs.matrix_json) }} steps: - name: fetch sdist artifact id: fetch_sdist uses: actions/download-artifact@v4 with: name: ${{ needs.build_sdist.outputs.artifact_name }} - name: Fetch cached libyaml id: cached_libyaml uses: actions/cache/restore@v4 with: path: libyaml key: libyaml_${{matrix.platform}}_${{matrix.arch}}_${{env.LIBYAML_REF}} fail-on-cache-miss: true - name: configure docker foreign arch support uses: docker/setup-qemu-action@v3 if: matrix.arch != 'x86_64' && matrix.arch != 'aarch64' - name: Build/Test/Package id: build env: CIBW_ARCHS: all # HACK: ick, maybe deconstruct the matrix a bit or query cibuildwheel for its default target *linux spec first? CIBW_BUILD: ${{matrix.spec}}-${{ contains(matrix.platform, 'musllinux') && 'musllinux' || 'manylinux' }}_${{matrix.arch}} CIBW_BUILD_VERBOSITY: 1 # containerized Linux builds require explicit CIBW_ENVIRONMENT CIBW_ENVIRONMENT: > LD_LIBRARY_PATH=../libyaml/src/.libs PYYAML_FORCE_CYTHON=1 PYYAML_FORCE_LIBYAML=1 CIBW_MANYLINUX_X86_64_IMAGE: ${{ matrix.manylinux_img || '' }} CIBW_MANYLINUX_I686_IMAGE: ${{ matrix.manylinux_img || '' }} CIBW_MANYLINUX_AARCH64_IMAGE: ${{ matrix.manylinux_img || '' }} CIBW_MANYLINUX_S390X_IMAGE: ${{ matrix.manylinux_img || '' }} CIBW_MUSLLINUX_X86_64_IMAGE: ${{ matrix.musllinux_img || 'musllinux_1_2' }} CIBW_MUSLLINUX_I686_IMAGE: ${{ matrix.musllinux_img || 'musllinux_1_2' }} CIBW_MUSLLINUX_AARCH64_IMAGE: ${{ matrix.musllinux_img || 'musllinux_1_2' }} CIBW_TEST_COMMAND: cd {project}; pytest CIBW_TEST_REQUIRES: pytest run: | set -eux python3 -V python3 -m pip install -U --user "${{ matrix.cibw_version || 'cibuildwheel' }}" mkdir pyyaml tar zxf ${{ steps.fetch_sdist.outputs.download-path }}/pyyaml*.tar.gz/pyyaml*.tar.gz --strip-components=1 -C pyyaml cat << 'EOF' > build_config.toml [tool.cibuildwheel.config-settings] pyyaml_build_config='{"force":1, "library_dirs": ["../libyaml/src/.libs"], "include_dirs": ["../libyaml/include"]}' EOF CIBW_BEFORE_BUILD="ls -l {project}" python3 -m cibuildwheel --config-file $(pwd)/build_config.toml --platform auto --output-dir ./dist ./pyyaml echo "artifact_name=$(ls ./dist/)" >> "$GITHUB_OUTPUT" # FIXME: ensure exactly one artifact - name: Upload artifacts uses: actions/upload-artifact@v4 with: name: ${{ steps.build.outputs.artifact_name }} path: dist/*.whl if-no-files-found: error if: ${{ env.skip_artifact_upload != 'true' }} macos_libyaml: name: libyaml macos ${{matrix.arch}} strategy: matrix: include: - arch: x86_64 runs-on: macos-15-intel # force x86_64 runner - arch: arm64 deployment_target: '11.0' defaults: run: shell: ${{ matrix.run_wrapper || 'bash --noprofile --norc -eo pipefail {0}' }} runs-on: ${{ matrix.runs-on || 'macos-15' }} steps: - name: Check cached libyaml state id: cached_libyaml uses: actions/cache@v4 with: path: libyaml key: libyaml_macos_${{matrix.arch}}_${{env.LIBYAML_REF}} - name: Checkout PyYAML uses: actions/checkout@v4 if: steps.cached_libyaml.outputs.cache-hit != 'true' - name: Build libyaml env: MACOSX_DEPLOYMENT_TARGET: ${{ matrix.deployment_target || '10.13' }} SDKROOT: ${{ matrix.sdkroot || 'macosx' }} run: | set -eux brew install automake coreutils m4 libtool bash ./packaging/build/libyaml.sh echo "finished artifact arch is $(lipo -archs libyaml/src/.libs/libyaml.a)" if: steps.cached_libyaml.outputs.cache-hit != 'true' make_macos_pyyaml_matrix: runs-on: ubuntu-24.04 outputs: matrix_json: ${{ steps.make_matrix.outputs.matrix_json }} steps: - uses: actions/checkout@v4 - name: make a matrix id: make_matrix uses: ./.github/actions/dynamatrix with: matrix_yaml: | include: ### x86_64 jobs - spec: cp38-macosx_x86_64 arch: x86_64 cibw_version: cibuildwheel==2.11.1 runs_on: [macos-15-intel] omit: ${{ env.skip_ci_redundant_jobs }} - spec: cp39-macosx_x86_64 arch: x86_64 runs_on: [macos-15-intel] omit: ${{ env.skip_ci_redundant_jobs }} - spec: cp310-macosx_x86_64 arch: x86_64 runs_on: [macos-15-intel] omit: ${{ env.skip_ci_redundant_jobs }} - spec: cp311-macosx_x86_64 arch: x86_64 runs_on: [macos-15-intel] omit: ${{ env.skip_ci_redundant_jobs }} - spec: cp312-macosx_x86_64 arch: x86_64 runs_on: [macos-15-intel] omit: ${{ env.skip_ci_redundant_jobs }} - spec: cp313-macosx_x86_64 arch: x86_64 runs_on: [macos-15-intel] omit: ${{ env.skip_ci_redundant_jobs }} - spec: cp314-macosx_x86_64 arch: x86_64 runs_on: [macos-15-intel] - spec: cp314t-macosx_x86_64 arch: x86_64 runs_on: [macos-15-intel] ### arm64 jobs - spec: cp39-macosx_arm64 deployment_target: '11.0' arch: arm64 omit: ${{ env.skip_ci_redundant_jobs }} - spec: cp310-macosx_arm64 deployment_target: '11.0' arch: arm64 omit: ${{ env.skip_ci_redundant_jobs }} - spec: cp311-macosx_arm64 deployment_target: '11.0' arch: arm64 omit: ${{ env.skip_ci_redundant_jobs }} - spec: cp312-macosx_arm64 deployment_target: '11.0' arch: arm64 omit: ${{ env.skip_ci_redundant_jobs }} - spec: cp313-macosx_arm64 deployment_target: '11.0' arch: arm64 omit: ${{ env.skip_ci_redundant_jobs }} - spec: cp314-macosx_arm64 deployment_target: '11.0' arch: arm64 - spec: cp314t-macosx_arm64 deployment_target: '11.0' arch: arm64 macos_pyyaml: needs: [python_sdist, macos_libyaml, make_macos_pyyaml_matrix] name: pyyaml ${{ matrix.spec }} runs-on: ${{ matrix.runs_on || 'macos-15' }} defaults: run: shell: ${{ matrix.run_wrapper || 'bash --noprofile --norc -eo pipefail {0}' }} strategy: fail-fast: false matrix: ${{ fromJSON(needs.make_macos_pyyaml_matrix.outputs.matrix_json) }} steps: - name: fetch sdist artifact id: fetch_sdist uses: actions/download-artifact@v4 with: name: ${{ needs.build_sdist.outputs.artifact_name }} - name: Get cached libyaml state id: cached_libyaml uses: actions/cache/restore@v4 with: path: libyaml key: libyaml_macos_${{ matrix.arch }}_${{env.LIBYAML_REF}} fail-on-cache-miss: true - name: Install python uses: actions/setup-python@v5 with: python-version: '3.11' # as of 2024-05, this has to be < 3.12 since the macos-15 runner image's # built-in virtualenv/pip are pinned to busted versions that fail on newer Pythons - name: Build/Test/Package id: build env: C_INCLUDE_PATH: ../libyaml/include CIBW_BUILD: ${{matrix.spec}} CIBW_BUILD_VERBOSITY: 1 CIBW_TEST_COMMAND: pytest {package} CIBW_TEST_REQUIRES: pytest LIBRARY_PATH: ../libyaml/src/.libs MACOSX_DEPLOYMENT_TARGET: ${{ matrix.deployment_target || '10.13' }} PYYAML_FORCE_CYTHON: 1 PYYAML_FORCE_LIBYAML: 1 SDKROOT: ${{ matrix.sdkroot || 'macosx' }} run: | set -eux python3 -V python3 -m pip install -U --user "${{ matrix.cibw_version || 'cibuildwheel' }}" mkdir pyyaml tar zxf pyyaml*.tar.gz/pyyaml*.tar.gz --strip-components=1 -C pyyaml cat << 'EOF' > build_config.toml [tool.cibuildwheel.config-settings] pyyaml_build_config='{"force":1, "library_dirs": ["../libyaml/src/.libs"], "include_dirs": ["../libyaml/include"]}' EOF python3 -m cibuildwheel --config-file $(pwd)/build_config.toml --platform auto --output-dir ./dist ./pyyaml echo "artifact_name=$(ls ./dist/)" >> "$GITHUB_OUTPUT" # FIXME: ensure exactly one artifact - name: Upload artifacts uses: actions/upload-artifact@v4 with: name: ${{ steps.build.outputs.artifact_name }} path: dist/*.whl if-no-files-found: error if: ${{ env.skip_artifact_upload != 'true' }} windows_libyaml: name: libyaml windows ${{ matrix.arch }} runs-on: ${{ (matrix.arch == 'arm64') && 'windows-11-arm' || 'windows-2022' }} strategy: fail-fast: false matrix: include: - arch: x64 - arch: win32 - arch: arm64 steps: - name: Get cached libyaml state id: cached_libyaml uses: actions/cache@v4 with: path: libyaml key: libyaml_${{ 'windows' }}_${{ matrix.arch }}_${{ env.LIBYAML_REF }} - name: Build libyaml shell: bash if: steps.cached_libyaml.outputs.cache-hit != 'true' run: | # git spews all over stderr unless we tell it not to export GIT_REDIRECT_STDERR="2>&1" if [[ ! -d ./libyaml ]]; then git clone -b ${{ env.LIBYAML_REF }} ${{ env.LIBYAML_REPO }} 2>&1 fi pushd libyaml git clean -fdx popd mkdir libyaml/build pushd libyaml/build cmake.exe -G "Visual Studio 17 2022" -A ${{ matrix.arch }} -DYAML_STATIC_LIB_NAME=yaml -DCMAKE_POLICY_VERSION_MINIMUM=3.5 .. cmake.exe --build . --config Release popd make_windows_pyyaml_matrix: runs-on: ubuntu-24.04 outputs: matrix_json: ${{ steps.make_matrix.outputs.matrix_json }} steps: - uses: actions/checkout@v4 - name: make a matrix id: make_matrix uses: ./.github/actions/dynamatrix with: matrix_yaml: | include: ### x86_64 jobs - spec: cp38-win_amd64 arch: x64 cibw_version: cibuildwheel<4 - spec: cp39-win_amd64 arch: x64 omit: ${{ env.skip_ci_redundant_jobs }} - spec: cp310-win_amd64 arch: x64 omit: ${{ env.skip_ci_redundant_jobs }} - spec: cp311-win_amd64 arch: x64 omit: ${{ env.skip_ci_redundant_jobs }} - spec: cp312-win_amd64 arch: x64 omit: ${{ env.skip_ci_redundant_jobs }} - spec: cp313-win_amd64 arch: x64 omit: ${{ env.skip_ci_redundant_jobs }} - spec: cp314-win_amd64 arch: x64 - spec: cp314t-win_amd64 arch: x64 ### arm64 jobs - spec: cp312-win_arm64 arch: arm64 runs-on: windows-11-arm omit: ${{ env.skip_ci_redundant_jobs }} - spec: cp313-win_arm64 arch: arm64 runs-on: windows-11-arm omit: ${{ env.skip_ci_redundant_jobs }} - spec: cp314-win_arm64 arch: arm64 runs-on: windows-11-arm - spec: cp314t-win_arm64 arch: arm64 runs-on: windows-11-arm ### win32 jobs - spec: cp38-win32 arch: win32 omit: ${{ env.skip_ci_redundant_jobs }} - spec: cp39-win32 arch: win32 omit: ${{ env.skip_ci_redundant_jobs }} - spec: cp310-win32 arch: win32 omit: ${{ env.skip_ci_redundant_jobs }} - spec: cp311-win32 arch: win32 omit: ${{ env.skip_ci_redundant_jobs }} - spec: cp312-win32 arch: win32 omit: ${{ env.skip_ci_redundant_jobs }} - spec: cp313-win32 arch: win32 omit: ${{ env.skip_ci_redundant_jobs }} # no more win32 after 3.13? windows_pyyaml: needs: [python_sdist, windows_libyaml, make_windows_pyyaml_matrix] name: pyyaml ${{matrix.spec}} runs-on: ${{ matrix.runs-on || 'windows-2022' }} strategy: fail-fast: false matrix: ${{ fromJSON(needs.make_windows_pyyaml_matrix.outputs.matrix_json) }} steps: # autocrlf screws up tests under Windows - name: Set git to use LF run: | git config --global core.autocrlf false git config --global core.eol lf - name: fetch sdist artifact id: fetch_sdist uses: actions/download-artifact@v4 with: name: ${{ needs.build_sdist.outputs.artifact_name }} - name: Get cached libyaml state id: cached_libyaml uses: actions/cache/restore@v4 with: path: libyaml key: libyaml_${{'windows'}}_${{ matrix.arch }}_${{env.LIBYAML_REF}} fail-on-cache-miss: true - name: Install python uses: actions/setup-python@v5 with: python-version: 3.x - name: Build/Test/Package id: build shell: bash env: CIBW_BUILD: ${{matrix.spec}} CIBW_BUILD_VERBOSITY: 1 CIBW_BEFORE_TEST: ls -l {package} CIBW_TEST_COMMAND: pytest {package} CIBW_TEST_REQUIRES: pytest #CIBW_CONFIG_SETTINGS: | # pyyaml_build_config='{"include_dirs": ["libyaml/include"], "library_dirs": ["libyaml/build/Release"], "define": [["YAML_DECLARE_STATIC", 1]], "force": 1}' run: | set -eux python -V python -m pip install -U --user "${{ matrix.cibw_version || 'cibuildwheel' }}" mkdir pyyaml tar zxf pyyaml*.tar.gz/pyyaml*.tar.gz --strip-components=1 -C pyyaml cat << 'EOF' > build_config.toml [tool.cibuildwheel.config-settings] pyyaml_build_config='{"force":1, "include_dirs": ["../libyaml/include"], "library_dirs": ["../libyaml/build/Release"], "define": [["YAML_DECLARE_STATIC", 1]], "force": 1}' EOF python3 -m cibuildwheel --config-file $(pwd)/build_config.toml --platform auto --output-dir ./dist ./pyyaml echo "artifact_name=$(ls ./dist/)" >> "$GITHUB_OUTPUT" # FIXME: ensure exactly one artifact - name: Upload artifacts uses: actions/upload-artifact@v4 with: name: ${{ steps.build.outputs.artifact_name }} path: dist/*.whl if-no-files-found: error if: ${{ env.skip_artifact_upload != 'true' }} merge_artifacts: needs: [python_sdist, macos_pyyaml, linux_pyyaml, windows_pyyaml] runs-on: ubuntu-24.04 steps: - name: merge all artifacts uses: actions/upload-artifact/merge@v4 with: name: dist-pyyaml-${{ needs.python_sdist.outputs.package_version }} delete-merged: true if: ${{ env.skip_artifact_upload != 'true' }} check: if: always() needs: - python_sdist - linux_pyyaml - macos_pyyaml - windows_pyyaml - merge_artifacts runs-on: ubuntu-latest steps: - name: Verify all previous jobs succeeded (provides a single check to sample for gating purposes) uses: re-actors/alls-green@release/v1 with: jobs: ${{ toJSON(needs) }} ...