chore: add Dockerfile and basic CI test

This commit is contained in:
2022-05-23 23:26:25 +01:00
parent 0003d6f9ec
commit 64c234f07c
4 changed files with 60 additions and 0 deletions

21
.github/workflows/ci.yml vendored Normal file
View File

@@ -0,0 +1,21 @@
---
name: CI
on: [push]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-go@v2
with:
go-version: 1.18
- name: Install dependencies
run: go mod download
- name: Build binary
run: make
- name: Run and make request
run: |
./bin/dotkatapult --port=8080 &
curl --silent --retry 10 --retry-delay 1 --retry-connrefused \
http://localhost:8080/

2
.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
bin/*
/dotkatapult

13
Dockerfile Normal file
View File

@@ -0,0 +1,13 @@
FROM golang:1.18-alpine as builder
RUN apk add --no-cache git make
WORKDIR /app
COPY . .
RUN env CGO_ENABLED=0 go build -a -o dotkatapult -ldflags "-s -w"
FROM scratch
ENV PORT 8080
EXPOSE 8080
WORKDIR /
COPY --from=builder /app/dotkatapult /
CMD ["/dotkatapult"]

24
Makefile Normal file
View File

@@ -0,0 +1,24 @@
NAME = dotkatapult
BINARY = bin/${NAME}
VERSION ?= $(shell cat VERSION)
SOURCES = $(shell find . -name '*.go' -o -name 'Makefile')
$(BINARY): $(SOURCES)
CGO_ENABLED=0 go build -a -o ${BINARY} -ldflags "-s -w"
.PHONY: build
build: $(BINARY)
.PHONY: run
run: $(BINARY)
$(BINARY)
.PHONY: clean
clean:
$(eval BIN_DIR := $(shell dirname ${BINARY}))
if [ -f ${BINARY} ]; then rm ${BINARY}; fi
if [ -d ${BIN_DIR} ]; then rmdir ${BIN_DIR}; fi
.PHONY: docker
docker:
docker build -t "$(shell whoami)/$(NAME)" .