name: "[flake8-to-ruff] Release" on: workflow_dispatch concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true env: PACKAGE_NAME: flake8-to-ruff CRATE_NAME: flake8_to_ruff PYTHON_VERSION: "3.11" CARGO_INCREMENTAL: 0 CARGO_NET_RETRY: 10 CARGO_TERM_COLOR: always RUSTUP_MAX_RETRIES: 10 jobs: macos-x86_64: runs-on: macos-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-python@v4 with: python-version: ${{ env.PYTHON_VERSION }} architecture: x64 - name: "Install Rust toolchain" run: rustup show - name: "Build wheels - x86_64" uses: PyO3/maturin-action@v1 with: target: x86_64 args: --release --out dist --sdist -m ./${{ env.CRATE_NAME }}/Cargo.toml - name: "Install built wheel - x86_64" run: | pip install dist/${{ env.CRATE_NAME }}-*.whl --force-reinstall - name: "Upload wheels" uses: actions/upload-artifact@v3 with: name: wheels path: dist macos-universal: runs-on: macos-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-python@v4 with: python-version: ${{ env.PYTHON_VERSION }} architecture: x64 - name: "Install Rust toolchain" run: rustup show - name: "Build wheels - universal2" uses: PyO3/maturin-action@v1 with: args: --release --target universal2-apple-darwin --out dist -m ./${{ env.CRATE_NAME }}/Cargo.toml - name: "Install built wheel - universal2" run: | pip install dist/${{ env.CRATE_NAME }}-*universal2.whl --force-reinstall - name: "Upload wheels" uses: actions/upload-artifact@v3 with: name: wheels path: dist windows: runs-on: windows-latest strategy: matrix: target: [x64, x86] steps: - uses: actions/checkout@v3 - uses: actions/setup-python@v4 with: python-version: ${{ env.PYTHON_VERSION }} architecture: ${{ matrix.target }} - name: "Install Rust toolchain" run: rustup show - name: "Build wheels" uses: PyO3/maturin-action@v1 with: target: ${{ matrix.target }} args: --release --out dist -m ./${{ env.CRATE_NAME }}/Cargo.toml - name: "Install built wheel" shell: bash run: | python -m pip install dist/${{ env.CRATE_NAME }}-*.whl --force-reinstall - name: "Upload wheels" uses: actions/upload-artifact@v3 with: name: wheels path: dist linux: runs-on: ubuntu-latest strategy: matrix: target: [x86_64, i686] steps: - uses: actions/checkout@v3 - uses: actions/setup-python@v4 with: python-version: ${{ env.PYTHON_VERSION }} architecture: x64 - name: "Build wheels" uses: PyO3/maturin-action@v1 with: target: ${{ matrix.target }} manylinux: auto args: --release --out dist -m ./${{ env.CRATE_NAME }}/Cargo.toml - name: "Install built wheel" if: matrix.target == 'x86_64' run: | pip install dist/${{ env.CRATE_NAME }}-*.whl --force-reinstall - name: "Upload wheels" uses: actions/upload-artifact@v3 with: name: wheels path: dist linux-cross: runs-on: ubuntu-latest strategy: matrix: target: [aarch64, armv7, s390x, ppc64le, ppc64] steps: - uses: actions/checkout@v3 - uses: actions/setup-python@v4 with: python-version: ${{ env.PYTHON_VERSION }} - name: "Build wheels" uses: PyO3/maturin-action@v1 with: target: ${{ matrix.target }} manylinux: auto args: --no-default-features --release --out dist -m ./${{ env.CRATE_NAME }}/Cargo.toml - uses: uraimo/run-on-arch-action@v2 if: matrix.target != 'ppc64' name: Install built wheel with: arch: ${{ matrix.target }} distro: ubuntu20.04 githubToken: ${{ github.token }} install: | apt-get update apt-get install -y --no-install-recommends python3 python3-pip pip3 install -U pip run: | pip3 install ${{ env.PACKAGE_NAME }} --no-index --find-links dist/ --force-reinstall - name: "Upload wheels" uses: actions/upload-artifact@v3 with: name: wheels path: dist musllinux: runs-on: ubuntu-latest strategy: matrix: target: - x86_64-unknown-linux-musl - i686-unknown-linux-musl steps: - uses: actions/checkout@v3 - uses: actions/setup-python@v4 with: python-version: ${{ env.PYTHON_VERSION }} architecture: x64 - name: "Build wheels" uses: PyO3/maturin-action@v1 with: target: ${{ matrix.target }} manylinux: musllinux_1_2 args: --release --out dist -m ./${{ env.CRATE_NAME }}/Cargo.toml - name: "Install built wheel" if: matrix.target == 'x86_64-unknown-linux-musl' uses: addnab/docker-run-action@v3 with: image: alpine:latest options: -v ${{ github.workspace }}:/io -w /io run: | apk add py3-pip pip3 install ${{ env.PACKAGE_NAME }} --no-index --find-links /io/dist/ --force-reinstall - name: "Upload wheels" uses: actions/upload-artifact@v3 with: name: wheels path: dist musllinux-cross: runs-on: ubuntu-latest strategy: matrix: platform: - target: aarch64-unknown-linux-musl arch: aarch64 - target: armv7-unknown-linux-musleabihf arch: armv7 steps: - uses: actions/checkout@v3 - uses: actions/setup-python@v4 with: python-version: ${{ env.PYTHON_VERSION }} - name: "Build wheels" uses: PyO3/maturin-action@v1 with: target: ${{ matrix.platform.target }} manylinux: musllinux_1_2 args: --release --out dist -m ./${{ env.CRATE_NAME }}/Cargo.toml - uses: uraimo/run-on-arch-action@v2 name: Install built wheel with: arch: ${{ matrix.platform.arch }} distro: alpine_latest githubToken: ${{ github.token }} install: | apk add py3-pip run: | pip3 install ${{ env.PACKAGE_NAME }} --no-index --find-links dist/ --force-reinstall - name: "Upload wheels" uses: actions/upload-artifact@v3 with: name: wheels path: dist release: name: Release runs-on: ubuntu-latest needs: - macos-universal - macos-x86_64 - windows - linux - linux-cross - musllinux - musllinux-cross steps: - uses: actions/download-artifact@v3 with: name: wheels - uses: actions/setup-python@v4 - name: "Publish to PyPi" env: TWINE_USERNAME: __token__ TWINE_PASSWORD: ${{ secrets.FLAKE8_TO_RUFF_TOKEN }} run: | pip install --upgrade twine twine upload --skip-existing *