Version 3.3.1 #4
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Continuous Delivery | |
on: | |
workflow_dispatch: | |
release: | |
types: | |
- created | |
permissions: | |
contents: read | |
jobs: | |
pre_flight_check: | |
name: Preflight Checks | |
uses: ./.github/workflows/ci.yml | |
universal-wheel: | |
name: Build Universal Wheel | |
runs-on: ubuntu-latest | |
needs: | |
- pre_flight_check | |
steps: | |
- uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 | |
- name: Set up Python | |
uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1 | |
with: | |
python-version: '3.11' | |
- name: Update pip, setuptools, wheel, build and twine | |
run: | | |
python -m pip install --upgrade pip | |
python -m pip install setuptools wheel build | |
- name: Build Wheel | |
env: | |
CHARSET_NORMALIZER_USE_MYPYC: '0' | |
run: python -m build | |
- name: Upload artifacts | |
uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3 | |
with: | |
name: dist | |
path: dist | |
build-wheels: | |
name: Build wheels on ${{ matrix.os }} ${{ matrix.qemu }} | |
runs-on: ${{ matrix.os }}-latest | |
needs: pre_flight_check | |
strategy: | |
matrix: | |
os: [ ubuntu, windows, macos ] | |
qemu: [ '' ] | |
include: | |
# Split ubuntu job for the sake of speed-up | |
- os: ubuntu | |
qemu: aarch64 | |
- os: ubuntu | |
qemu: ppc64le | |
- os: ubuntu | |
qemu: s390x | |
steps: | |
- name: Checkout | |
uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 | |
with: | |
submodules: true | |
- name: Set up QEMU | |
if: ${{ matrix.qemu }} | |
uses: docker/setup-qemu-action@68827325e0b33c7199eb31dd4e31fbe9023e06e3 # v3.0.0 | |
with: | |
platforms: all | |
id: qemu | |
- name: Prepare emulation | |
run: | | |
if [[ -n "${{ matrix.qemu }}" ]]; then | |
# Build emulated architectures only if QEMU is set, | |
# use default "auto" otherwise | |
echo "CIBW_ARCHS_LINUX=${{ matrix.qemu }}" >> $GITHUB_ENV | |
fi | |
shell: bash | |
- name: Setup Python | |
uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1 | |
- name: Update pip, wheel, setuptools, build, twine | |
run: | | |
python -m pip install -U pip wheel setuptools build twine | |
- name: Build wheels | |
uses: pypa/cibuildwheel@fff9ec32ed25a9c576750c91e06b410ed0c15db7 # v2.16.2 | |
env: | |
#CIBW_BUILD_FRONTEND: "build" | |
CIBW_ARCHS_MACOS: x86_64 arm64 universal2 | |
CIBW_ENVIRONMENT: CHARSET_NORMALIZER_USE_MYPYC='1' | |
CIBW_BEFORE_BUILD: pip install -r build-requirements.txt | |
#CIBW_CONFIG_SETTINGS: "--build-option=--no-isolation" | |
CIBW_TEST_REQUIRES: pytest | |
CIBW_TEST_COMMAND: pytest -c {package} {package}/tests | |
CIBW_SKIP: pp* cp36* | |
- name: Upload artifacts | |
uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3 | |
with: | |
name: dist | |
path: ./wheelhouse/*.whl | |
checksum: | |
name: Compute hashes | |
runs-on: ubuntu-latest | |
needs: | |
- build-wheels | |
- universal-wheel | |
outputs: | |
hashes: ${{ steps.compute.outputs.hashes }} | |
steps: | |
- uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 | |
- name: Download distributions | |
uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2 | |
with: | |
name: dist | |
path: dist | |
- name: Collected dists | |
run: | | |
tree dist | |
- name: Generate hashes | |
id: compute # needs.checksum.outputs.hashes | |
working-directory: ./dist | |
run: echo "hashes=$(sha256sum * | base64 -w0)" >> $GITHUB_OUTPUT | |
provenance: | |
needs: checksum | |
uses: slsa-framework/slsa-github-generator/.github/workflows/[email protected] | |
permissions: | |
actions: read | |
id-token: write | |
contents: write | |
with: | |
base64-subjects: ${{ needs.checksum.outputs.hashes }} | |
upload-assets: true | |
deploy: | |
name: 🚀 Deploy to PyPi | |
runs-on: ubuntu-latest | |
if: startsWith(github.ref, 'refs/tags/') | |
permissions: | |
id-token: write | |
contents: write | |
needs: provenance | |
environment: | |
name: pypi | |
url: https://pypi.org/project/charset-normalizer/ | |
steps: | |
- uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 | |
- name: Download distributions | |
uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2 | |
with: | |
name: dist | |
path: dist | |
- name: Collected dists | |
run: | | |
tree dist | |
- name: Publish package distributions to PyPI | |
uses: pypa/gh-action-pypi-publish@b7f401de30cb6434a1e19f805ff006643653240e # release/v1 | |
- name: Upload dists to GitHub Release | |
env: | |
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" | |
run: | | |
gh release upload ${{ github.ref_name }} dist/* --repo ${{ github.repository }} |