Skip to content

Commit e893e96

Browse files
author
mike dupont
committed
adding new full build job
1 parent 6d6fce3 commit e893e96

File tree

3 files changed

+179
-53
lines changed

3 files changed

+179
-53
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,176 @@
1+
name: run Perf Test and collect data
2+
env:
3+
default_image: "ghcr.io/meta-introspector/o1js/o1js-perf-recording:latest"
4+
container_name: "unit-tests"
5+
on:
6+
workflow_dispatch:
7+
inputs:
8+
image_url:
9+
description: 'Docker url to execute'
10+
default: "ghcr.io/meta-introspector/o1js/o1js-perf-recording:latest"
11+
push:
12+
branches:
13+
# add your branch here to auto trigger on push
14+
#- "feature/just_test"
15+
#- "feature/rebase"
16+
- "feature/unit-test-clean"
17+
# pull_request:
18+
# branches: [ "collect-perf" ]
19+
jobs:
20+
build:
21+
strategy:
22+
matrix:
23+
tests:
24+
# - "/app/src/lib/util/base58.unit-test.ts"
25+
# - "/app/src/lib/ml/consistency.unit-test.ts"
26+
# - "/app/src/lib/mina/account-update.unit-test.ts"
27+
# - "/app/src/lib/mina/hash-input.unit-test.ts"
28+
# - "/app/src/lib/mina/mina.unit-test.ts"
29+
# - "/app/src/lib/mina/actions/offchain-contract.unit-test.ts"
30+
# - "/app/src/lib/mina/actions/batch-reducer.unit-test.ts"
31+
# - "/app/src/lib/mina/actions/batch-reducer-program.unit-test.ts"
32+
# - "/app/src/lib/mina/test/dynamic-call.unit-test.ts"
33+
# - "/app/src/lib/mina/token/forest-iterator.unit-test.ts"
34+
# - "/app/src/lib/mina/token/token-contract.unit-test.ts"
35+
# - "/app/src/lib/mina/fetch.unit-test.ts"
36+
# - "/app/src/lib/mina/account-update-layout.unit-test.ts"
37+
# - "/app/src/lib/proof-system/proof-system.unit-test.ts"
38+
# - "/app/src/lib/proof-system/sideloaded.unit-test.ts"
39+
# - "/app/src/lib/provable/test/bitwise.unit-test.ts"
40+
# - "/app/src/lib/provable/test/base64.unit-test.ts"
41+
# - "/app/src/lib/provable/test/field.unit-test.ts"
42+
# - "/app/src/lib/provable/test/nullifier.unit-test.ts"
43+
# - "/app/src/lib/provable/test/provable.unit-test.ts"
44+
# - "/app/src/lib/provable/test/sha256.unit-test.ts"
45+
# - "/app/src/lib/provable/test/string.unit-test.ts"
46+
# - "/app/src/lib/provable/test/range-check.unit-test.ts"
47+
# - "/app/src/lib/provable/test/foreign-field.unit-test.ts"
48+
# - "/app/src/lib/provable/test/group.unit-test.ts"
49+
# - "/app/src/lib/provable/test/custom-gates-recursion.unit-test.ts"
50+
# - "/app/src/lib/provable/test/foreign-curve.unit-test.ts"
51+
# - "/app/src/lib/provable/test/foreign-field-gadgets.unit-test.ts"
52+
# - "/app/src/lib/provable/test/elliptic-curve.unit-test.ts"
53+
# - "/app/src/lib/provable/test/lookup.unit-test.ts"
54+
# - "/app/src/lib/provable/test/ecdsa.unit-test.ts"
55+
# - "/app/src/lib/provable/test/arithmetic.unit-test.ts"
56+
# - "/app/src/lib/provable/test/primitives.unit-test.ts"
57+
# - "/app/src/lib/provable/test/keccak.unit-test.ts"
58+
# - "/app/src/lib/provable/test/struct.unit-test.ts"
59+
# - "/app/src/lib/provable/test/merkle-tree.unit-test.ts"
60+
# - "/app/src/lib/testing/testing.unit-test.ts"
61+
# - "/app/src/mina-signer/tests/verify-in-snark.unit-test.ts"
62+
# - "/app/src/mina-signer/tests/zkapp.unit-test.ts"
63+
# - "/app/src/mina-signer/src/sign-legacy.unit-test.ts"
64+
# - "/app/src/mina-signer/src/transaction-hash.unit-test.ts"
65+
# - "/app/src/mina-signer/src/signature.unit-test.ts"
66+
# - "/app/src/mina-signer/src/sign-zkapp-command.unit-test.ts"
67+
# - "/app/src/bindings/lib/binable.unit-test.ts"
68+
# - "/app/src/bindings/crypto/bigint.unit-test.ts"
69+
# - "/app/src/bindings/crypto/finite-field.unit-test.ts"
70+
# - "/app/src/bindings/crypto/glv.unit-test.ts"
71+
# - "/app/src/bindings/crypto/poseidon.unit-test.ts"
72+
# - "/app/src/bindings/crypto/bindings/bindings.unit-test.ts"
73+
# - "/app/src/bindings/crypto/elliptic-curve.unit-test.ts"
74+
75+
- "/app/dist/node/lib/util/base58.unit-test.js"
76+
- "/app/dist/node/lib/ml/consistency.unit-test.js"
77+
- "/app/dist/node/lib/mina/account-update.unit-test.js"
78+
- "/app/dist/node/lib/mina/hash-input.unit-test.js"
79+
- "/app/dist/node/lib/mina/mina.unit-test.js"
80+
- "/app/dist/node/lib/mina/actions/offchain-contract.unit-test.js"
81+
- "/app/dist/node/lib/mina/actions/batch-reducer.unit-test.js"
82+
- "/app/dist/node/lib/mina/actions/batch-reducer-program.unit-test.js"
83+
- "/app/dist/node/lib/mina/test/dynamic-call.unit-test.js"
84+
- "/app/dist/node/lib/mina/token/forest-iterator.unit-test.js"
85+
- "/app/dist/node/lib/mina/token/token-contract.unit-test.js"
86+
- "/app/dist/node/lib/mina/fetch.unit-test.js"
87+
- "/app/dist/node/lib/mina/account-update-layout.unit-test.js"
88+
- "/app/dist/node/lib/proof-system/proof-system.unit-test.js"
89+
- "/app/dist/node/lib/proof-system/sideloaded.unit-test.js"
90+
- "/app/dist/node/lib/provable/test/bitwise.unit-test.js"
91+
- "/app/dist/node/lib/provable/test/base64.unit-test.js"
92+
- "/app/dist/node/lib/provable/test/field.unit-test.js"
93+
- "/app/dist/node/lib/provable/test/nullifier.unit-test.js"
94+
- "/app/dist/node/lib/provable/test/provable.unit-test.js"
95+
- "/app/dist/node/lib/provable/test/sha256.unit-test.js"
96+
- "/app/dist/node/lib/provable/test/string.unit-test.js"
97+
- "/app/dist/node/lib/provable/test/range-check.unit-test.js"
98+
- "/app/dist/node/lib/provable/test/foreign-field.unit-test.js"
99+
- "/app/dist/node/lib/provable/test/group.unit-test.js"
100+
- "/app/dist/node/lib/provable/test/custom-gates-recursion.unit-test.js"
101+
- "/app/dist/node/lib/provable/test/foreign-curve.unit-test.js"
102+
- "/app/dist/node/lib/provable/test/foreign-field-gadgets.unit-test.js"
103+
- "/app/dist/node/lib/provable/test/elliptic-curve.unit-test.js"
104+
- "/app/dist/node/lib/provable/test/lookup.unit-test.js"
105+
- "/app/dist/node/lib/provable/test/ecdsa.unit-test.js"
106+
- "/app/dist/node/lib/provable/test/arithmetic.unit-test.js"
107+
- "/app/dist/node/lib/provable/test/primitives.unit-test.js"
108+
- "/app/dist/node/lib/provable/test/keccak.unit-test.js"
109+
- "/app/dist/node/lib/provable/test/struct.unit-test.js"
110+
- "/app/dist/node/lib/provable/test/merkle-tree.unit-test.js"
111+
- "/app/dist/node/lib/testing/testing.unit-test.js"
112+
- "/app/dist/node/mina-signer/tests/verify-in-snark.unit-test.js"
113+
- "/app/dist/node/mina-signer/tests/zkapp.unit-test.js"
114+
- "/app/dist/node/mina-signer/src/sign-legacy.unit-test.js"
115+
- "/app/dist/node/mina-signer/src/transaction-hash.unit-test.js"
116+
- "/app/dist/node/mina-signer/src/signature.unit-test.js"
117+
- "/app/dist/node/mina-signer/src/sign-zkapp-command.unit-test.js"
118+
- "/app/dist/node/bindings/lib/binable.unit-test.js"
119+
- "/app/dist/node/bindings/crypto/bigint.unit-test.js"
120+
- "/app/dist/node/bindings/crypto/finite-field.unit-test.js"
121+
- "/app/dist/node/bindings/crypto/glv.unit-test.js"
122+
- "/app/dist/node/bindings/crypto/poseidon.unit-test.js"
123+
- "/app/dist/node/bindings/crypto/bindings/bindings.unit-test.js"
124+
- "/app/dist/node/bindings/crypto/elliptic-curve.unit-test.js"
125+
126+
runs-on: ubuntu-latest
127+
steps:
128+
- name: Sets NAME
129+
env:
130+
name: "${{matrix.tests}}"
131+
run: |
132+
TEST_NAME1=`echo $name | sed -e 's!/!-!g' `
133+
echo "TEST_NAME=test${TEST_NAME1}" >> $GITHUB_ENV
134+
135+
- uses: meta-introspector/checkout@v4
136+
#with:
137+
# submodules: recursive
138+
139+
- name: Login to GHCR
140+
uses: meta-introspector/login-action@v1
141+
with:
142+
registry: ghcr.io
143+
username: ${{ github.actor }}
144+
password: ${{ secrets.GITHUB_TOKEN }}
145+
146+
#- name: pull the image
147+
# run: docker pull ${{ inputs.image_url || env.default_image }}
148+
149+
- name: build base image
150+
run: docker compose build mina-local-network
151+
152+
- name: run the Docker build locally using pulled image
153+
run: TESTS=${{matrix.tests}} docker compose build ${{ env.container_name }}
154+
env:
155+
DOCKER_IMAGE_URL: ${{ inputs.image_url || env.default_image}}
156+
157+
- name: run the Docker tests
158+
run: TESTS=${{matrix.tests}} docker compose up ${{ env.container_name }}
159+
env:
160+
DOCKER_IMAGE_URL: ${{ inputs.image_url || env.default_image}}
161+
162+
- name: docker cp results
163+
run: docker compose cp ${{ env.container_name }}:/tmp/perf.data.tar.gz perf.data.tar.gz
164+
165+
- name: Archive results
166+
uses: meta-introspector/upload-artifact@v4
167+
with:
168+
name: ${{ env.TEST_NAME }}.perf.data.tar.gz
169+
path: perf.data.tar.gz
170+
171+
- name: delete the results
172+
run: rm -rf /tmp/perf*
173+
174+
- name: delete the container
175+
run: |
176+
docker compose down

