Skip to content

Commit 07d5557

Browse files
authored
feat: add dockerfile and entrypoint script to deploy hyperlane
2 parents 1bbbe0d + 60cf345 commit 07d5557

File tree

9 files changed

+114
-8
lines changed

9 files changed

+114
-8
lines changed

.github/workflows/docker.yml

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
name: Build and Push Docker Image
2+
3+
on:
4+
push:
5+
branches: [ main ]
6+
paths:
7+
- '**/Dockerfile'
8+
- '.github/workflows/docker.yml'
9+
10+
jobs:
11+
build-and-push:
12+
runs-on: ubuntu-latest
13+
14+
permissions:
15+
contents: read
16+
packages: write # Required for pushing to GHCR
17+
18+
steps:
19+
- name: Checkout source
20+
uses: actions/checkout@v3
21+
22+
- name: Set up Docker Buildx
23+
uses: docker/setup-buildx-action@v3
24+
25+
- name: Log in to GitHub Container Registry
26+
uses: docker/login-action@v3
27+
with:
28+
registry: ghcr.io
29+
username: ${{ github.actor }}
30+
password: ${{ secrets.GITHUB_TOKEN }}
31+
32+
- name: Build and push Docker image
33+
uses: docker/build-push-action@v5
34+
with:
35+
context: .
36+
file: ./hyperlane/Dockerfile
37+
push: true
38+
tags: ghcr.io/${{ github.repository_owner }}/hyperlane-init:latest

Makefile

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ demo:
8383

8484
## start: Start all Docker containers for the demo.
8585
start:
86-
@docker compose -f docker-compose.rollkit.yml up --detach
86+
@docker compose up --detach
8787
.PHONY: start
8888

8989
## setup: Set up the IBC light clients.
@@ -112,13 +112,10 @@ query-balance:
112112
@go run ./testing/demo/pkg/transfer/ query-balance
113113
.PHONY: query-balance
114114

115-
## stop: Stop all Docker containers and remove the tmp directory.
115+
## stop: Stop all Docker containers and remove volumes.
116116
stop:
117117
@echo "--> Stopping all Docker containers"
118-
@docker compose -f docker-compose.rollkit.yml down
119-
@docker compose -f docker-compose.rollkit.yml rm
120-
@echo "--> Removing the tmp directory"
121-
@rm -rf .tmp
118+
@docker compose down -v
122119
.PHONY: stop
123120

124121
## build: Build the simapp and indexer binaries into the ./build directory.

docker-compose.yml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,9 +110,25 @@ services:
110110
networks:
111111
- celestia-zkevm-net
112112

113+
hyperlane-init:
114+
image: ghcr.io/celestiaorg/hyperlane-init:latest
115+
container_name: hyperlane-init
116+
volumes:
117+
- hyperlane:/home/hyperlane/
118+
entrypoint: "scripts/docker-entrypoint.sh"
119+
depends_on:
120+
celestia-validator:
121+
condition: service_healthy
122+
reth:
123+
condition: service_started
124+
restart: "no"
125+
networks:
126+
- celestia-zkevm-net
127+
113128
volumes:
114129
celestia-app:
115130
celestia-bridge:
131+
hyperlane:
116132
reth:
117133

118134
networks:

hyperlane/Dockerfile

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
FROM golang:1.24.3-alpine AS go-builder
2+
3+
WORKDIR /home/hyperlane
4+
5+
COPY hyperlane/go.* /home/hyperlane/
6+
COPY hyperlane/cmd /home/hyperlane/cmd
7+
8+
# Build your Go CLI for cosmosnative deployment
9+
RUN go build -o hyp ./cmd/hyp
10+
11+
FROM node:24-slim
12+
13+
# Install the hyperlane CLI (used for evm deployment)
14+
RUN npm install -g @hyperlane-xyz/cli
15+
16+
COPY --from=go-builder /home/hyperlane/hyp /usr/local/bin/hyp
17+
18+
WORKDIR /home/hyperlane
19+
20+
COPY hyperlane/configs /home/hyperlane/configs
21+
COPY hyperlane/registry /home/hyperlane/registry
22+
COPY hyperlane/scripts /home/hyperlane/scripts
23+
24+
ENTRYPOINT [ "scripts/docker-entrypoint.sh" ]

hyperlane/cmd/hyp/cmd/cmd.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package cmd
33
import (
44
"encoding/json"
55
"log"
6+
"os"
67

78
"github.com/bcp-innovations/hyperlane-cosmos/util"
89
ismtypes "github.com/bcp-innovations/hyperlane-cosmos/x/core/01_interchain_security/types"
@@ -111,6 +112,12 @@ func getDeployCmd() *cobra.Command {
111112
log.Fatalf("failed to marshal config: %v", err)
112113
}
113114

115+
outputPath := "hyperlane-cosmosnative.json"
116+
err = os.WriteFile(outputPath, out, 0644)
117+
if err != nil {
118+
log.Fatalf("failed to write JSON file: %v", err)
119+
}
120+
114121
cmd.Printf("successfully deployed Hyperlane: \n%s", string(out))
115122
},
116123
}

hyperlane/registry/chains/celestia/metadata.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
# yaml-language-server: $schema=https://raw.githubusercontent.com/hyperlane-xyz/hyperlane-registry/v15.2.0/chains/schema.json
2+
# NOTE: The following chain spec is unused by the official Hyperlane CLI until cosmosnative support is added
23
bech32Prefix: celestia
34
blockExplorers:
45
- apiUrl: https://apis.mintscan.io/v1/celestia

hyperlane/registry/chains/rethlocal/metadata.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,5 @@ nativeToken:
1010
symbol: ETH
1111
protocol: ethereum
1212
rpcUrls:
13-
- http: http://localhost:8545
13+
- http: http://reth:8545
1414
technicalStack: other
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1+
# NOTE: The following deployment strategy file is unused by the official Hyperlane CLI until cosmosnative support is added
12
celestia:
23
submitter:
34
chain: celestia
45
privateKey: 00ae97487709f19987c2d62caab232d2bb5e489fc319480970782096bf1eda6a
56
type: jsonRpc
67
userAddress: celestia13vedhr3w833pdwlr9ctnqjc5ezne8sfz7n63vj
7-
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
#!/bin/bash
2+
3+
set -euo pipefail
4+
5+
export HYP_KEY=0x82bfcfadbf1712f6550d8d2c00a39f05b33ec78939d0167be2a737d691f33a6a
6+
7+
CONFIG_FILE="hyperlane-cosmosnative.json"
8+
9+
if [[ ! -f "$CONFIG_FILE" ]]; then
10+
echo "Using Hyperlane registry:"
11+
hyperlane registry list --registry ./registry
12+
13+
echo "Deploying Hyperlane core EVM contracts..."
14+
hyperlane core deploy --chain rethlocal --registry ./registry --yes
15+
16+
echo "Deploying Hyperlane warp synthetic token EVM contracts..."
17+
hyperlane warp deploy --config ./configs/warp-config.yaml --registry ./registry --yes
18+
19+
echo "Deploying Hyperlane on cosmosnative..."
20+
hyp deploy celestia-validator:9090
21+
else
22+
echo "Skipping deployment: $CONFIG_FILE already exists."
23+
fi

0 commit comments

Comments
 (0)