diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index bfe6b5e98..356c092f2 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -97,7 +97,7 @@ jobs: - name: Install env: - SEIHON_VERSION: v0.8.3 + SEIHON_VERSION: v0.8.4 run: curl -sfL https://raw.githubusercontent.com/ldez/seihon/master/godownloader.sh | sudo bash -s -- -b $GOPATH/bin ${SEIHON_VERSION} - name: Login @@ -107,7 +107,7 @@ jobs: password: ${{ secrets.DOCKER_PASS }} - name: Publish - run: make publish-latest + run: make publish-latest-ci dockerrelease: diff --git a/Makefile b/Makefile index 91219c5f8..57cb2ebae 100644 --- a/Makefile +++ b/Makefile @@ -78,6 +78,11 @@ publish-latest: seihon publish --dry-run=false --template docker/tmpl.Dockerfile --base-runtime-image alpine:$(ALPINE_VERSION) \ --image-name $(DOCKER_IMAGE) -v "latest" --targets=$(TARGETS) +publish-latest-ci: + @echo Version: $(VERSION) $(BUILD_DATE) + seihon publish --dry-run=false --template docker/ci.Dockerfile --base-runtime-image alpine:$(ALPINE_VERSION) \ + --image-name $(DOCKER_IMAGE) -v "latest" --targets=$(TARGETS) + publish-images: @echo Version: $(VERSION) $(BUILD_DATE) seihon publish --dry-run=false --template docker/tmpl.Dockerfile --base-runtime-image alpine:$(ALPINE_VERSION) \ diff --git a/docker/ci.Dockerfile b/docker/ci.Dockerfile new file mode 100644 index 000000000..99cda0387 --- /dev/null +++ b/docker/ci.Dockerfile @@ -0,0 +1,48 @@ +# STEP 2 build executable binary +FROM golang:1.16-alpine as builder + +WORKDIR /build + +# Install git + SSL ca certificates. +# Git is required for fetching the dependencies. +# Ca-certificates is required to call HTTPS endpoints. +RUN apk update && apk add --no-cache git ca-certificates tzdata alpine-sdk && update-ca-certificates + +# install go tools and cache modules +COPY Makefile . +COPY go.mod . +COPY go.sum . +RUN make install +RUN go mod download + +# build +COPY . . +RUN make assets +RUN GOARCH={{ .GoARCH }} GOARM={{ .GoARM }} make build + + +# STEP 3 build a small image including module support +FROM {{ .RuntimeImage }} + +WORKDIR /app + +ENV TZ=Europe/Berlin + +# Import from builder +COPY --from=builder /usr/share/zoneinfo /usr/share/zoneinfo +COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ +COPY --from=builder /build/evcc /usr/local/bin/evcc + +COPY docker/bin/* /app/ + +# UI and /api +EXPOSE 7070/tcp +# KEBA charger +EXPOSE 7090/udp +# SMA Energy Manager +EXPOSE 9522/udp + +HEALTHCHECK --interval=60s --start-period=60s --timeout=30s --retries=3 CMD [ "evcc", "health" ] + +ENTRYPOINT [ "/app/entrypoint.sh" ] +CMD [ "evcc" ]