Skip to content

Commit 6aeacd7

Browse files
authored
Merge pull request #6 from 0KnowledgeNetwork/5-use-local-protokit-framework
build: use local path to @proto-kit dependency
2 parents b4ccad8 + 296e249 commit 6aeacd7

File tree

7 files changed

+575
-5231
lines changed

7 files changed

+575
-5231
lines changed

.github/workflows/docker.yml

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ jobs:
2121
runs-on: ubuntu-latest
2222

2323
env:
24-
APPCHAIN_REF: main
2524
APPCHAIN_REPO: ${{ github.repository_owner }}/appchain
25+
PROTOKIT_REPO: ${{ github.repository_owner }}/protokit
2626
IMAGE: ghcr.io/${{ github.repository_owner }}/appchain-agent
2727
IMAGE_TEST: zkn/appchain-agent
2828

@@ -32,6 +32,12 @@ jobs:
3232
with:
3333
path: appchain-agent
3434

35+
- name: Read dependencies versions
36+
run: |
37+
source appchain-agent/deps.env
38+
echo "APPCHAIN_REF=${APPCHAIN}" >> $GITHUB_ENV
39+
echo "PROTOKIT_REF=${PROTOKIT}" >> $GITHUB_ENV
40+
3541
- name: Checkout appchain repository
3642
uses: actions/checkout@v4
3743
with:
@@ -40,6 +46,13 @@ jobs:
4046
repository: ${{ env.APPCHAIN_REPO }}
4147
ssh-key: ${{ secrets.APPCHAIN_DEPLOY_KEY }}
4248

49+
- name: Checkout protokit repository
50+
uses: actions/checkout@v4
51+
with:
52+
path: protokit
53+
ref: ${{ env.PROTOKIT_REF }}
54+
repository: ${{ env.PROTOKIT_REPO }}
55+
4356
- name: Set up QEMU
4457
uses: docker/setup-qemu-action@v3
4558

@@ -69,7 +82,7 @@ jobs:
6982
7083
# https://docs.docker.com/build/ci/github-actions/reproducible-builds/
7184
- name: Set source build date from git commit timestamp
72-
run: echo "SOURCE_DATE_EPOCH=$(git log -1 --pretty=%ct)" >> $GITHUB_ENV
85+
run: echo "SOURCE_DATE_EPOCH=$(cd appchain-agent && git log -1 --pretty=%ct)" >> $GITHUB_ENV
7386

7487
- name: Build and export to Docker
7588
uses: docker/build-push-action@v6
@@ -78,6 +91,7 @@ jobs:
7891
with:
7992
build-contexts: |
8093
context-appchain=./appchain
94+
context-protokit=./protokit
8195
cache-from: type=gha
8296
cache-to: type=gha,mode=max
8397
context: ./appchain-agent
@@ -92,6 +106,7 @@ jobs:
92106
with:
93107
build-contexts: |
94108
context-appchain=./appchain
109+
context-protokit=./protokit
95110
context: ./appchain-agent
96111
tags: ${{ steps.meta.outputs.tags }}
97112
labels: ${{ steps.meta.outputs.labels }}

Dockerfile

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,22 @@ FROM base AS builder
1212

1313
COPY package.json pnpm-lock.yaml ./
1414

15+
COPY --from=context-protokit / /app/protokit
16+
RUN --mount=type=cache,id=npm,target=/root/.npm \
17+
cd /app/protokit \
18+
&& npm set cache /root/.npm \
19+
&& npm ci \
20+
&& npm run build
21+
1522
COPY --from=context-appchain / /app/appchain
1623
RUN --mount=type=cache,id=pnpm,target=${PNPM_HOME}/store \
1724
cd /app/appchain/packages/chain \
1825
&& pnpm install --frozen-lockfile \
1926
&& pnpm build
2027

21-
RUN --mount=type=cache,id=pnpm,target=${PNPM_HOME}/store pnpm install --frozen-lockfile
28+
RUN --mount=type=cache,id=pnpm,target=${PNPM_HOME}/store \
29+
cd /app/appchain-agent \
30+
&& pnpm install --frozen-lockfile
2231

