-
Notifications
You must be signed in to change notification settings - Fork 83
146 lines (142 loc) · 6.75 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
134
135
136
137
138
139
140
141
142
143
144
145
146
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: |
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: |
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: Start-Sleep -Seconds 900
if: runner.os == 'windows'
- run: Invoke-RestMethod -Uri http://localhost:8000/friendbot?addr=GDMSMNH2Y4RONFEZT6U7SCZP34L5XAAXWHQKELXUW6D2CUT6HNNBEXXY
if: runner.os == 'windows'
- run: rustup update
- run: cargo build
- run: Invoke-RestMethod -Uri http://localhost:8000/friendbot?addr=GBU23IVABQ7XVJMGQPVGZAX6NKHXVMUUL25KXX6BP3B5A5B7OOYCXBCH
if: runner.os == 'windows'
- run: rustup target add wasm32-unknown-unknown
- run: make build-test-wasms
- run: Invoke-RestMethod -Uri http://localhost:8000/friendbot?addr=GAPIJSEUJRERET674YWPFKMGVH4ALOKHGXTZXSCHC4VVHXNPZ42JMA7K
if: runner.os == 'windows'
- run: npm ci
if: runner.os != 'windows'
working-directory: cmd/crates/soroban-spec-typescript/ts-tests
- run: |
Write-Host "Running npm build"
npm ci --ignore-scripts
Write-Host "Generating keys"
$env:SOROBAN_SECRET_KEY='SC5NRVW24PTAE2TM4M7VVZSCYUNVCBSZOSNRSHFU2XVYZGNMFV6YVLLX'
cargo run -p stellar-cli -- keys add --secret-key root
Invoke-RestMethod -Uri http://localhost:8000/friendbot?addr=GBCNICNDLG2SQ3AIHJTB3G7AMGR4SZZJISYYQENZR7TETHTZHRCSEAWC
Write-Host "Deploying contract"
cargo run -p stellar-cli -- contract deploy --quiet --alias custom-types --source root --wasm ../../../../target/wasm32-unknown-unknown/test-wasms/test_custom_types.wasm --ignore-checks
Write-Host "Generating bindings"
cargo run --quiet -p stellar-cli -- contract bindings typescript --contract-id custom-types --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 container inspect quickstart
docker container logs quickstart -n 1000
shell: wsl-run {0}