-
Notifications
You must be signed in to change notification settings - Fork 5
140 lines (112 loc) · 3.77 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
132
133
134
135
136
137
138
139
140
name: Rust CI
on:
workflow_call:
workflow_dispatch:
# Run periodically to check for breakage, since we seldom update the galileo repo.
# This allows us to determine approximately when a breaking change was merged into
# the penumbra repo, so we can fix it ahead of a testnet release.
schedule:
- cron: "15 18 * * *"
pull_request: {}
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
# Job to look up the most recent tag for a stable testnet, so we can specify
# that tag when building.
lookup-testnet:
name: Look up testnet
runs-on: ubuntu-latest
outputs:
testnet_tag: ${{ steps.testnet_tag.outputs.testnet_tag }}
steps:
- id: testnet_tag
run: >-
printf "testnet_tag=%s" "$(curl -sSfL https://api.github.com/repos/penumbra-zone/penumbra/releases/latest | jq -r .tag_name)"
>> "$GITHUB_OUTPUT"
# Let's make sure we can still build against the currently active stable testnet.
check-testnet:
name: Check Testnet
runs-on: buildjet-8vcpu-ubuntu-2004
needs: lookup-testnet
steps:
- name: Checkout galileo
uses: actions/checkout@v4
- name: Check out penumbra repo
uses: actions/checkout@v4
with:
repository: penumbra-zone/penumbra
path: penumbra-repo
lfs: true
ref: ${{needs.lookup-testnet.outputs.testnet_tag}}
- name: Move penumbra repo to relative path
run: mv penumbra-repo ../penumbra
- name: Install Protoc
uses: arduino/setup-protoc@v3
- name: Install rust toolchain
uses: dtolnay/rust-toolchain@stable
- name: Configure rust cache
uses: Swatinem/rust-cache@v2
- name: Run cargo check
run: cargo check --release
# The "preview" jobs build against upstream main.
build-preview:
name: Build Preview
runs-on: buildjet-16vcpu-ubuntu-2004
steps:
- name: Checkout galileo
uses: actions/checkout@v4
- name: Check out penumbra repo
uses: actions/checkout@v4
with:
repository: penumbra-zone/penumbra
path: penumbra-repo
lfs: true
ref: main
- name: Move penumbra repo to relative path
run: mv penumbra-repo ../penumbra
- name: Install Protoc
uses: arduino/setup-protoc@v3
- name: Install rust toolchain
uses: dtolnay/rust-toolchain@stable
- name: Configure rust cache
uses: Swatinem/rust-cache@v2
- name: Run cargo build release
run: cargo build --release
check-preview:
name: Check Preview
runs-on: buildjet-8vcpu-ubuntu-2004
steps:
- name: Checkout galileo
uses: actions/checkout@v4
- name: Check out penumbra repo
uses: actions/checkout@v4
with:
repository: penumbra-zone/penumbra
path: penumbra-repo
lfs: true
ref: main
- name: Move penumbra repo to relative path
run: mv penumbra-repo ../penumbra
- name: Install Protoc
uses: arduino/setup-protoc@v3
- name: Install rust toolchain
uses: dtolnay/rust-toolchain@stable
- name: Configure rust cache
uses: Swatinem/rust-cache@v2
- name: Run cargo check
run: cargo check --release
fmt:
name: Rustfmt
runs-on: buildjet-8vcpu-ubuntu-2004
steps:
- name: Checkout galileo
uses: actions/checkout@v4
# N.B. `cargo fmt` does not require relpath dependencies to be present,
# so we don't need to clone the penumbra repo here.
- name: Install rust toolchain
uses: dtolnay/rust-toolchain@stable
- name: Configure rust cache
uses: Swatinem/rust-cache@v2
- name: Run cargo fmt
run: cargo fmt --all -- --check