-
Notifications
You must be signed in to change notification settings - Fork 84
131 lines (123 loc) · 4.88 KB
/
rust.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
name: Rust
on:
push:
branches: [main, release/**]
pull_request:
defaults:
run:
shell: bash
jobs:
complete:
if: always()
needs: [fmt, rust-analyzer-compat, build-and-test, publish-dry-run]
runs-on: ubuntu-latest
steps:
- if: contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled')
run: exit 1
fmt:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- run: rustup update
- run: cargo fmt --all --check
rust-analyzer-compat:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- run: rustup update
- run: rustup +nightly component add rust-analyzer
- name: Check if rust-analyzer encounters any errors parsing project
run: rustup run nightly rust-analyzer analysis-stats . 2>&1 | (! grep '^\[ERROR')
build-and-test:
strategy:
fail-fast: false
matrix:
rust: [msrv, latest]
include:
- os: ubuntu-latest
target: x86_64-unknown-linux-gnu
- os: ubuntu-latest
target: aarch64-unknown-linux-gnu
- os: macos-latest
target: x86_64-apple-darwin
- os: macos-latest
target: aarch64-apple-darwin
- os: windows-latest-8-cores
target: x86_64-pc-windows-msvc
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v3
- uses: stellar/actions/rust-cache@main
- name: Use the minimum supported Rust version
if: matrix.rust == 'msrv'
run: |
msrv="$(cargo metadata --format-version 1 --no-deps | jq -r '.packages | map(.rust_version) | map(values) | min')"
rustup override set $msrv
rustup component add clippy --toolchain $msrv
- name: Error on warnings and clippy checks
# Only error on warnings and checks for the msrv, because new versions of
# Rust will frequently add new warnings and checks.
if: matrix.rust == 'msrv'
run: echo RUSTFLAGS='-Dwarnings -Dclippy::all -Dclippy::pedantic' >> $GITHUB_ENV
- run: rustup update
- run: cargo version
- run: rustup target add ${{ matrix.target }}
- run: rustup target add wasm32-unknown-unknown
- if: matrix.target == 'aarch64-unknown-linux-gnu'
run: sudo apt-get update && sudo apt-get -y install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
- run: cargo clippy --all-targets --target ${{ matrix.target }}
- run: make build-test
- name: Enable Docker Remote API on Localhost
shell: bash
run: |
sudo mkdir -p /etc/systemd/system/docker.service.d/
sudo cp ./.github/docker.override.conf /etc/systemd/system/docker.service.d/override.conf
sudo systemctl daemon-reload
sudo systemctl restart docker
- if: startsWith(matrix.target, 'x86_64')
# specify directories explicitly to avoid building the preflight library (otherwise it will fail with missing symbols)
run: |
for I in cmd/soroban-cli cmd/crates/* cmd/crates/soroban-test/tests/fixtures/test-wasms/hello_world ; do
cargo test --target ${{ matrix.target }} --manifest-path $I/Cargo.toml
done
publish-dry-run:
if: github.event_name == 'push' || startsWith(github.head_ref, 'release/')
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
target: x86_64-unknown-linux-gnu
cargo-hack-feature-options: --feature-powerset
- os: ubuntu-latest
target: aarch64-unknown-linux-gnu
cargo-hack-feature-options: --feature-powerset
- os: macos-latest
target: x86_64-apple-darwin
cargo-hack-feature-options: --feature-powerset
- os: macos-latest
target: aarch64-apple-darwin
cargo-hack-feature-options: --feature-powerset
# Windows builds notes:
#
# The different features that need testing are split over unique
# isolated builds for Windows, because there's a bug in Cargo [1] that
# causes builds of wasm-opt [2] to fail when run one after the other and
# attempting to clean up artifacts in between. The bug has been fixed,
# but will not make it into a stable release of Cargo until ~August
# 2023.
#
# [1]: https://github.com/rust-lang/cargo/pull/11442
# [2]: https://github.com/brson/wasm-opt-rs/issues/116
- os: windows-latest-8-cores
target: x86_64-pc-windows-msvc
cargo-hack-feature-options: ''
- os: windows-latest-8-cores
target: x86_64-pc-windows-msvc
cargo-hack-feature-options: --features opt --ignore-unknown-features
uses: stellar/actions/.github/workflows/rust-publish-dry-run-v2.yml@main
with:
crates: soroban-spec-tools soroban-spec-json soroban-spec-typescript soroban-test soroban-cli
runs-on: ${{ matrix.os }}
target: ${{ matrix.target }}
cargo-hack-feature-options: ${{ matrix.cargo-hack-feature-options }}