Release #7
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: | |
CARGO_ARGS: --no-default-features --features stdlib,importlib,encodings,sqlite,ssl | |
jobs: | |
build: | |
runs-on: ${{ matrix.platform.runner }} | |
strategy: | |
matrix: | |
platform: | |
- runner: ubuntu-latest | |
target: x86_64-unknown-linux-gnu | |
# - runner: ubuntu-latest | |
# target: i686-unknown-linux-gnu | |
# - runner: ubuntu-latest | |
# target: aarch64-unknown-linux-gnu | |
# - runner: ubuntu-latest | |
# target: armv7-unknown-linux-gnueabi | |
# - runner: ubuntu-latest | |
# target: s390x-unknown-linux-gnu | |
# - runner: ubuntu-latest | |
# target: powerpc64le-unknown-linux-gnu | |
- runner: macos-latest | |
target: aarch64-apple-darwin | |
# - runner: macos-latest | |
# target: x86_64-apple-darwin | |
- runner: windows-latest | |
target: x86_64-pc-windows-msvc | |
# - runner: windows-latest | |
# target: i686-pc-windows-msvc | |
# - runner: windows-latest | |
# target: aarch64-pc-windows-msvc | |
fail-fast: false | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@stable | |
- name: Set up Environment | |
shell: bash | |
run: rustup target add ${{ matrix.platform.target }} | |
- name: Set up Windows Environment | |
shell: bash | |
run: | | |
cargo install --target-dir=target -v cargo-vcpkg | |
cargo vcpkg -v build | |
if: runner.os == 'Windows' | |
- name: Set up MacOS Environment | |
run: brew install autoconf automake libtool | |
if: runner.os == 'macOS' | |
- name: Build RustPython | |
run: cargo build --release --target=${{ matrix.platform.target }} --verbose --features=threading ${{ env.CARGO_ARGS }} | |
if: runner.os == 'macOS' | |
- name: Build RustPython | |
run: cargo build --release --target=${{ matrix.platform.target }} --verbose --features=threading ${{ env.CARGO_ARGS }},jit | |
if: runner.os != 'macOS' | |
- name: Rename Binary | |
run: cp target/${{ matrix.platform.target }}/release/rustpython target/rustpython-release-${{ runner.os }}-${{ matrix.platform.target }} | |
if: runner.os != 'Windows' | |
- name: Rename Binary | |
run: cp target/${{ matrix.platform.target }}/release/rustpython.exe target/rustpython-release-${{ runner.os }}-${{ matrix.platform.target }}.exe | |
if: runner.os == 'Windows' | |
- name: Upload Binary Artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: rustpython-release-${{ runner.os }}-${{ matrix.platform.target }} | |
path: target/rustpython-release-${{ runner.os }}-${{ matrix.platform.target }}* | |
build-wasm: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@stable | |
- name: Set up Environment | |
shell: bash | |
run: rustup target add 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@v4 | |
with: | |
name: rustpython-release-wasm32-wasip1 | |
path: target/rustpython-release-wasm32-wasip1.wasm | |
release: | |
runs-on: ubuntu-latest | |
needs: [build, build-wasm] | |
steps: | |
- name: Download Binary Artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
path: bin | |
pattern: rustpython-release-* | |
merge-multiple: true | |
- name: List Binaries | |
run: | | |
ls -lah bin/ | |
file bin/* | |
- name: Create Release | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
tag: ${{ github.ref_name }} | |
run: ${{ github.run_number }} | |
run: | | |
if [[ "${{ github.event.inputs.pre-release }}" == "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" \ | |
--generate-notes \ | |
$PRERELEASE_ARG \ | |
bin/rustpython-release-* |