name: Release on: push: tags: ["v*"] jobs: linux: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: actions/setup-python@v2 with: python-version: 3.9 - name: Build Wheels uses: messense/maturin-action@v1 with: manylinux: auto command: build args: --profile release-lto --out dist - name: Upload wheels uses: actions/upload-artifact@v2 with: name: dist path: dist macos: runs-on: macos-latest steps: - uses: actions/checkout@v2 - uses: actions/setup-python@v2 with: python-version: 3.9 architecture: x64 - name: Install Rust toolchain uses: actions-rs/toolchain@v1 with: toolchain: stable profile: minimal default: true - name: Build wheels - x86_64 uses: messense/maturin-action@v1 with: target: x86_64 args: --profile release-lto --out dist - name: Build wheels - universal2 uses: messense/maturin-action@v1 with: args: --profile release-lto --universal2 --out dist - name: Upload wheels uses: actions/upload-artifact@v2 with: name: dist path: dist windows: runs-on: windows-latest strategy: matrix: target: [x64, x86] steps: - uses: actions/checkout@v2 - uses: actions/setup-python@v2 with: python-version: 3.9 architecture: ${{ matrix.target }} - name: Install Rust toolchain uses: actions-rs/toolchain@v1 with: toolchain: stable profile: minimal default: true - name: Build wheels uses: messense/maturin-action@v1 with: target: ${{ matrix.target }} args: --profile release-lto --out dist - name: Upload wheels uses: actions/upload-artifact@v2 with: name: dist path: dist deploy-pypi: name: Publish wheels to PyPI and TestPyPI runs-on: ubuntu-latest needs: [linux, windows, macos] steps: - uses: actions/download-artifact@v2 with: name: dist path: dist - uses: actions/setup-python@v2 with: python-version: 3.9 - name: Publish to PyPi env: TWINE_USERNAME: __token__ TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }} run: | pip install --upgrade twine twine upload --skip-existing dist/* release-crates-io: name: Release crates.io runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: stable override: true - uses: katyo/publish-crates@v1 with: registry-token: ${{ secrets.CRATES_IO_TOKEN }}