forked from argotorg/fe
-
Notifications
You must be signed in to change notification settings - Fork 0
131 lines (123 loc) · 4.08 KB
/
Copy pathmain.yml
File metadata and controls
131 lines (123 loc) · 4.08 KB
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: CI
on:
push:
branches: [master]
tags:
- v*
pull_request:
env:
CARGO_TERM_COLOR: always
CARGO_INCREMENTAL: 0
RUST_BACKTRACE: full
SOLC_VERSION: v0.8.30
jobs:
lint:
runs-on: ubuntu-latest
env:
RUSTFLAGS: "-D warnings"
steps:
- uses: actions/checkout@v5
- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y libboost-all-dev
- name: Install rust
uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
components: rustfmt, clippy
- name: Cache Dependencies
uses: Swatinem/rust-cache@v2
- name: Validate release notes entry
run: ./newsfragments/validate_files.py
- name: Lint with rustfmt
run: cargo fmt --all -- --check
- name: Lint with clippy
run: cargo clippy --workspace --all-targets --all-features -- -D clippy::all
test:
# Build & Test runs on all platforms
runs-on: ${{ matrix.os }}
strategy:
matrix:
include:
- os: ubuntu-latest
- os: macOS-latest
steps:
- uses: actions/checkout@v5
- name: Install rust
uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
- name: Cache solc
id: solc-cache
uses: actions/cache@v4
with:
path: ${{ runner.temp }}/solc-${{ env.SOLC_VERSION }}
key: solc-${{ runner.os }}-${{ env.SOLC_VERSION }}
- name: Download solc
if: steps.solc-cache.outputs.cache-hit != 'true'
run: |
set -euo pipefail
if [ "${{ runner.os }}" = "Linux" ]; then
url="https://github.com/ethereum/solidity/releases/download/${SOLC_VERSION}/solc-static-linux"
elif [ "${{ runner.os }}" = "macOS" ]; then
url="https://github.com/ethereum/solidity/releases/download/${SOLC_VERSION}/solc-macos"
else
echo "Unsupported OS: ${{ runner.os }}"
exit 1
fi
curl -Ls "$url" -o "$RUNNER_TEMP/solc-${SOLC_VERSION}"
chmod +x "$RUNNER_TEMP/solc-${SOLC_VERSION}"
- name: Cache Dependencies
uses: Swatinem/rust-cache@v2
- name: Build
run: cargo test --workspace --all-features --no-run --locked --exclude fe-language-server --exclude fe-bench
- name: Run tests
env:
FE_SOLC_PATH: ${{ runner.temp }}/solc-${{ env.SOLC_VERSION }}
run: cargo test --workspace --all-features --verbose --exclude fe-language-server --exclude fe-bench
wasm-wasi-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Install rust
uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
- name: Install WASM targets
run: |
rustup target add wasm32-unknown-unknown
rustup target add wasm32-wasip1
- name: Cache Dependencies
uses: Swatinem/rust-cache@v2
- name: Check core crates for wasm32-unknown-unknown
run: cargo check -p fe-common -p fe-parser -p fe-hir --target wasm32-unknown-unknown
- name: Check filesystem crates for wasm32-wasip1
run: cargo check -p fe-driver -p fe-resolver -p fe --target wasm32-wasip1
release:
# Only run this when we push a tag
if: startsWith(github.ref, 'refs/tags/')
runs-on: ${{ matrix.os }}
needs: [lint, test, wasm-wasi-check]
strategy:
matrix:
include:
- os: ubuntu-latest
BIN_FILE: fe_amd64
- os: macOS-latest
BIN_FILE: fe_mac
steps:
- uses: actions/checkout@v5
- name: Install rust
uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
- name: Build
run: cargo build --all-features --release && strip target/release/fe && mv target/release/fe target/release/${{ matrix.BIN_FILE }}
- name: Release
uses: softprops/action-gh-release@v1
with:
files: target/release/${{ matrix.BIN_FILE }}
prerelease: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}