1+ on :
2+ push :
3+ branches : [main]
4+
5+ name : Release
6+
7+ permissions :
8+ contents : write
9+
10+ env :
11+ CARGO_ARGS : --no-default-features --features stdlib,zlib,importlib,encodings,sqlite,ssl
12+
13+ jobs :
14+ build :
15+ runs-on : ${{ matrix.platform.runner }}
16+ strategy :
17+ matrix :
18+ platform :
19+ - runner : ubuntu-latest
20+ target : x86_64-unknown-linux-gnu
21+ # - runner: ubuntu-latest
22+ # target: i686-unknown-linux-gnu
23+ # - runner: ubuntu-latest
24+ # target: aarch64-unknown-linux-gnu
25+ # - runner: ubuntu-latest
26+ # target: armv7-unknown-linux-gnueabi
27+ # - runner: ubuntu-latest
28+ # target: s390x-unknown-linux-gnu
29+ # - runner: ubuntu-latest
30+ # target: powerpc64le-unknown-linux-gnu
31+ - runner : macos-latest
32+ target : aarch64-apple-darwin
33+ # - runner: macos-latest
34+ # target: x86_64-apple-darwin
35+ - runner : windows-latest
36+ target : x86_64-pc-windows-msvc
37+ # - runner: windows-latest
38+ # target: i686-pc-windows-msvc
39+ # - runner: windows-latest
40+ # target: aarch64-pc-windows-msvc
41+ fail-fast : false
42+ steps :
43+ - uses : actions/checkout@v4
44+ - uses : dtolnay/rust-toolchain@stable
45+
46+ - name : Set up Environment
47+ shell : bash
48+ run : rustup target add ${{ matrix.platform.target }}
49+ - name : Set up Windows Environment
50+ shell : bash
51+ run : |
52+ cargo install --target-dir=target -v cargo-vcpkg
53+ cargo vcpkg -v build
54+ if : runner.os == 'Windows'
55+ - name : Set up MacOS Environment
56+ run : brew install autoconf automake libtool
57+ if : runner.os == 'macOS'
58+
59+ - name : Build RustPython
60+ run : cargo build --release --target=${{ matrix.platform.target }} --verbose --features=threading ${{ env.CARGO_ARGS }}
61+ if : runner.os == 'macOS'
62+ - name : Build RustPython
63+ run : cargo build --release --target=${{ matrix.platform.target }} --verbose --features=threading ${{ env.CARGO_ARGS }},jit
64+ if : runner.os != 'macOS'
65+
66+ - name : Rename Binary
67+ run : cp target/${{ matrix.platform.target }}/release/rustpython target/rustpython-release-${{ runner.os }}-${{ matrix.platform.target }}
68+ if : runner.os != 'Windows'
69+ - name : Rename Binary
70+ run : cp target/${{ matrix.platform.target }}/release/rustpython.exe target/rustpython-release-${{ runner.os }}-${{ matrix.platform.target }}.exe
71+ if : runner.os == 'Windows'
72+
73+ - name : Upload Binary Artifacts
74+ uses : actions/upload-artifact@v4
75+ with :
76+ name : rustpython-release-${{ runner.os }}-${{ matrix.platform.target }}
77+ path : target/rustpython-release-${{ runner.os }}-${{ matrix.platform.target }}*
78+
79+ release :
80+ runs-on : ubuntu-latest
81+ needs : build
82+ steps :
83+ - name : Download Binary Artifacts
84+ uses : actions/download-artifact@v4
85+ with :
86+ path : bin
87+ pattern : rustpython-release-*
88+ merge-multiple : true
89+
90+ - name : List Binaries
91+ run : |
92+ ls -lah bin/
93+ file bin/*
94+ - name : Create Release
95+ env :
96+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
97+ tag : ${{ github.ref_name }}
98+ run : ${{ github.run_number }}
99+ run : |
100+ today=$(date '+%Y-%m-%d')
101+ gh release create "$today-$tag-$run" \
102+ --repo="$GITHUB_REPOSITORY" \
103+ --title="RustPython Release $today-$tag #$run" \
104+ --target="$tag" \
105+ --generate-notes \
106+ bin/rustpython-release-*
0 commit comments