-
Notifications
You must be signed in to change notification settings - Fork 8
157 lines (138 loc) · 4.89 KB
/
build_and_test.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
name: Build & Test Scenario
on:
pull_request:
push:
branches:
- main
defaults:
run:
working-directory: codegenerator
env:
CARGO_TERM_COLOR: always
jobs:
build_and_test:
runs-on: ubuntu-latest
# Service containers to run with `container-job`
services:
# Label used to access the service container
postgres:
# Docker Hub image
image: postgres:16
# Provide the password for postgres
env:
POSTGRES_PASSWORD: testing
POSTGRES_DB: envio-dev
POSTGRES_USER: postgres
# Set health checks to wait until postgres has started
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
# Maps tcp port 5432 on service container to the host port of 5433 which envio will use.
- 5433:5432
steps:
- uses: actions/checkout@v4
- uses: dorny/paths-filter@v3
id: changes
with:
filters: |
testChanges:
- "codegenerator/**"
- "scenarios/test_codegen/**"
- name: Setup rust cache
if: steps.changes.outputs.testChanges == 'true'
uses: actions/cache@v3
with:
path: |
~/.cargo/git
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
# using both of these paths to hedge bets on which is correct.
./codegenerator/target
./target
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
${{ runner.os }}-cargo-
- name: Cache (hardhat) Solidity
if: steps.changes.outputs.testChanges == 'true'
id: cache-hardhat-solidity
uses: actions/cache@v2
with:
path: ~/.cache/hardhat-nodejs
key: ${{ runner.os }}-solidity-hardhat-${{ hashFiles('**/hardhat.config.*s') }}
restore-keys: |
${{ runner.os }}-solidity-hardhat-${{ hashFiles('**/hardhat.config.*s') }}
${{ runner.os }}-solidity-hardhat-
- uses: pnpm/action-setup@v3
if: steps.changes.outputs.testChanges == 'true'
with:
version: 8.9
- name: Get pnpm store directory (if this seems stable and static we can hard-code it again) # Source: https://github.com/pnpm/action-setup#use-cache-to-reduce-installation-time
if: steps.changes.outputs.testChanges == 'true'
id: pnpm-cache
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
- uses: actions/cache@v3
if: steps.changes.outputs.testChanges == 'true'
name: Setup pnpm cache
with:
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
# updating the pnmp-lock.yaml in the test_codegen folder has strange side effects in this test, look to make this more robust
restore-keys: |
${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
${{ runner.os }}-pnpm-store-
- name: Cargo Build
if: steps.changes.outputs.testChanges == 'true'
run: cargo build --verbose
- name: Cargo Tests
if: steps.changes.outputs.testChanges == 'true'
run: cargo test --no-default-features --verbose
- name: Setup Node.js
if: steps.changes.outputs.testChanges == 'true'
uses: actions/setup-node@v4
with:
node-version: 18.15.0
- name: test_codegen build
if: steps.changes.outputs.testChanges == 'true'
working-directory: scenarios/test_codegen
run: |
pnpm codegen
pnpm install
pnpm hardhat compile --verbose
pnpm res:build
- name: test_codegen test
if: steps.changes.outputs.testChanges == 'true'
working-directory: scenarios/test_codegen
run: |
pnpm ts:test
pnpm test
- name: erc20_multichain_factory build
if: steps.changes.outputs.testChanges == 'true'
working-directory: scenarios/erc20_multichain_factory
run: |
pnpm codegen
pnpm install
pnpm build
- name: erc20_multichain_factory test
if: steps.changes.outputs.testChanges == 'true'
working-directory: scenarios/erc20_multichain_factory
run: |
pnpm test
- name: fuel_test build
if: steps.changes.outputs.testChanges == 'true'
working-directory: scenarios/fuel_test
run: |
pnpm codegen
- name: fuel_test test
if: steps.changes.outputs.testChanges == 'true'
working-directory: scenarios/fuel_test
run: |
pnpm ts:test
pnpm test