Release #21
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: | |
| schedule: | |
| # 9 AM UTC on every Monday | |
| - cron: "0 9 * * Mon" | |
| workflow_dispatch: | |
| inputs: | |
| pre-release: | |
| type: boolean | |
| description: Mark "Pre-Release" | |
| required: false | |
| default: true | |
| permissions: | |
| contents: write | |
| env: | |
| X86_64_PC_WINDOWS_MSVC_OPENSSL_LIB_DIR: C:\Program Files\OpenSSL\lib\VC\x64\MD | |
| X86_64_PC_WINDOWS_MSVC_OPENSSL_INCLUDE_DIR: C:\Program Files\OpenSSL\include | |
| jobs: | |
| build: | |
| runs-on: ${{ matrix.os }} | |
| # Disable this scheduled job when running on a fork. | |
| if: ${{ github.repository == 'RustPython/RustPython' || github.event_name != 'schedule' }} | |
| strategy: | |
| matrix: | |
| include: | |
| - os: ubuntu-latest | |
| target: x86_64-unknown-linux-gnu | |
| - os: macos-latest | |
| target: aarch64-apple-darwin | |
| - os: windows-2025 | |
| target: x86_64-pc-windows-msvc | |
| # - os: ubuntu-latest | |
| # target: i686-unknown-linux-gnu | |
| # - os: ubuntu-latest | |
| # target: aarch64-unknown-linux-gnu | |
| # - os: ubuntu-latest | |
| # target: armv7-unknown-linux-gnueabi | |
| # - os: ubuntu-latest | |
| # target: s390x-unknown-linux-gnu | |
| # - os: ubuntu-latest | |
| # target: powerpc64le-unknown-linux-gnu | |
| # - os: macos-latest | |
| # target: x86_64-apple-darwin | |
| # - os: windows-2025 | |
| # target: i686-pc-windows-msvc | |
| # - os: windows-2025 | |
| # target: aarch64-pc-windows-msvc | |
| fail-fast: false | |
| steps: | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| with: | |
| persist-credentials: false | |
| - uses: dtolnay/rust-toolchain@stable | |
| with: | |
| target: ${{ matrix.target }} | |
| - name: Install macOS dependencies | |
| uses: ./.github/actions/install-macos-deps | |
| with: | |
| autoconf: true | |
| automake: true | |
| libtool: true | |
| - name: Build RustPython | |
| run: cargo build --release --target=${{ matrix.target }} --verbose --no-default-features --features stdlib,stdio,importlib,encodings,sqlite,host_env,ssl-rustls,threading,jit | |
| - name: Rename Binary | |
| run: cp target/${{ matrix.target }}/release/rustpython target/rustpython-release-${{ runner.os }}-${{ matrix.target }} | |
| if: runner.os != 'Windows' | |
| - name: Rename Binary | |
| run: cp target/${{ matrix.target }}/release/rustpython.exe target/rustpython-release-${{ runner.os }}-${{ matrix.target }}.exe | |
| if: runner.os == 'Windows' | |
| - name: Upload Binary Artifacts | |
| uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0 | |
| with: | |
| name: rustpython-release-${{ runner.os }}-${{ matrix.target }} | |
| path: target/rustpython-release-${{ runner.os }}-${{ matrix.target }}* | |
| build-wasm: | |
| runs-on: ubuntu-latest | |
| # Disable this scheduled job when running on a fork. | |
| if: ${{ github.repository == 'RustPython/RustPython' || github.event_name != 'schedule' }} | |
| steps: | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| with: | |
| persist-credentials: false | |
| - uses: dtolnay/rust-toolchain@stable | |
| with: | |
| targets: wasm32-wasip1 | |
| - name: Build RustPython | |
| run: cargo build --target wasm32-wasip1 --no-default-features --features freeze-stdlib,stdlib --release | |
| - name: Rename Binary | |
| run: cp target/wasm32-wasip1/release/rustpython.wasm target/rustpython-release-wasm32-wasip1.wasm | |
| - name: Upload Binary Artifacts | |
| uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0 | |
| with: | |
| name: rustpython-release-wasm32-wasip1 | |
| path: target/rustpython-release-wasm32-wasip1.wasm | |
| - name: install wasm-pack | |
| run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh | |
| - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 | |
| with: | |
| package-manager-cache: false | |
| - uses: mwilliamson/setup-wabt-action@v3 | |
| with: { wabt-version: "1.0.30" } | |
| - name: build demo | |
| run: | | |
| npm install | |
| npm run dist | |
| env: | |
| NODE_OPTIONS: "--openssl-legacy-provider" | |
| working-directory: ./wasm/demo | |
| - name: build notebook demo | |
| run: | | |
| npm install | |
| npm run dist | |
| mv dist ../demo/dist/notebook | |
| env: | |
| NODE_OPTIONS: "--openssl-legacy-provider" | |
| working-directory: ./wasm/notebook | |
| - name: Deploy demo to Github Pages | |
| if: ${{ github.repository == 'RustPython/RustPython' }} | |
| uses: peaceiris/actions-gh-pages@v4 | |
| with: | |
| deploy_key: ${{ secrets.ACTIONS_DEMO_DEPLOY_KEY }} | |
| publish_dir: ./wasm/demo/dist | |
| external_repository: RustPython/demo | |
| publish_branch: master | |
| release: | |
| runs-on: ubuntu-latest | |
| # Disable this scheduled job when running on a fork. | |
| if: ${{ github.repository == 'RustPython/RustPython' || github.event_name != 'schedule' }} | |
| needs: [build, build-wasm] | |
| steps: | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| with: | |
| persist-credentials: false | |
| - name: Download Binary Artifacts | |
| uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 | |
| with: | |
| path: bin | |
| pattern: rustpython-* | |
| merge-multiple: true | |
| - name: Create Lib Archive | |
| run: zip -r bin/rustpython-lib.zip Lib/ | |
| - name: List Binaries | |
| run: | | |
| ls -lah bin/ | |
| file bin/* | |
| - name: Create Release | |
| run: | | |
| if [[ "${PRE_RELEASE_INPUT}" == "false" ]]; then | |
| RELEASE_TYPE_NAME=Release | |
| PRERELEASE_ARG= | |
| else | |
| RELEASE_TYPE_NAME=Pre-Release | |
| PRERELEASE_ARG=--prerelease | |
| fi | |
| today=$(date '+%Y-%m-%d') | |
| gh release create "$today-$tag-$run" \ | |
| --repo="$GITHUB_REPOSITORY" \ | |
| --title="RustPython $RELEASE_TYPE_NAME $today-$tag #$run" \ | |
| --target="$tag" \ | |
| --notes "⚠️ **Important**: To run RustPython, you must download both the binary for your platform AND the \`rustpython-lib.zip\` archive. Extract the Lib directory from the archive to the same location as the binary, or set the \`RUSTPYTHONPATH\` environment variable to point to the Lib directory." \ | |
| --generate-notes \ | |
| $PRERELEASE_ARG \ | |
| bin/rustpython-release-* | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| tag: ${{ github.ref_name }} | |
| run: ${{ github.run_number }} | |
| PRE_RELEASE_INPUT: ${{ github.event.inputs.pre-release }} |