-
Notifications
You must be signed in to change notification settings - Fork 16
173 lines (150 loc) · 5.23 KB
/
ci.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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
name: CI
on:
pull_request: # trigger on pull requests
push:
branches: # array of glob patterns matching against refs/heads. Optional; defaults to all
- main
env:
# Could, potentially automatically parse
# the bin name, but let's do it automatically for now.
ARTIFACT_BIN: cbsh
ARTIFACT_BIN_WINDOWS: cbsh.exe
# Space separated paths to include in the archive.
# Start relative paths with a dot if you don't want
# paths to be preserved. Use "/" as a delimiter.
ARTIFACT_ADDS: README.md LICENSE LICENSE_AGREEMENT NOTICES
jobs:
build:
name: Build
runs-on: ${{ matrix.os }}
strategy:
matrix:
target: [ x86_64-unknown-linux-gnu, aarch64-unknown-linux-gnu, x86_64-apple-darwin, aarch64-apple-darwin, x86_64-pc-windows-msvc ]
include:
- target: x86_64-unknown-linux-gnu
os: ubuntu-22.04
- target: aarch64-unknown-linux-gnu
os: ubuntu-22.04
- target: aarch64-apple-darwin
os: macos-latest
- target: x86_64-apple-darwin
os: macos-latest
- target: x86_64-pc-windows-msvc
os: windows-latest
steps:
- uses: ilammy/setup-nasm@v1
- uses: actions/checkout@v3
- name: Update Rust Toolchain Target
run: |
echo "targets = ['${{matrix.target}}']" >> rust-toolchain.toml
- name: Setup Rust toolchain and cache
uses: actions-rust-lang/[email protected]
- name: Install aarch64-linux gcc
run: sudo apt-get update && sudo apt-get install gcc-aarch64-linux-gnu -y
if: matrix.target == 'aarch64-unknown-linux-gnu'
- name: Build
uses: actions-rs/cargo@v1
env:
CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER: 'aarch64-linux-gnu-gcc'
with:
command: build
args: --verbose --target ${{ matrix.target }} --features static-link-openssl
if: matrix.os == 'ubuntu-22.04'
- name: Build
uses: actions-rs/cargo@v1
with:
command: build
args: --verbose --target ${{ matrix.target }}
if: matrix.os == 'macos-latest'
- name: Build
uses: actions-rs/cargo@v1
with:
command: build
# We build windows as a release build as debug builds are stack overflowing on startup.
args: --verbose --release --target ${{ matrix.target }}
env:
VCPKGRS_DYNAMIC: 1
RUSTFLAGS: -Ctarget-feature=+crt-static
if: matrix.os == 'windows-latest'
- name: Test
uses: actions-rs/cargo@v1
env:
DATA_TIMEOUT: "15s"
CBSH_LOG: cbsh=trace
RUST_LOG: debug
with:
command: test
args: --bins --quiet
- name: Create archive for Linux
id: createarchivelinux
run: |
7z a -ttar -so -an ./target/${{ matrix.target }}/debug/${{ env.ARTIFACT_BIN }} ${{ env.ARTIFACT_ADDS }} | 7z a -si ${{ env.ARTIFACT_BIN }}-${{ matrix.target }}.tar.gz
if: matrix.os == 'ubuntu-22.04'
- name: Install p7zip
# 7Zip not available on MacOS, install p7zip via homebrew.
run: brew install p7zip
if: matrix.os == 'macos-latest'
- name: Create archive for MacOS
id: createarchivemacos
run: |
7z a -tzip ${{ env.ARTIFACT_BIN }}-${{ matrix.target }}.zip ./target/${{ matrix.target }}/debug/${{ env.ARTIFACT_BIN }} ${{ env.ARTIFACT_ADDS }}
if: matrix.os == 'macos-latest'
- name: Create archive for Windows
id: createarchivewindows
run: |
choco install 7zip
7z a -tzip ${{ env.ARTIFACT_BIN }}-${{ matrix.target }}.zip ./target/${{ matrix.target }}/release/${{ env.ARTIFACT_BIN_WINDOWS }} ${{ env.ARTIFACT_ADDS }}
if: matrix.os == 'windows-latest'
- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
name: ${{ env.ARTIFACT_BIN }}-${{ matrix.target }}
path: ${{ env.ARTIFACT_BIN }}-${{ matrix.target }}*
if-no-files-found: error
rustfmt:
name: Rustfmt
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
- run: rustup component add rustfmt
- uses: actions-rs/cargo@v1
with:
command: fmt
args: --all -- --check
machete:
name: Cargo Machete
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Machete
uses: bnjbvr/cargo-machete@main
clippy_check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run Clippy
run: cargo clippy --all-targets --all-features
nu-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: hustcer/setup-nu@main
with:
version: "*"
- run: nu docs/sample_config/prompt_tests.nu
check-spelling:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Check Spelling
uses: rojopolis/[email protected]
with:
config_path: .github/workflows/.spellcheck.yml
task_name: Markdown