-
Notifications
You must be signed in to change notification settings - Fork 15
138 lines (113 loc) · 4.31 KB
/
node.js.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
name: CI
on:
workflow_dispatch:
push:
branches:
- master
- develop
- 'run-ci/**'
pull_request:
branches: [ master, develop, test-pr ]
types: [opened, synchronize, reopened, labeled]
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
env:
NODE_ENV: test
jobs:
file-guard:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- uses: dorny/paths-filter@v2
id: changes
with:
filters: |
addresses:
- 'addresses/deployed/*.json'
- name: Fail if addresses changed unless PR has 'update address' label
if: >
( github.event_name == 'pull_request'
&& !contains(github.event.pull_request.labels.*.name,'update address')
&& steps.changes.outputs.addresses == 'true')
uses: actions/github-script@v7
with:
script: core.setFailed('You have changed an address in mangrove-core (deployed/*.json). PR must be marked \'update address\' for CI to run')
# ==== Job: Build and test mangrove-core
mangrove-core:
runs-on: ubuntu-22.0-4core
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: Yarn setup (caching yarn dependencies)
uses: actions/setup-node@v4
with:
cache: 'yarn'
- run: yarn install --immutable
- name: Foundry Setup
uses: mangrovedao/.github/.github/actions/foundry-setup@master
- name: Solidity Compile
run: yarn run build
# Pinned forks are used in tests and utilize secrets. For PRs from forks these are not available
# Let the tests attempt to run with demo endpoints which are more unstable.
- name: Mangrove Solidity Tests (fast)
run: yarn run test:fast
env:
POLYGON_NODE_URL: ${{ secrets.POLYGON_NODE_URL || 'https://polygon.llamarpc.com' }}
MUMBAI_NODE_URL: ${{ secrets.MUMBAI_NODE_URL || 'unused' }}
# Memory intensive tests run without -vvv as GitHub actions otherwise cancels the step due to memory usage
- name: Mangrove Solidity Tests (memory intensive)
run: yarn run test:memory-intensive
# For push runs we also create a coverage report
- name: Create coverage report for mangrove-solidity
if: github.event_name != 'pull_request'
run: forge coverage --report lcov
env:
POLYGON_NODE_URL: ${{ secrets.POLYGON_NODE_URL }}
MUMBAI_NODE_URL: ${{ secrets.MUMBAI_NODE_URL }}
# == Send coverage report to Coveralls ==
# Coverallsapp by default uses GITHUB_SHA but that does not necessarily correspond
# to HEAD because a branch is checked out. We here find the actual SHA for HEAD.
- name: Set Coveralls vars
id: coveralls_vars
if: github.event_name != 'pull_request'
run: echo "::set-output name=sha_for_head::$(git rev-parse HEAD)"
- name: Upload to Coveralls for mangrove-solidity
uses: coverallsapp/github-action@master
if: github.event_name != 'pull_request'
with:
git-commit: ${{ steps.coveralls_vars.outputs.sha_for_head }}
github-token: ${{ secrets.GITHUB_TOKEN }}
path-to-lcov: lcov.info
base-path : .
flag-name: solidity
# NOTE: uncomment once you can manage forge test
# outputs in gh actions
# - name: Mangrove Solidity Test Report
# uses: dorny/test-reporter@v1
# if: ${{ env.mangrove_built && (success() || failure()) }}
# with:
# name: Solidity Tests # Name of the check run which will be created
# path: ./solidity-mocha-test-report.json # Path to test results
# reporter: mocha-json # Format of test results
# == check docs can be created ==
- run: yarn run doc
# == check precommit works ==
- run: yarn run precommit
# ==== final "check" job, using alls-green to have one single job to check for green workflow ====
# see https://github.com/re-actors/alls-green
check:
if: always()
needs:
- file-guard
- mangrove-core
runs-on: ubuntu-latest
steps:
- name: Decide whether the needed jobs succeeded or failed
uses: re-actors/alls-green@release/v1
with:
allowed-skips: file-guard, mangrove-core
jobs: ${{ toJSON(needs) }}