diff --git a/.drone.yml b/.drone.yml index e059ffd..bf3862e 100644 --- a/.drone.yml +++ b/.drone.yml @@ -3,15 +3,13 @@ type: kubernetes name: default steps: - - name: generate_tags - image: node - commands: - - echo -n "${DRONE_BRANCH}-$(date +'%Y%m%d%H%M%S')-${DRONE_COMMIT:0:10}, latest" > .tags + # Unit Tests - name: unit test image: golang commands: - make tests_unit + # Integration Tests (Every Month) - name: integration test image: golang commands: @@ -21,3 +19,17 @@ steps: - cron cron: - integration-test + + # Publish Dev Docker Image + - name: publish_docker + image: plugins/docker + settings: + repo: gitea.va.reichard.io/evan/bookmanager + registry: gitea.va.reichard.io + dockerfile: Dockerfile-amd64 + tags: + - dev + username: + from_secret: docker_username + password: + from_secret: docker_password diff --git a/Dockerfile-amd64 b/Dockerfile-amd64 new file mode 100644 index 0000000..7be220f --- /dev/null +++ b/Dockerfile-amd64 @@ -0,0 +1,30 @@ +# Certificate Store +FROM alpine as certs +RUN apk update && apk add ca-certificates + +# Build Image +FROM golang:1.20 AS build + +# Install Dependencies +RUN apt-get update -y +RUN apt install -y gcc-x86-64-linux-gnu + +# Create Package Directory +WORKDIR /src +RUN mkdir -p /opt/bookmanager + +# Cache Dependencies & Compile +RUN --mount=target=. \ + --mount=type=cache,target=/root/.cache/go-build \ + --mount=type=cache,target=/go/pkg \ + go build -o /opt/bookmanager/server; \ + cp -a ./templates /opt/bookmanager/templates; \ + cp -a ./assets /opt/bookmanager/assets; + +# Create Image +FROM busybox:1.36 +COPY --from=certs /etc/ssl/certs /etc/ssl/certs +COPY --from=build /opt/bookmanager /opt/bookmanager +WORKDIR /opt/bookmanager +EXPOSE 8585 +ENTRYPOINT ["/opt/bookmanager/server", "serve"]