Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add firehose-core #33

Merged
merged 21 commits into from
Apr 23, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 0 additions & 4 deletions .env

This file was deleted.

7 changes: 4 additions & 3 deletions .github/workflows/docker-publish.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Build ad publish Docker image
name: Build and publish Docker image

on:
push:
Expand Down Expand Up @@ -28,5 +28,6 @@ jobs:
with:
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
image: ghcr.io/fuellabs/fuel-graph-node
dockerfile: fuel-graph-node/Dockerfile
image: ghcr.io/fuellabs/fuel-subgraph
dockerfile: firehose/Dockerfile
context: firehose
5 changes: 4 additions & 1 deletion docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,10 @@ version: "3"
services:
firehose:
build:
context: ./firehose
context: firehose
dockerfile: Dockerfile
# image: 'ghcr.io/fuellabs/fuel-subgraph:cc2be21'
# platform: linux/amd64
Salka1988 marked this conversation as resolved.
Show resolved Hide resolved
ports:
- "10015:10015"
- "10016:10016"
Expand Down
20 changes: 0 additions & 20 deletions docker-graph-config.toml

This file was deleted.

37 changes: 21 additions & 16 deletions firehose/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,31 +1,36 @@
# extractor

# Stage 1: Use cargo-chef to generate a recipe
FROM lukemathwalker/cargo-chef:latest-rust-1.76-slim AS chef

WORKDIR /app

# Stage 2: Planner
FROM chef AS planner
COPY ./firehose-extract/ .
COPY ./firehose-extract/ /app/
RUN cargo chef prepare --recipe-path recipe.json

# Stage 3: Extract builder
FROM chef AS extract_builder
RUN apt update && apt install -y protobuf-compiler
COPY --from=planner /app/recipe.json recipe.json
# Build dependencies - this is the caching Docker layer!
RUN cargo chef cook --release --recipe-path recipe.json
# Build application
COPY ./firehose-extract/ .
COPY ./firehose-extract/ /app/
RUN cargo build --release

# firefuel
FROM golang:1.22.1 AS builder
COPY ./firehose-fuel/ .
RUN GOBIN=/ go install ./cmd/firefuel

# Stage 4: Go build
FROM golang:1.22-alpine as go_build
COPY ./firehose-core/ /app/firehose-core/
COPY ./substreams/ /app/substreams/
WORKDIR /app/firehose-core
RUN go mod download
ARG VERSION="dev"
RUN apk --no-cache add git
RUN go build -v -ldflags "-X main.version=${VERSION}" -o /app/firehose-core/firecore ./cmd/firecore

# Stage 5: Final stage
FROM debian
COPY --from=extract_builder /app/target/release/firehose-extract /app/firehose-extract
COPY --from=builder firefuel /app/firefuel

COPY ./firehose-fuel/devel/fuelfire/bootstrap.sh /app/start.sh
COPY --from=go_build /app/firehose-core/firecore /app/firecore
COPY --from=go_build /app/firehose-core/devel/standard/bootstrap.sh /app/start.sh
RUN chmod +x /app/start.sh

ENTRYPOINT ["/app/start.sh"]
# Additional setup if needed
ENTRYPOINT [ "/app/start.sh" ]
82 changes: 82 additions & 0 deletions firehose/firehose-core/.github/workflows/docker.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
name: Build docker image

on:
push:
tags:
- "v*"
branches:
- "develop"
- "feature/*"
workflow_dispatch:

env:
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}

jobs:
build:
runs-on: ubuntu-20.04

permissions:
contents: read
packages: write

outputs:
tags: ${{ steps.meta.outputs.tags }}

steps:
- uses: actions/checkout@v3

- uses: actions/setup-go@v5
with:
go-version: '1.22.x'

- name: Log in to the Container registry
uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Get go pseudohash
id: extract_pseudohash
shell: bash
run: |
echo "GO_PSEUDOHASH=$(go list -f '{{.Version}}' -m github.com/streamingfast/firehose-core@${{ github.sha }})" | tee $GITHUB_ENV

- name: Generate docker tags/labels from github build context
id: meta
uses: docker/metadata-action@v4
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags: |
type=ref,event=tag
type=sha,prefix=,enable=true
type=raw,value=${{ env.GO_PSEUDOHASH }}
type=raw,enable=${{ github.ref == 'refs/heads/develop' }},value=develop
flavor: |
latest=${{ startsWith(github.ref, 'refs/tags/') }}

- name: Build and push Docker image
uses: docker/build-push-action@v4
with:
context: .
build-args: |
VERSION=${{ github.event.ref }}
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}


slack-notifications:
if: ${{ !startsWith(github.ref, 'refs/tags/') && github.event_name != 'workflow_dispatch' }}
needs: [ build ]
runs-on: ubuntu-20.04
steps:
- name: Slack notification
env:
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
uses: Ilshidur/[email protected]
with:
args: |
:done: *${{ github.repository }}* Success building docker image from ${{ github.ref_type }} _${{ github.ref_name }}_ (${{ github.actor }}) :sparkling_heart: ```${{ join(needs.build.outputs.tags, ' ') }}```
7 changes: 7 additions & 0 deletions firehose/firehose-core/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
.idea
/build
/dist
.envrc
.env
.DS_Store
firehose-data*
6 changes: 6 additions & 0 deletions firehose/firehose-core/.sfreleaser
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
global:
binary: firecore
language: golang
variant: application
release:
goreleaser-docker-image: goreleaser/goreleaser-cross:v1.22
Loading
Loading