name: Build on: push: branches: - main paths-ignore: - '**.md' - '.github/**' tags: - '**' workflow_dispatch: ~ pull_request: paths-ignore: - '**.md' - '.github/**' jobs: build-core: runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest, windows-latest] python-version: ['3.9', '3.10', '3.11', '3.12'] steps: - uses: actions/checkout@v4 with: submodules: true - name: Install Rust toolchain uses: actions-rs/toolchain@v1 with: target: ${{ matrix.target }} toolchain: nightly override: true - name: Set nightly as default Rust toolchain run: | rustup default nightly - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v3 with: python-version: ${{ matrix.python-version }} - name: Create and start virtual environment shell: bash run: | python3 -m venv venv if [[ ${{ matrix.os }} == windows* ]] then echo source venv/Scripts/activate else echo source venv/bin/activate fi > activate_env.sh - name: Install dependencies shell: bash run: | source activate_env.sh python -m pip install --upgrade pip python -m pip install maturin - name: Build shell: bash run: | source activate_env.sh maturin develop - name: Export install file shell: bash run: | source activate_env.sh maturin build --out ./dist - name: Upload Artifact uses: actions/upload-artifact@v3 with: name: python-genshin-artifact path: ./dist upload-core: runs-on: ubuntu-latest needs: [build-core] if: startsWith(github.ref, 'refs/tags/') steps: - uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v3 with: python-version: 3.11 - name: Install Twine run: | pip install twine - name: get dist artifacts uses: actions/download-artifact@v3 with: name: python-genshin-artifact path: dist - name: upload to pypi run: twine upload dist/* env: TWINE_USERNAME: __token__ TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}