Commit 0f18f88
Changed files (4)
.gitignore
@@ -0,0 +1,1 @@
+sparkled
.gitlab-ci.yml
@@ -7,13 +7,19 @@ build image:
before_script:
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
script:
- - echo "Building $CONTAINER_IMAGE_COMMIT"
- - docker build --tag "$CONTAINER_IMAGE_COMMIT" .
+ - IMAGE_TAG=$CONTAINER_IMAGE_COMMIT make build-image
- docker push $CONTAINER_IMAGE_COMMIT
variables:
CONTAINER_IMAGE_COMMIT: $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA
-test:
+unit:
image: golang:alpine
+ stage: test
script:
- - go test ./...
+ - make test
+
+integration:
+ image: golang:alpine
+ stage: test
+ script:
+ - make integration-test
Dockerfile
@@ -1,9 +1,15 @@
# syntax=docker/dockerfile:1
-FROM golang:1.24.0
+FROM golang:1.24.0 AS build
ENV BIND_ADDR=":8080"
ENV CGO_ENABLED=0
WORKDIR /app
COPY . ./
-RUN go build -o /bin/sparkled ./cmd/sparkled/main.go
+RUN make build && mv ./sparkled /bin/sparkled
EXPOSE 8080
CMD ["/bin/sparkled"]
+
+FROM scratch
+WORKDIR /var/www/
+COPY --from=build /bin/sparkled /bin/sparkled
+COPY --from=build /app/public /var/www/public
+CMD ["/bin/sparkled"]
Makefile
@@ -0,0 +1,31 @@
+PROJECT_NAME := $(shell basename $(shell pwd))
+GIT_BRANCH := $(shell git rev-parse --abbrev-ref HEAD | sed 's/\//_/g')
+IMAGE_TAG := $(PROJECT_NAME):$(GIT_BRANCH)
+
+.PHONY: build-test-image integration-test
+
+sparkled:
+ go build -o sparkled ./cmd/sparkled/main.go
+
+clean:
+ rm -f sparkled
+
+build: sparkled
+
+test:
+ go test ./...
+
+build-image:
+ docker build --tag $(IMAGE_TAG) .
+
+build-builder-image:
+ docker build --target build --tag $(IMAGE_TAG) .
+
+run: build
+ BIND_ADDR=:8080 ./sparkled
+
+run-image: build-image
+ docker run -it $(IMAGE_TAG)
+
+sh-image: build-builder-image
+ docker run -it $(IMAGE_TAG) /bin/sh