Dockerfile

+2-53
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ ENV PATH="$PNPM_HOME:$PATH"
44
RUN corepack enable
55
RUN apt update
66
RUN apt install -y git bzip2
7-
7+
run apt-get install -y linux-perf # move to top
88
WORKDIR /app
99

1010
ADD pnpm-lock.yaml pnpm-lock.yaml
@@ -31,6 +31,7 @@ COPY dune-project /app/dune-project
3131
RUN corepack enable
3232
RUN corepack prepare pnpm@latest-9 --activate
3333
RUN pnpm install
34+
RUN npm install -g npm@10.8.3
3435
# "dev": "npx tsc -p tsconfig.test.json && node src/build/copy-to-dist.js",
3536
RUN npx tsc -p tsconfig.test.json
3637

@@ -42,26 +43,9 @@ RUN pnpm install -g clinic
4243

4344
RUN pnpm run build
4445

45-
#RUN apt update
46-
#RUN apt install -y strace
47-
run apt-get install -y linux-perf # move to top
48-
4946
# why is this needed?
5047
RUN ln -s /app/dist /app/src/mina-signer/dist
5148

52-
# '/app/dist/node/bindings/compiled/_node_bindings/plonk_wasm.cjs' imported from /app/dist/node/bindings/js/node/node-backend.js
53-
# found here
54-
#./src/bindings/compiled/node_bindings/plonk_wasm.cjs
55-
#./src/bindings/compiled/_node_bindings/plonk_wasm.cjs
56-
#./dist/node/bindings/compiled/_node_bindings/plonk_wasm.cjs
57-
58-
#run apt-get update
59-
60-
61-
#CMD [ "pnpm", "run", "test" ]
62-
#RUN pnpm run test || echo skip errors
63-
64-
#COPY . /app
6549
WORKDIR /app
6650

