|
16 | 16 |
|
17 | 17 | steps: |
18 | 18 | - uses: actions/checkout@v4 |
19 | | - - name: Build |
20 | | - run: cargo build --verbose |
21 | | - - name: Run tests |
22 | | - run: cargo test --verbose |
| 19 | + |
| 20 | + - name: Install Cross Compilation Targets |
| 21 | + run: | |
| 22 | + rustup target add x86_64-unknown-linux-gnu |
| 23 | + rustup target add aarch64-unknown-linux-gnu |
| 24 | + rustup target add x86_64-apple-darwin |
| 25 | + rustup target add aarch64-apple-darwin |
| 26 | + rustup target add x86_64-pc-windows-gnu |
| 27 | + rustup target add aarch64-pc-windows-msvc |
| 28 | +
|
| 29 | + - name: Build Binaries |
| 30 | + run: | |
| 31 | + version="${{ github.event.inputs.version }}" |
| 32 | + [ -z "$version" ] && version="latest" |
| 33 | + mkdir -p bin |
| 34 | + architectures=("x86_64" "aarch64") |
| 35 | +
|
| 36 | + for arch in "${architectures[@]}"; do |
| 37 | + cargo build --release --target x86_64-unknown-linux-gnu |
| 38 | + mv target/x86_64-unknown-linux-gnu/release/my_rust_program bin/my_rust_program-$version-linux-$arch |
| 39 | +
|
| 40 | + cargo build --release --target aarch64-unknown-linux-gnu |
| 41 | + mv target/aarch64-unknown-linux-gnu/release/my_rust_program bin/my_rust_program-$version-linux-$arch |
| 42 | +
|
| 43 | + cargo build --release --target x86_64-apple-darwin |
| 44 | + mv target/x86_64-apple-darwin/release/my_rust_program bin/my_rust_program-$version-darwin-$arch |
| 45 | +
|
| 46 | + cargo build --release --target aarch64-apple-darwin |
| 47 | + mv target/aarch64-apple-darwin/release/my_rust_program bin/my_rust_program-$version-darwin-$arch |
| 48 | +
|
| 49 | + cargo build --release --target x86_64-pc-windows-gnu |
| 50 | + mv target/x86_64-pc-windows-gnu/release/my_rust_program.exe bin/my_rust_program-$version-windows-$arch.exe |
| 51 | + done |
| 52 | +
|
| 53 | + echo "ARTIFACT_NAME=my_rust_program-$(date +'%d.%m.%Y')" >> $GITHUB_ENV |
| 54 | +
|
| 55 | + - name: Upload Binaries |
| 56 | + uses: actions/upload-artifact@v4 |
| 57 | + with: |
| 58 | + name: ${{ env.ARTIFACT_NAME }} |
| 59 | + path: bin/ |
0 commit comments