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 workflow for building Docker image on commit to main #4

Merged
merged 1 commit into from
Jun 6, 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
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
---
name: "Build"

on:
push:
branches:
- main

jobs:
build:
name: "Build Docker image and push to Dockerhub"
runs-on: ubuntu-latest
env:
AWS_REGION: eu-west-1

steps:
- uses: actions/checkout@v3

# - name: Configure AWS Credentials
# uses: aws-actions/configure-aws-credentials@v1.6.1
# with:
# role-to-assume: arn:aws:iam::118330671040:role/duneapi-ci
# aws-region: ${{ env.AWS_REGION }}

# - name: Login to Amazon ECR
# id: login-ecr
# uses: aws-actions/amazon-ecr-login@v1

- env:
GITHUB_TOKEN: ${{ secrets.DUNE_ENG_ACCESS_TOKEN }}
ECR_REGISTRY: public.ecr.aws/duneanalytics
ECR_REPOSITORY: blockchain-ingester
run: |
make image-build
make image-push
2 changes: 1 addition & 1 deletion .github/workflows/pr.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ on:

jobs:
test:
name: "Build Docker image and push to Dockerhub"
name: "Lint and test"
Copy link
Member Author

@vegarsti vegarsti Jun 5, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I messed up the name in #3

runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
Expand Down
24 changes: 24 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
FROM golang:1.22-bookworm AS builder
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder if we should use 1.22-alpine


RUN apt update && apt install -y curl make

ARG GITHUB_TOKEN

# first copy just enough to pull all dependencies, to cache this layer
COPY go.mod go.sum Makefile /app/
WORKDIR /app/
RUN git config --global url."https://dune-eng:${GITHUB_TOKEN}@github.com".insteadOf "https://github.com" \
&& make setup

# lint, build, etc..
COPY . /app/
RUN make build

FROM debian:bookworm-slim
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

and use alpine:3.20 here

of course we then need to use apk instead of apt.. but maybe we just stick w/ debian

RUN apt update \
&& apt install -y ca-certificates \
&& apt clean \
&& rm -rf /var/lib/apt/lists/*

COPY --from=builder /app/ingester /app/
ENTRYPOINT ["/app/ingester"]
16 changes: 8 additions & 8 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
.PHONY: all setup lint harvester test image-build image-push
.PHONY: all setup lint build test image-build image-push

APPLICATION := harvester
APPLICATION := ingester
GITHUB_SHA ?= HEAD
REF_TAG := $(shell echo ${GITHUB_REF_NAME} | tr -cd '[:alnum:]')
IMAGE_TAG := ${ECR_REGISTRY}/${ECR_REPOSITORY}:${REF_TAG}-$(shell git rev-parse --short "${GITHUB_SHA}")-${GITHUB_RUN_NUMBER}
TEST_TIMEOUT := 10s

all: lint test harvester
all: lint test build

setup: bin/golangci-lint bin/gofumpt
go mod download
Expand All @@ -16,8 +16,8 @@ bin/golangci-lint:
bin/gofumpt: bin
GOBIN=$(PWD)/bin go install mvdan.cc/gofumpt@v0.6.0

harvester: lint cmd/main.go
go build -o harvester cmd/main.go
build: lint cmd/main.go
go build -o ingester cmd/main.go

lint: bin/golangci-lint bin/gofumpt
go fmt ./...
Expand All @@ -31,11 +31,11 @@ test:
go test -timeout=$(TEST_TIMEOUT) -race -bench=. -benchmem -cover ./...

image-build:
@echo "# Building harvester docker image..."
@echo "# Building ingester docker image..."
docker build -t $(APPLICATION) -f Dockerfile --build-arg GITHUB_TOKEN=${GITHUB_TOKEN} .

image-push: image-build
@echo "# Pushing harvester docker image..."
@echo "# Pushing ingester docker image..."
docker tag $(APPLICATION) ${IMAGE_TAG}
docker push ${IMAGE_TAG}
# docker push ${IMAGE_TAG}
docker rmi ${IMAGE_TAG}
Loading