6751
FROM base AS prod-deps
@@ -90,38 +74,3 @@ EXPOSE 8000
9074
CMD [ "pnpm", "start" ]
9175

9276

93-
94-
# # Use an official Ubuntu image as a base
95-
# #FROM ubuntu:latest
96-
# FROM o1labs/mina-local-network:compatible-latest-devnet
97-
98-
# # Set the working directory to /app
99-
# WORKDIR /app
100-
101-
# # Install required dependencies
102-
# RUN apt update && apt install -y \
103-
# git \
104-
# curl \
105-
# npm \
106-
# nodejs
107-
108-
# # Install Node.js version 18
109-
# RUN curl -fsSL https://deb.nodesource.com/setup_18.x | bash -
110-
# RUN apt-get install -y nodejs
111-
112-
# # Clone the repository and checkout the specific branch
113-
# RUN git clone https://github.com/meta-introspector/o1js.git .
114-
# RUN git checkout 7647eb9
115-
116-
# # Install npm dependencies
117-
# RUN npm ci
118-
119-
# # Build o1js
120-
# RUN npm run build
121-
122-
# # Expose the port for the web server
123-
# EXPOSE 8080
124-
125-
# # Run the command to start the web server when the container launches
126-
# CMD ["npm", "run", "start"]
127-

Makefile

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
unit-tests:
2+
BUILDKIT_PROGRESS=plain docker compose build mina-local-network # build base image
23
BUILDKIT_PROGRESS=plain TESTS="/app/dist/node/lib/util/base58.unit-test.js" docker compose build unit-tests
34
BUILDKIT_PROGRESS=plain TESTS="/app/dist/node/lib/util/base58.unit-test.js" docker compose up unit-tests
45

0 commit comments

Comments
 (0)