Skip to content

Commit

Permalink
chore: add local sequencer and docker file (#20)
Browse files Browse the repository at this point in the history
* add local sequencer and docker file

* add docker build to ci

* upgrade compat to go 1.23

* expose 50051
  • Loading branch information
gupadhyaya authored Oct 22, 2024
1 parent c655a9f commit c5564f1
Show file tree
Hide file tree
Showing 5 changed files with 107 additions and 0 deletions.
20 changes: 20 additions & 0 deletions .github/workflows/docker-build-publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
name: Docker Build & Publish

# Trigger on all push events, new semantic version tags, and all PRs
on:
push:
branches:
- "main"
tags:
- "v*"
pull_request:

jobs:
go-sequencing-docker:
permissions:
contents: write
packages: write
uses: rollkit/.github/.github/workflows/[email protected] # yamllint disable-line rule:line-length
with:
dockerfile: Dockerfile
secrets: inherit
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
build/
21 changes: 21 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
FROM --platform=$BUILDPLATFORM golang:1.23-alpine AS build-env

# Set working directory for the build
WORKDIR /src

COPY . .

RUN go mod tidy -compat=1.23 && \
go build /src/cmd/local-sequencer/main.go

# Final image
FROM alpine:3.18.3

WORKDIR /root

# Copy over binaries from the build-env
COPY --from=build-env /src/main /usr/bin/local-sequencer

EXPOSE 50051

CMD ["local-sequencer", "-listen-all"]
8 changes: 8 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
LDFLAGS=-ldflags="-X '$(versioningPath).buildTime=$(shell date)' -X '$(versioningPath).lastCommit=$(shell git rev-parse HEAD)' -X '$(versioningPath).semanticVersion=$(shell git describe --tags --dirty=-dev 2>/dev/null || git rev-parse --abbrev-ref HEAD)'"
DOCKER := $(shell which docker)
DOCKER_BUF := $(DOCKER) run --rm -v $(CURDIR):/workspace --workdir /workspace bufbuild/buf

Expand All @@ -7,6 +8,12 @@ pkgs := $(shell go list ./...)
run := .
count := 1

## build: Build local-da binary.
build:
@echo "--> Building local-sequencer"
@go build -o build/ ${LDFLAGS} ./...
.PHONY: build

## help: Show this help message
help: Makefile
@echo " Choose a command run in "$(PROJECTNAME)":"
Expand Down Expand Up @@ -40,6 +47,7 @@ lint: vet
@golangci-lint run
@echo "--> Running markdownlint"
@markdownlint --config .markdownlint.yaml '**/*.md'
@hadolint Dockerfile
@echo "--> Running yamllint"
@yamllint --no-warnings . -c .yamllint.yml

Expand Down
57 changes: 57 additions & 0 deletions cmd/local-sequencer/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
package main

import (
"flag"
"fmt"
"log"
"net"
"os"
"os/signal"
"syscall"

"github.com/rollkit/go-sequencing/proxy/grpc"
"github.com/rollkit/go-sequencing/test"
)

const (
defaultHost = "localhost"
defaultPort = "50051"
defaultRollupId = "rollup-id"
)

func main() {
var (
host string
port string
rollupId string
listenAll bool
)
flag.StringVar(&port, "port", defaultPort, "listening port")
flag.StringVar(&host, "host", defaultHost, "listening address")
flag.StringVar(&rollupId, "rollup-id", defaultRollupId, "rollup id")
flag.BoolVar(&listenAll, "listen-all", false, "listen on all network interfaces (0.0.0.0) instead of just localhost")
flag.Parse()

if listenAll {
host = "0.0.0.0"
}

d := test.NewDummySequencer([]byte(rollupId))
srv := grpc.NewServer(d, d, d)
log.Printf("Listening on: %s:%s", host, port)

listenAddress := fmt.Sprintf("%s:%s", host, port)
lis, err := net.Listen("tcp", listenAddress)
if err != nil {
log.Fatal("error while serving:", err)
}
go func() {
_ = srv.Serve(lis)
}()

interrupt := make(chan os.Signal, 1)
signal.Notify(interrupt, os.Interrupt, syscall.SIGINT)
<-interrupt
fmt.Println("\nCtrl+C pressed. Exiting...")
os.Exit(0)
}

0 comments on commit c5564f1

Please sign in to comment.