-
Notifications
You must be signed in to change notification settings - Fork 3
150 lines (148 loc) · 5.55 KB
/
relayer-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
name: relayer-ci
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
workflow_dispatch:
jobs:
ci:
strategy:
fail-fast: false
matrix:
ci_step: [
"lint",
"test",
"integration tests contract",
"integration tests processes",
"integration tests xrpl",
]
include:
- ci_step: "lint"
command: "coreumbridge-xrpl-builder lint"
wasm-cache: false
linter-cache: true
docker-cache: false
- ci_step: "test"
command: "coreumbridge-xrpl-builder test fuzz-test"
wasm-cache: false
linter-cache: false
docker-cache: false
- ci_step: "integration tests contract"
command: |
coreumbridge-xrpl-builder build/contract images
coreum-builder build images
crust znet start --profiles=1cored,xrpl --timeout-commit 0.5s
coreumbridge-xrpl-builder integration-tests/contract
wasm-cache: true
linter-cache: false
docker-cache: true
- ci_step: "integration tests processes"
command: |
coreumbridge-xrpl-builder build/contract images
coreum-builder build images
crust znet start --profiles=1cored,xrpl --timeout-commit 0.5s
coreumbridge-xrpl-builder integration-tests/processes
wasm-cache: true
linter-cache: false
docker-cache: true
- ci_step: "integration tests xrpl"
command: |
coreumbridge-xrpl-builder build/contract images
coreum-builder build images
crust znet start --profiles=1cored,xrpl --timeout-commit 0.5s
coreumbridge-xrpl-builder integration-tests/xrpl
wasm-cache: true
linter-cache: false
docker-cache: true
runs-on: ubuntu-22.04
steps:
- name: Go version used to build builder
run: go version
- name: Checkout coreumbridge-xrpl
uses: actions/checkout@v4
with:
persist-credentials: false
path: coreumbridge-xrpl
- name: Checkout crust
uses: actions/checkout@v4
with:
repository: CoreumFoundation/crust
path: crust
ref: 9e29fa9e7f52a0e8db70c1a1d43404de432bdac3
- name: Checkout coreum
uses: actions/checkout@v4
with:
repository: CoreumFoundation/coreum
path: coreum
ref: 4695973601fb222a90677c645e975f6a264238b6
- name: Set up build system
run: |
echo "$(pwd)/coreumbridge-xrpl/bin" >> $GITHUB_PATH
echo "$(pwd)/coreum/bin" >> $GITHUB_PATH
echo "$(pwd)/crust/bin" >> $GITHUB_PATH
coreumbridge-xrpl/bin/coreumbridge-xrpl-builder build/me
- name: Retrieve go version
id: goversion
run: echo "GO_VERSION=$(coreumbridge-xrpl/bin/go version)" >> $GITHUB_OUTPUT
- name: Print go version
run: echo ${{ steps.goversion.outputs.GO_VERSION }}
- name: Setup go cache
uses: actions/cache@v3
with:
path: |
~/.cache/go-build
~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}-${{ steps.goversion.outputs.GO_VERSION }}
- name: Setup WASM cache
uses: actions/cache@v3
if: ${{ matrix.wasm-cache }}
with:
# we need to exclude code-hashes.json from the rest, since the invalidation condition for it is not
# same as WASM cache, but it is same as smart contract artifacts.
path: |
~/.cache/crust/wasm
!/.cache/crust/wasm/code-hashes.json
key: ${{ runner.os }}-wasm-cache-${{ hashFiles('~/.cache/crust/wasm/**/*.rs') }}
- name: Setup linter cache
uses: actions/cache@v3
if: ${{ matrix.linter-cache }}
with:
path: ~/.cache/golangci-lint
key: ${{ runner.os }}-linter-cache-2-${{ steps.goversion.outputs.GO_VERSION }}
- name: Get Date
id: get-year-week
run: |
echo "date=$(/bin/date -u "+%Y-%U")" >> $GITHUB_OUTPUT
shell: bash
- name: Set docker cache
uses: satackey/action-docker-layer-caching@v0.0.11
if: ${{ matrix.docker-cache }}
continue-on-error: true
with:
key: ${{ runner.os }}-docker-v3-${{ steps.get-year-week.outputs.date }} # year-week key
- name: Setup smart contract build cache
uses: actions/cache@v3
with:
# we need to cache code-hashes.json under the same key as the artifacts, since the invalidation condition
# for both of them are the same.
path: |
${{ github.workspace }}/coreumbridge-xrpl/contract/artifacts/*
~/.cache/crust/wasm/code-hashes.json
key: ${{ runner.os }}-cache-smart-contracts-${{ hashFiles('./coreumbridge-xrpl/contract/**/*.rs') }}
if: ${{ matrix.wasm-cache }}
- name: Prepare dependencies
# FIXME (wojciech): Execute `download` commands for crust and coreum builders once available
run: |
crust build/me
crust build
crust znet remove
coreum-builder build/me
coreumbridge-xrpl-builder build/me
coreumbridge-xrpl-builder download
- name: Run ${{ matrix.ci_step }}
working-directory: ./coreumbridge-xrpl
run: ${{ matrix.command }}
- name: Dump docker logs on failure
if: failure()
uses: jwalton/gh-docker-logs@v2