Skip to content
This repository has been archived by the owner on Mar 16, 2024. It is now read-only.

Commit

Permalink
Add support for building and pushing Acornfile from repo's code
Browse files Browse the repository at this point in the history
  • Loading branch information
tylerslaton committed Mar 3, 2023
1 parent ae5e2e7 commit 76398fc
Show file tree
Hide file tree
Showing 21 changed files with 3,004 additions and 4,155 deletions.
2 changes: 0 additions & 2 deletions .github/dco.yml

This file was deleted.

30 changes: 30 additions & 0 deletions .github/workflows/acorn.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
name: Acorn
on:
push:
branches:
- main
tags:
- v*

jobs:
build_push:
runs-on: ubuntu-latest
steps:
- name: Check out the repo
uses: actions/checkout@v3

- name: Setup Acorn
uses: acorn-io/actions-setup@v2

- name: Login Acorn to ghcr.io
uses: acorn-io/actions-login@v1
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Build the Acorn image
run: acorn build -t ghcr.io/${{ github.repository }}:${{ github.ref_name }} .

- name: Push to ghcr.io
run: acorn push ghcr.io/${{ github.repository }}:${{ github.ref_name }}
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
.idea
**/target
**/bin
**/gen
vendor
47 changes: 30 additions & 17 deletions Acornfile
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
containers: {
emoji: {
image: "docker.l5d.io/buoyantio/emojivoto-emoji-svc:v11"
build: {
dockerfile: "./emojivoto-emoji-svc/Dockerfile"
context: "."
}
labels: {
"app.kubernetes.io/name": "emoji"
"app.kubernetes.io/part-of": "emojivoto"
Expand All @@ -17,21 +20,11 @@ containers: {
PROM_PORT: "8801",
}
}
"vote-bot": {
image: "docker.l5d.io/buoyantio/emojivoto-web:v11"
entrypoint: ["emojivoto-vote-bot"]
labels: {
"app.kubernetes.io/name": "vote-bot"
"app.kubernetes.io/part-of": "emojivoto"
"app.kubernetes.io/version": "v11"
}

env: {
WEB_HOST: "web:80",
}
}
"voting-svc": {
image: "docker.l5d.io/buoyantio/emojivoto-voting-svc:v11"
build: {
dockerfile: "./emojivoto-voting-svc/Dockerfile"
context: "."
}
labels: {
"app.kubernetes.io/name": "voting-svc"
"app.kubernetes.io/part-of": "emojivoto"
Expand All @@ -49,7 +42,11 @@ containers: {
}
}
web: {
image: "docker.l5d.io/buoyantio/emojivoto-web:v11"
build: {
dockerfile: "./emojivoto-web/Dockerfile"
context: "."
}
entrypoint: ["emojivoto-web"]
labels: {
"app.kubernetes.io/name": "emoji"
"app.kubernetes.io/part-of": "emojivoto"
Expand All @@ -64,7 +61,23 @@ containers: {
WEB_PORT: "8080"
EMOJISVC_HOST: "emoji:8080"
VOTINGSVC_HOST: "voting-svc:8080"
INDEX_BUNDLE: "dist/index_bundle.js"
}
}

"vote-bot": {
build: {
dockerfile: "./emojivoto-web/Dockerfile"
context: "."
}
entrypoint: ["emojivoto-vote-bot"]
labels: {
"app.kubernetes.io/name": "vote-bot"
"app.kubernetes.io/part-of": "emojivoto"
"app.kubernetes.io/version": "v11"
}

env: {
WEB_HOST: "web:80",
}
}
}
4 changes: 3 additions & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
FROM buoyantio/emojivoto-svc-base:v12
ARG image_repo=""
ARG image_tag=""
FROM ${image_repo}:emojivoto-svc-base-${image_tag}

ARG svc_name

Expand Down
38 changes: 15 additions & 23 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,44 +1,36 @@
include ./common.mk
IMAGE_REPO ?= emojivoto
IMAGE_TAG ?= local

.PHONY: web emoji-svc voting-svc integration-tests push

all: build integration-tests

build-base-docker-image:
docker build . -f Dockerfile-base -t "buoyantio/emojivoto-svc-base:$(IMAGE_TAG)"

web:
$(MAKE) -C emojivoto-web

compile-web:
$(MAKE) -C emojivoto-web compile

emoji-svc:
$(MAKE) -C emojivoto-emoji-svc

voting-svc:
$(MAKE) -C emojivoto-voting-svc

build: web emoji-svc voting-svc
build: build-base-docker-image web emoji-svc voting-svc

multi-arch:
$(MAKE) -C emojivoto-web build-multi-arch
$(MAKE) -C emojivoto-emoji-svc build-multi-arch
$(MAKE) -C emojivoto-voting-svc build-multi-arch
%-image:
docker build . -f ./emojivoto-$*/Dockerfile -t $(IMAGE_REPO):emojivoto-$*-$(IMAGE_TAG)

deploy-to-minikube:
$(MAKE) -C emojivoto-web build-container
$(MAKE) -C emojivoto-emoji-svc build-container
$(MAKE) -C emojivoto-voting-svc build-container
kubectl delete -f emojivoto.yml || echo "ok"
kubectl apply -f emojivoto.yml
build-base:
docker build . -f Dockerfile-base -t "$(IMAGE_REPO):emojivoto-svc-base-$(IMAGE_TAG)"

deploy-to-docker-compose:
docker-compose stop
docker-compose rm -vf
$(MAKE) -C emojivoto-web build-container
$(MAKE) -C emojivoto-emoji-svc build-container
$(MAKE) -C emojivoto-voting-svc build-container
docker-compose -f ./docker-compose.yml up -d
images: build-base emoji-svc-image voting-svc-image web-image

push-%:
docker push buoyantio/emojivoto-$*:$(IMAGE_TAG)
docker push $(IMAGE_REPO):emojivoto-$*-$(IMAGE_TAG)

push: push-svc-base push-emoji-svc push-voting-svc push-web

local:
acorn run -i
34 changes: 0 additions & 34 deletions common.mk

This file was deleted.

23 changes: 23 additions & 0 deletions emojivoto-emoji-svc/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
FROM golang:1.19 as builder

WORKDIR /build

RUN apt update && \
apt install -y protobuf-compiler && \
go install google.golang.org/protobuf/cmd/[email protected] && \
go install google.golang.org/grpc/cmd/[email protected]

COPY emojivoto-emoji-svc emojivoto-emoji-svc
COPY go.mod .
COPY go.sum .
COPY Makefile .
ADD proto proto
RUN make emoji-svc

FROM golang:1.19 as runner

WORKDIR /app

COPY --from=builder /build/emojivoto-emoji-svc/bin/emojivoto-emoji-svc /usr/local/bin/emojivoto-emoji-svc

ENTRYPOINT [ "emojivoto-emoji-svc" ]
19 changes: 16 additions & 3 deletions emojivoto-emoji-svc/Makefile
Original file line number Diff line number Diff line change
@@ -1,6 +1,19 @@
svc_name := emojivoto-emoji-svc
all: clean compile test

all: clean protoc test package
clean:
rm -rf gen
rm -rf bin
mkdir -p bin
mkdir -p gen

include ../common.mk
PROTOC ?= protoc

protoc:
$(PROTOC) -I .. ../proto/*.proto --go_out=paths=source_relative:./gen --go-grpc_out=paths=source_relative:./gen

compile: protoc
go build -v -o bin/emojivoto-emoji-svc cmd/server.go

test:
go test ./...

Binary file removed emojivoto-emoji-svc/emojivoto-emoji-svc
Binary file not shown.
23 changes: 23 additions & 0 deletions emojivoto-voting-svc/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
FROM golang:1.19 as builder

WORKDIR /build

RUN apt update && \
apt install -y protobuf-compiler && \
go install google.golang.org/protobuf/cmd/[email protected] && \
go install google.golang.org/grpc/cmd/[email protected]

COPY emojivoto-voting-svc emojivoto-voting-svc
COPY go.mod .
COPY go.sum .
COPY Makefile .
ADD proto proto
RUN make voting-svc

FROM golang:1.19 as runner

WORKDIR /app

COPY --from=builder /build/emojivoto-voting-svc/bin/emojivoto-voting-svc /usr/local/bin/emojivoto-voting-svc

ENTRYPOINT [ "emojivoto-voting-svc" ]
19 changes: 16 additions & 3 deletions emojivoto-voting-svc/Makefile
Original file line number Diff line number Diff line change
@@ -1,5 +1,18 @@
svc_name := emojivoto-voting-svc
all: clean compile test

all: clean protoc test package
clean:
rm -rf gen
rm -rf bin
mkdir -p bin
mkdir -p gen

include ../common.mk
PROTOC ?= protoc

protoc:
$(PROTOC) -I .. ../proto/*.proto --go_out=paths=source_relative:./gen --go-grpc_out=paths=source_relative:./gen

compile: protoc
go build -v -o bin/emojivoto-voting-svc cmd/server.go

test:
go test ./...
Binary file removed emojivoto-voting-svc/emojivoto-voting-svc
Binary file not shown.
33 changes: 33 additions & 0 deletions emojivoto-web/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
FROM node:18 as webpack

WORKDIR /build

COPY emojivoto-web .

RUN make package-web

FROM golang:1.19 as bins

WORKDIR /build

RUN apt update && \
apt install -y protobuf-compiler && \
go install google.golang.org/protobuf/cmd/[email protected] && \
go install google.golang.org/grpc/cmd/[email protected]

COPY emojivoto-web emojivoto-web
COPY go.mod .
COPY go.sum .
COPY Makefile .
ADD proto proto
RUN make compile-web

FROM golang:1.19 as runner

WORKDIR /app

COPY --from=webpack /build/bin/dist ./dist
ENV INDEX_BUNDLE "dist/index_bundle.js"

COPY --from=bins /build/emojivoto-web/bin/emojivoto-vote-bot /usr/local/bin/emojivoto-vote-bot
COPY --from=bins /build/emojivoto-web/bin/emojivoto-web /usr/local/bin/emojivoto-web
31 changes: 20 additions & 11 deletions emojivoto-web/Makefile
Original file line number Diff line number Diff line change
@@ -1,18 +1,27 @@
svc_name := emojivoto-web

all: clean protoc webpack package-web test package

include ../common.mk
all: clean protoc webpack package-web compile test

webpack:
$(MAKE) -C webapp

package-web: webpack
mkdir -p $(target_dir)/web
cp web/favicon.ico $(target_dir)/web
cp -a webapp/dist $(target_dir)
mkdir -p bin/web
cp web/favicon.ico bin/web
cp -a webapp/dist bin

clean:
rm -rf gen
rm -rf bin
mkdir -p bin
mkdir -p gen

PROTOC ?= protoc

protoc:
$(PROTOC) -I .. ../proto/*.proto --go_out=paths=source_relative:./gen --go-grpc_out=paths=source_relative:./gen

compile-vote-bot:
GOOS=linux go build -v -o $(target_dir)/emojivoto-vote-bot cmd/vote-bot/main.go
compile: clean protoc
go build -v -o bin/emojivoto-vote-bot cmd/vote-bot/main.go
go build -v -o bin/emojivoto-web cmd/server.go

compile: compile-vote-bot
test:
go test ./...
2 changes: 1 addition & 1 deletion emojivoto-web/cmd/vote-bot/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ func main() {

// setting the the TTL is optional, thus invalid numbers are simply ignored
timeToLive, _ := strconv.Atoi(os.Getenv("TTL"))
var deadline time.Time = time.Unix(0, 0)
var deadline time.Time

if timeToLive != 0 {
deadline = time.Now().Add(time.Second * time.Duration(timeToLive))
Expand Down
Loading

0 comments on commit 76398fc

Please sign in to comment.