name: Build on: push: branches: - main tags: - '**' pull_request: 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 cd python_genshin_artifact_core maturin develop - name: Export install file shell: bash run: | source activate_env.sh cd python_genshin_artifact_core maturin build --out ./dist - name: Upload Artifact uses: actions/upload-artifact@v3 with: name: genshin-artifact-core path: python_genshin_artifact_core/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: genshin-artifact-core path: dist - name: upload to pypi run: twine upload dist/* env: TWINE_USERNAME: __token__ TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }} build-artifact: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v3 with: python-version: 3.11 - name: Install Poetry and Twine run: | pip install poetry twine - name: Install dependencies run: poetry install - name: Build wheel run: poetry build - name: upload to pypi if: startsWith(github.ref, 'refs/tags/') run: twine upload dist/* env: TWINE_USERNAME: __token__ TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }} - name: upload to artifact if: github.ref == 'refs/heads/main' uses: actions/upload-artifact@v3 with: name: Python-Genshin-Artifact path: dist/*.whl