Merge pull request #95 from lindera/bump #41
Workflow file for this run
This file contains hidden or 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: Release | |
| on: | |
| workflow_dispatch: | |
| push: | |
| tags: | |
| - "v*.*.*" | |
| permissions: | |
| contents: read | |
| jobs: | |
| format: | |
| name: Format | |
| strategy: | |
| matrix: | |
| platform: | |
| - runner: ubuntu-latest | |
| target: x86_64-unknown-linux-gnu | |
| toolchain: [stable] | |
| runs-on: ${{ matrix.platform.runner }} | |
| steps: | |
| - name: Run checkout | |
| uses: actions/checkout@v4 | |
| - name: Install toolchain | |
| uses: dtolnay/rust-toolchain@v1 | |
| with: | |
| toolchain: ${{ matrix.toolchain }} | |
| target: ${{ matrix.platform.target }} | |
| components: rustfmt, clippy | |
| - name: Check format | |
| run: cargo fmt --all -- --check | |
| test: | |
| name: Test | |
| needs: [format] | |
| strategy: | |
| matrix: | |
| platform: | |
| - runner: ubuntu-latest | |
| target: x86_64-unknown-linux-gnu | |
| - runner: macOS-latest | |
| target: x86_64-apple-darwin | |
| - runner: macOS-latest | |
| target: aarch64-apple-darwin | |
| - runner: windows-latest | |
| target: x86_64-pc-windows-msvc | |
| toolchain: [stable] | |
| runs-on: ${{ matrix.platform.runner }} | |
| steps: | |
| - name: Run checkout | |
| uses: actions/checkout@v4 | |
| - name: Install toolchain | |
| uses: dtolnay/rust-toolchain@v1 | |
| with: | |
| toolchain: ${{ matrix.toolchain }} | |
| target: ${{ matrix.platform.target }} | |
| components: rustfmt, clippy | |
| - name: Run test | |
| run: cargo test --target "${{ matrix.platform.target }}" --all-features | |
| linux: | |
| name: Linux | |
| needs: [test] | |
| strategy: | |
| matrix: | |
| platform: | |
| - runner: ubuntu-latest | |
| target: x86_64 | |
| toolchain: [stable] | |
| features: | |
| - value: "default" | |
| package_name: "lindera-python" | |
| package_description: "Python binding for Lindera (no embedded dictionaries)" | |
| - value: "embedded-cjk" | |
| package_name: "lindera-python-cjk" | |
| package_description: "Python binding for Lindera with CJK dictionaries (IPADIC, ko-dic, CC-CEDICT)" | |
| - value: "embedded-ipadic" | |
| package_name: "lindera-python-ipadic" | |
| package_description: "Python binding for Lindera with IPADIC dictionary" | |
| - value: "embedded-unidic" | |
| package_name: "lindera-python-unidic" | |
| package_description: "Python binding for Lindera with UniDic dictionary" | |
| - value: "embedded-ko-dic" | |
| package_name: "lindera-python-ko-dic" | |
| package_description: "Python binding for Lindera with ko-dic Korean dictionary" | |
| - value: "embedded-cc-cedict" | |
| package_name: "lindera-python-cc-cedict" | |
| package_description: "Python binding for Lindera with CC-CEDICT Chinese dictionary" | |
| runs-on: ${{ matrix.platform.runner }} | |
| steps: | |
| - name: Run checkout | |
| uses: actions/checkout@v4 | |
| - name: Setup Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: 3.x | |
| - name: Create package-specific pyproject.toml | |
| run: | | |
| # Work in a temporary directory | |
| mkdir -p build-${{ matrix.features.package_name }} | |
| cp -r . build-${{ matrix.features.package_name }}/ | |
| cd build-${{ matrix.features.package_name }} | |
| sed -i 's/^name = "lindera-python"/name = "${{ matrix.features.package_name }}"/' pyproject.toml | |
| sed -i 's/^description = ".*"/description = "${{ matrix.features.package_description }}"/' pyproject.toml | |
| - name: Build wheels | |
| uses: PyO3/maturin-action@v1 | |
| with: | |
| target: ${{ matrix.platform.target }} | |
| args: --release --out ../dist --find-interpreter --features=${{ matrix.features.value }} | |
| sccache: "false" | |
| manylinux: auto | |
| before-script-linux: "yum install openssl-devel devtoolset-10-libatomic-devel perl-IPC-Cmd -y" | |
| working-directory: build-${{ matrix.features.package_name }} | |
| - name: Upload wheels | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: wheels-${{ matrix.features.package_name }}-linux-${{ matrix.platform.target }}-${{ github.ref_name }} | |
| path: dist | |
| linux2: | |
| name: Linux2 | |
| needs: [test] | |
| strategy: | |
| matrix: | |
| platform: | |
| - runner: ubuntu-latest | |
| target: aarch64 | |
| toolchain: [stable] | |
| features: | |
| - value: "default" | |
| package_name: "lindera-python" | |
| package_description: "Python binding for Lindera (no embedded dictionaries)" | |
| - value: "embedded-cjk" | |
| package_name: "lindera-python-cjk" | |
| package_description: "Python binding for Lindera with CJK dictionaries (IPADIC, ko-dic, CC-CEDICT)" | |
| - value: "embedded-ipadic" | |
| package_name: "lindera-python-ipadic" | |
| package_description: "Python binding for Lindera with IPADIC dictionary" | |
| - value: "embedded-unidic" | |
| package_name: "lindera-python-unidic" | |
| package_description: "Python binding for Lindera with UniDic dictionary" | |
| - value: "embedded-ko-dic" | |
| package_name: "lindera-python-ko-dic" | |
| package_description: "Python binding for Lindera with ko-dic Korean dictionary" | |
| - value: "embedded-cc-cedict" | |
| package_name: "lindera-python-cc-cedict" | |
| package_description: "Python binding for Lindera with CC-CEDICT Chinese dictionary" | |
| runs-on: ${{ matrix.platform.runner }} | |
| steps: | |
| - name: Run checkout | |
| uses: actions/checkout@v4 | |
| - name: Setup Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: 3.x | |
| - name: Create package-specific pyproject.toml | |
| run: | | |
| # Work in a temporary directory | |
| mkdir -p build-${{ matrix.features.package_name }} | |
| cp -r . build-${{ matrix.features.package_name }}/ | |
| cd build-${{ matrix.features.package_name }} | |
| sed -i 's/^name = "lindera-python"/name = "${{ matrix.features.package_name }}"/' pyproject.toml | |
| sed -i 's/^description = ".*"/description = "${{ matrix.features.package_description }}"/' pyproject.toml | |
| - name: Build wheels | |
| uses: PyO3/maturin-action@v1 | |
| with: | |
| target: ${{ matrix.platform.target }} | |
| args: --release --out ../dist --find-interpreter --features=${{ matrix.features.value }} | |
| sccache: "false" | |
| manylinux: auto | |
| before-script-linux: "apt-get update && apt-get install libssl-dev pkg-config -y" | |
| working-directory: build-${{ matrix.features.package_name }} | |
| - name: Upload wheels | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: wheels-${{ matrix.features.package_name }}-linux-${{ matrix.platform.target }}-${{ github.ref_name }} | |
| path: dist | |
| windows: | |
| name: Windows | |
| needs: [test] | |
| strategy: | |
| matrix: | |
| platform: | |
| - runner: windows-latest | |
| target: x64 | |
| toolchain: [stable] | |
| features: | |
| - value: "default" | |
| package_name: "lindera-python" | |
| package_description: "Python binding for Lindera (no embedded dictionaries)" | |
| - value: "embedded-cjk" | |
| package_name: "lindera-python-cjk" | |
| package_description: "Python binding for Lindera with CJK dictionaries (IPADIC, ko-dic, CC-CEDICT)" | |
| - value: "embedded-ipadic" | |
| package_name: "lindera-python-ipadic" | |
| package_description: "Python binding for Lindera with IPADIC dictionary" | |
| - value: "embedded-unidic" | |
| package_name: "lindera-python-unidic" | |
| package_description: "Python binding for Lindera with UniDic dictionary" | |
| - value: "embedded-ko-dic" | |
| package_name: "lindera-python-ko-dic" | |
| package_description: "Python binding for Lindera with ko-dic Korean dictionary" | |
| - value: "embedded-cc-cedict" | |
| package_name: "lindera-python-cc-cedict" | |
| package_description: "Python binding for Lindera with CC-CEDICT Chinese dictionary" | |
| runs-on: ${{ matrix.platform.runner }} | |
| steps: | |
| - name: Run checkout | |
| uses: actions/checkout@v4 | |
| - name: Setup Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: 3.x | |
| architecture: ${{ matrix.platform.target }} | |
| - name: Create package-specific pyproject.toml | |
| run: | | |
| # Work in a temporary directory | |
| mkdir -p build-${{ matrix.features.package_name }} | |
| cp -r . build-${{ matrix.features.package_name }}/ | |
| cd build-${{ matrix.features.package_name }} | |
| sed -i 's/^name = "lindera-python"/name = "${{ matrix.features.package_name }}"/' pyproject.toml | |
| sed -i 's/^description = ".*"/description = "${{ matrix.features.package_description }}"/' pyproject.toml | |
| - name: Build wheels | |
| uses: PyO3/maturin-action@v1 | |
| with: | |
| target: ${{ matrix.platform.target }} | |
| args: --release --out ../dist --find-interpreter --features=${{ matrix.features.value }} | |
| sccache: "false" | |
| working-directory: build-${{ matrix.features.package_name }} | |
| - name: Upload wheels | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: wheels-${{ matrix.features.package_name }}-windows-${{ matrix.platform.target }}-${{ github.ref_name }} | |
| path: dist | |
| macos: | |
| name: MacOS | |
| needs: [test] | |
| strategy: | |
| matrix: | |
| platform: | |
| - runner: macos-latest | |
| target: x86_64 | |
| - runner: macos-latest | |
| target: aarch64 | |
| toolchain: [stable] | |
| features: | |
| - value: "default" | |
| package_name: "lindera-python" | |
| package_description: "Python binding for Lindera (no embedded dictionaries)" | |
| - value: "embedded-cjk" | |
| package_name: "lindera-python-cjk" | |
| package_description: "Python binding for Lindera with CJK dictionaries (IPADIC, ko-dic, CC-CEDICT)" | |
| - value: "embedded-ipadic" | |
| package_name: "lindera-python-ipadic" | |
| package_description: "Python binding for Lindera with IPADIC dictionary" | |
| - value: "embedded-unidic" | |
| package_name: "lindera-python-unidic" | |
| package_description: "Python binding for Lindera with UniDic dictionary" | |
| - value: "embedded-ko-dic" | |
| package_name: "lindera-python-ko-dic" | |
| package_description: "Python binding for Lindera with ko-dic Korean dictionary" | |
| - value: "embedded-cc-cedict" | |
| package_name: "lindera-python-cc-cedict" | |
| package_description: "Python binding for Lindera with CC-CEDICT Chinese dictionary" | |
| runs-on: ${{ matrix.platform.runner }} | |
| steps: | |
| - name: Run checkout | |
| uses: actions/checkout@v4 | |
| - name: Setup Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: 3.x | |
| - name: Create package-specific pyproject.toml | |
| run: | | |
| # Work in a temporary directory | |
| mkdir -p build-${{ matrix.features.package_name }} | |
| cp -r . build-${{ matrix.features.package_name }}/ | |
| cd build-${{ matrix.features.package_name }} | |
| sed -i 's/^name = "lindera-python"/name = "${{ matrix.features.package_name }}"/' pyproject.toml | |
| sed -i 's/^description = ".*"/description = "${{ matrix.features.package_description }}"/' pyproject.toml | |
| - name: Build wheels | |
| uses: PyO3/maturin-action@v1 | |
| with: | |
| target: ${{ matrix.platform.target }} | |
| args: --release --out ../dist --find-interpreter --features=${{ matrix.features.value }} | |
| sccache: "false" | |
| working-directory: build-${{ matrix.features.package_name }} | |
| - name: Upload wheels | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: wheels-${{ matrix.features.package_name }}-macos-${{ matrix.platform.target }}-${{ github.ref_name }} | |
| path: dist | |
| sdist: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Run checkout | |
| uses: actions/checkout@v4 | |
| - name: Build sdist | |
| uses: PyO3/maturin-action@v1 | |
| with: | |
| command: sdist | |
| args: --out dist | |
| - name: Upload sdist | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: wheels-sdist | |
| path: dist | |
| release: | |
| name: GitHub Release | |
| # needs: [linux, linux2, musllinux, windows, macos, sdist] | |
| needs: [linux, linux2, windows, macos, sdist] | |
| runs-on: ubuntu-latest | |
| if: ${{ startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' }} | |
| permissions: | |
| # Use to sign the release artifacts | |
| id-token: write | |
| # Used to upload release artifacts | |
| contents: write | |
| # Used to generate artifact attestation | |
| attestations: write | |
| steps: | |
| - name: Download build artifacts | |
| uses: actions/download-artifact@v4 | |
| - name: Generate artifact attestation | |
| uses: actions/attest-build-provenance@v2 | |
| with: | |
| subject-path: "wheels-*/*" | |
| - name: Create GitHub Release | |
| id: create_release | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| files: ./dist/* | |
| name: Release ${{ github.ref_name }} | |
| tag_name: ${{ github.ref_name }} | |
| draft: false | |
| prerelease: false | |
| generate_release_notes: true | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| publish-pypi: | |
| name: Publish to PyPI | |
| needs: [linux, linux2, windows, macos, sdist] | |
| runs-on: ubuntu-latest | |
| if: ${{ startsWith(github.ref, 'refs/tags/') }} | |
| permissions: | |
| id-token: write | |
| steps: | |
| - name: Download build artifacts | |
| uses: actions/download-artifact@v4 | |
| - name: Publish to PyPI | |
| uses: PyO3/maturin-action@v1 | |
| env: | |
| MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }} | |
| with: | |
| command: upload | |
| args: --non-interactive --skip-existing wheels-*/* | |
| publish-crates: | |
| name: Publish to crates.io | |
| needs: [release] | |
| strategy: | |
| matrix: | |
| platform: | |
| - runner: ubuntu-latest | |
| target: x86_64-unknown-linux-gnu | |
| toolchain: [stable] | |
| runs-on: ${{ matrix.platform.runner }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Install toolchain | |
| uses: dtolnay/rust-toolchain@v1 | |
| with: | |
| toolchain: ${{ matrix.toolchain }} | |
| components: rustfmt, clippy | |
| - name: Publish lindera-python | |
| run: | | |
| LINDERA_PY_VERSION=$(cargo metadata --no-deps --format-version=1 | jq -r '.packages[] | select(.name=="lindera-python") | .version') | |
| LINDERA_PY_VERSIONS=$(curl -s -XGET https://crates.io/api/v1/crates/lindera-python | jq -r 'select(.versions != null) | .versions[].num') | |
| if echo ${LINDERA_PY_VERSIONS} | grep ${LINDERA_PY_VERSION} >/dev/null; then | |
| echo "lindera-python ${LINDERA_PY_VERSION} has already published" | |
| else | |
| cargo publish | |
| fi | |
| env: | |
| CARGO_REGISTRY_TOKEN: ${{ secrets.CRATES_TOKEN }} |