Skip to content

Commit

Permalink
Merge pull request #1 from rollkit/kurtosis
Browse files Browse the repository at this point in the history
feat: initialize kurtosis package
  • Loading branch information
MSevey authored Jul 11, 2024
2 parents 38fc121 + 5eefc6a commit d6f158f
Show file tree
Hide file tree
Showing 5 changed files with 120 additions and 4 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,6 @@ jobs:
- uses: rollkit/.github/.github/actions/[email protected]

dockerfile-lint:
uses: rollkit/.github/.github/workflows/reuseable_dockerfile_lint[email protected]
uses: rollkit/.github/.github/workflows/reusable_dockerfile_lint[email protected]
with:
failure-threshold: "error"
31 changes: 29 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,6 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
bash \
curl \
jq \
ranger \
vim \
libc6 \
ca-certificates \
&& apt-get clean \
Expand Down Expand Up @@ -50,6 +48,35 @@ RUN sed -i '/wasmd start/s/^/#/' init.sh

RUN bash init.sh

Check failure on line 49 in Dockerfile

View workflow job for this annotation

GitHub Actions / lint / dockerfile-lint / hadolint

DL3059 info: Multiple consecutive `RUN` instructions. Consider consolidation.

Check failure on line 49 in Dockerfile

View workflow job for this annotation

GitHub Actions / lint / dockerfile-lint / hadolint

DL3059 info: Multiple consecutive `RUN` instructions. Consider consolidation.

# Stage 2: Create a minimal runtime image
FROM debian:bookworm-slim

# Install only the necessary runtime dependencies
RUN apt-get update && apt-get install -y --no-install-recommends \

Check failure on line 55 in Dockerfile

View workflow job for this annotation

GitHub Actions / lint / dockerfile-lint / hadolint

DL3008 warning: Pin versions in apt get install. Instead of `apt-get install <package>` use `apt-get install <package>=<version>`

Check failure on line 55 in Dockerfile

View workflow job for this annotation

GitHub Actions / lint / dockerfile-lint / hadolint

DL3008 warning: Pin versions in apt get install. Instead of `apt-get install <package>` use `apt-get install <package>=<version>`
bash \
curl \
ranger \
jq \
vim \
ca-certificates \
libc6 \
&& apt-get clean && rm -rf /var/lib/apt/lists/*

WORKDIR /root

# Copy the wasmd binary from the build stage
COPY --from=build-env /go/bin/wasmd /usr/bin/wasmd

# Ensure the wasmd binary is executable
RUN chmod +x /usr/bin/wasmd

# Copy the .wasmd directory from the build stage
COPY --from=build-env /root/.wasmd /root/.wasmd

# Copy over wasmd depenendencies
RUN mkdir -p /go/pkg/mod/github.com/!cosm!wasm/[email protected]
COPY --from=build-env /go/pkg/mod/github.com/!cosm!wasm/[email protected]/ /go/pkg/mod/github.com/!cosm!wasm/[email protected]/

EXPOSE 36657 36656 9290

# Keep the container running
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@ This repository contains the supporting code for the [CosmWasm tutorial](https:/

## Overview

The `main` branch contains the Dockerfile and Kurtosis packages for the CosmWasm tutorial.
The `main` branch contains the Dockerfile and Kurtosis packages for the CosmWasm tutorial.

The `tutorial` branch contains the CosmWasm wasmd code that is used to build the binary for reference.
4 changes: 4 additions & 0 deletions kurtosis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
name: github.com/rollkit/cosmwasm
description: |-
Kurtosis package for a Rollkit CosmWasm rollup
replace: {}
85 changes: 85 additions & 0 deletions main.star
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
# This Kurtosis package spins up a minimal CosmWasm rollup that connects to a DA node
#
# NOTE: currently this is only connecting to a local DA node

da_node = import_module("github.com/rollkit/local-da/[email protected]")


def run(plan):
##########
# DA
##########

da_address = da_node.run(
plan,
)
plan.print("connecting to da layer via {0}".format(da_address))

#################
# CosmWasm Rollup
#################
plan.print("Adding CosmWasm service")
rpc_port_number = 36657
grpc_port_number = 9290
p2p_port_number = 36656
wasmd_start_cmd = [
"wasmd",
"start",
"--rollkit.aggregator",
"--rollkit.da_address {0}".format(da_address),
"--rpc.laddr tcp://0.0.0.0:{0}".format(rpc_port_number),
"--grpc.address 0.0.0.0:{0}".format(grpc_port_number),
"--p2p.laddr 0.0.0.0:{0}".format(p2p_port_number),
"--minimum-gas-prices='0.025uwasm'",
]
wasmd_ports = {
"rpc-laddr": defaultPortSpec(rpc_port_number),
"grpc-addr": defaultPortSpec(grpc_port_number),
"p2p-laddr": defaultPortSpec(p2p_port_number),
}
wasm = plan.add_service(
name="wasm",
config=ServiceConfig(
# Using CosmWasm version v0.1.0
image="ghcr.io/rollkit/cosmwasm:3b5a25b",
# Use ImageBuildSpec when testing changes to Dockerfile
# image = ImageBuildSpec(
# image_name="cosmwasm",
# build_context_dir=".",
# ),
cmd=["/bin/sh", "-c", " ".join(wasmd_start_cmd)],
ports=wasmd_ports,
public_ports=wasmd_ports,
ready_conditions=ReadyCondition(
recipe=ExecRecipe(
command=[
"wasmd",
"status",
"-n",
"tcp://127.0.0.1:{0}".format(rpc_port_number),
],
extract={
"output": "fromjson | .node_info.network",
},
),
field="extract.output",
assertion="==",
target_value="localwasm",
interval="1s",
timeout="10s",
),
),
)

wasm_address = "http://{0}:{1}".format(
wasm.ip_address, wasm.ports["rpc-laddr"].number
)
plan.print("CosmWasm service is available at {0}".format(wasm_address))


def defaultPortSpec(port_number):
return PortSpec(
number=port_number,
transport_protocol="TCP",
application_protocol="http",
)

0 comments on commit d6f158f

Please sign in to comment.