2332
COPY . .
2433
RUN pnpm run build
@@ -35,8 +44,6 @@ RUN apk add --no-cache \
3544
COPY --from=builder /app/appchain/packages/chain/dist /app/appchain/packages/chain/dist
3645
COPY --from=builder /app/appchain/packages/chain/package.json /app/appchain/packages/chain/
3746
COPY --from=builder /app/appchain/package.json /app/appchain/pnpm-lock.yaml /app/appchain/
38-
RUN --mount=type=cache,id=pnpm,target=${PNPM_HOME}/store cd /app/appchain && pnpm install --prod --frozen-lockfile
39-
4047
COPY --from=builder /app/appchain-agent/dist ./dist
4148
COPY --from=builder /app/appchain-agent/package.json /app/appchain-agent/pnpm-lock.yaml ./
4249
RUN --mount=type=cache,id=pnpm,target=${PNPM_HOME}/store pnpm install --prod --frozen-lockfile

Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ docker_image ?= zkn/agent:latest
44
image:
55
docker build \
66
--build-context context-appchain=../appchain \
7+
--build-context context-protokit=../protokit \
78
--file Dockerfile \
89
--tag $(docker_image) \
910
.

README.md

Lines changed: 36 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,20 +12,53 @@ with the data's Content Identifier indexed within the appchain.
1212

1313
## Installation
1414

15-
Place this repo next to the `appchain` monorepo.
15+
This project uses local `file:` references to 0KN's
16+
[appchain](https://github.com/0KnowledgeNetwork/appchain) and
17+
[protokit](https://github.com/0KnowledgeNetwork/protokit).
18+
19+
Place the projects in the same directory and ensure alignment of their git refs:
1620

1721
```
1822
.
1923
├── appchain/
20-
└── appchain-agent/
24+
├── appchain-agent/
25+
└── protokit/
2126
```
2227

2328
Refer to appchain requirements including Node.js version.
2429

25-
Install dependencies:
30+
### Build Deps & Start Appchain
2631

2732
```sh
33+
cd protokit
34+
npm install
35+
npm run build
36+
37+
38+
cd ../appchain
39+
pnpm install
40+
41+
# build appchain for appchain-agent
42+
pnpm run build --filter=chain
43+
44+
# run appchain sequencer, for example
45+
pnpm env:inmemory dev --filter chain -- --logLevel DEBUG
46+
47+
48+
cd ../appchain-agent
2849
pnpm install
50+
pnpm run build
51+
```
52+
53+
## Development
54+
55+
Set `appchain` and `protokit` versions within [deps.env](deps.env) for the
56+
working branch so that automated workflows use the correct dependency verions.
57+
For example, for an `appchain-agent` `release/0.1` branch:
58+
59+
```env
60+
APPCHAIN=release/0.1
61+
PROTOKIT=zkn/release/0.1
2962
```
3063

3164
## Usage

deps.env

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
APPCHAIN=main
2+
PROTOKIT=zkn/main

package.json

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,5 +36,21 @@
3636
"multiformats": "13.2.2",
3737
"o1js": "1.6.0"
3838
},
39+
"resolutions": {
40+
"@proto-kit/api": "*",
41+
"@proto-kit/common": "*",
42+
"@proto-kit/deployment": "*",
43+
"@proto-kit/library": "*",
44+
"@proto-kit/module": "*",
45+
"@proto-kit/persistance": "*",
46+
"@proto-kit/protocol": "*",
47+
"@proto-kit/sdk": "*",
48+
"@proto-kit/sequencer": "*"
49+
},
50+
"pnpm": {
51+
"overrides": {
52+
"react-native": "never"
53+
}
54+
},
3955
"packageManager": "[email protected]+sha512.dc09430156b427f5ecfc79888899e1c39d2d690f004be70e05230b72cb173d96839587545d09429b55ac3c429c801b4dc3c0e002f653830a420fa2dd4e3cf9cf"
4056
}

0 commit comments

Comments
 (0)