diff options
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | .gitlab-ci.yml | 14 | ||||
| -rw-r--r-- | Dockerfile | 10 | ||||
| -rw-r--r-- | Makefile | 31 |
4 files changed, 50 insertions, 6 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..392d385 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +sparkled diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9e80d44..9d5f78d 100644 --- a/.gitlab-ci.yml +++ b/.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 @@ -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"] diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..eb0c720 --- /dev/null +++ b/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 |
