-
Notifications
You must be signed in to change notification settings - Fork 75
133 lines (129 loc) · 5.93 KB
/
bindings-ts.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
name: bindings typescript
on:
push:
branches: [main, release/**]
pull_request:
jobs:
test:
name: test generated libraries
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest-16-cores, macos-13, windows-latest-8-cores]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: actions/cache@v4
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- name: Setup docker (missing on MacOS)
if: runner.os == 'macos'
run: |
brew install docker
brew install colima
colima start
- name: Install wsl
if: runner.os == 'windows'
uses: vedantmgoyal9/setup-wsl2@4edf825c69cdaad7d6a852f57c9446f83fea8b91
# https://github.com/vedantmgoyal9/setup-wsl2/issues/3
- name: Enable systemd
if: runner.os == 'windows'
run: |
echo "[boot]
systemd=true" > /etc/wsl.conf
shell: wsl-run {0}
- name: Restart WSL
if: runner.os == 'windows'
run: |
Write-Output 'Restarting WSL...'
wsl --shutdown
# https://learn.microsoft.com/en-us/windows/wsl/wsl-config#the-8-second-rule-for-configuration-changes
# although the documentation says 8 seconds, we wait for 10 seconds to be safe
Start-Sleep -Seconds 10
- name: Install Docker
if: runner.os == 'windows'
run: |
systemctl list-unit-files --type=service
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install --yes ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install --yes docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo systemctl start docker.socket
sudo systemctl start docker.service
sudo systemctl status docker.service
sudo docker run hello-world
shell: wsl-run {0}
- run: |
docker run -d --name quickstart -p 8000:8000 -e ENABLE_LOGS=true -e NETWORK=local -e ENABLE_SOROBAN_RPC=true --health-cmd "curl --no-progress-meter --fail-with-body -X POST \"http://localhost:8000/soroban/rpc\" -H 'Content-Type: application/json' -d '{\"jsonrpc\":\"2.0\",\"id\":8675309,\"method\":\"getNetwork\"}' && curl --no-progress-meter \"http://localhost:8000/friendbot\" | grep '\"invalid_field\": \"addr\"'" --health-interval 10s --health-timeout 5s --health-retries 50 stellar/quickstart:testing
if: runner.os != 'windows'
shell: bash
- run: |
docker inspect -f {{.State.Health.Status}} quickstart
while true; do
status=`docker inspect -f {{.State.Health.Status}} quickstart`
echo "quickstart status: $status"
if [ "$status" == "healthy" ]; then
break
fi
sleep 1;
done;
if: runner.os != 'windows'
shell: bash
- run: |
docker run -d --name quickstart -p 8000:8000 -e ENABLE_LOGS=true -e NETWORK=local -e ENABLE_SOROBAN_RPC=true --health-cmd "curl --no-progress-meter --fail-with-body -X POST \"http://localhost:8000/soroban/rpc\" -H 'Content-Type: application/json' -d '{\"jsonrpc\":\"2.0\",\"id\":8675309,\"method\":\"getNetwork\"}' && curl --no-progress-meter \"http://localhost:8000/friendbot\" | grep '\"invalid_field\": \"addr\"'" --health-interval 10s --health-timeout 5s --health-retries 50 stellar/quickstart:testing
if: runner.os == 'windows'
shell: wsl-run {0}
- run: |
docker inspect -f {{.State.Health.Status}} quickstart
while true; do
status=`docker inspect -f {{.State.Health.Status}} quickstart`
echo "quickstart status: $status"
if [ "$status" == "healthy" ]; then
break
fi
sleep 1;
done;
if: runner.os == 'windows'
shell: wsl-run {0}
- run: rustup update
- run: cargo build
- run: rustup target add wasm32-unknown-unknown
- run: make build-test-wasms
- run: npm ci
if: runner.os != 'windows'
working-directory: cmd/crates/soroban-spec-typescript/ts-tests
- run: |
npm ci --ignore-scripts
cargo run --quiet -p stellar-cli -- keys generate root
cargo run --quiet -p stellar-cli -- keys fund root
$contract_id=(cargo run --quiet -p stellar-cli -- contract deploy --quiet --source root --wasm ../../../../target/wasm32-unknown-unknown/test-wasms/test_custom_types.wasm --ignore-checks)
cargo run --quiet -p stellar-cli -- contract bindings typescript --contract-id $contract_id --output-dir ./node_modules/test-custom-types --overwrite
cd ./node_modules/test-custom-types
npm install
npm run build
if: runner.os == 'windows'
working-directory: cmd/crates/soroban-spec-typescript/ts-tests
- run: npm run test
working-directory: cmd/crates/soroban-spec-typescript/ts-tests
- name: quickstart logs
if: always() && runner.os != 'windows'
run: docker logs quickstart
- name: quickstart logs
if: always() && runner.os == 'windows'
run: docker logs quickstart
shell: wsl-run {0}