From 2d7f44eeece3a9701f0d1262088fdcd5e99a2bb7 Mon Sep 17 00:00:00 2001 From: Harvey Tindall Date: Sun, 11 Aug 2024 16:28:21 +0100 Subject: [PATCH] build: use goreleaser within dockerfile jfa-go-build-docker has also been updated with libolm deps for all arches, and version.sh now tells goreleaser to do internal or external. --- .goreleaser.yml | 13 ++++++++----- Dockerfile | 29 +++++++++++------------------ scripts/version.sh | 9 +++++++++ 3 files changed, 28 insertions(+), 23 deletions(-) diff --git a/.goreleaser.yml b/.goreleaser.yml index e654e54..24e4376 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -9,10 +9,12 @@ release: before: hooks: - npm i - - make precompile INTERNAL=on + - make precompile builds: - id: notray dir: ./ + flags: + - -tags={{ .Env.JFA_GO_TAG }} ldflags: - -X main.version={{.Env.JFA_GO_VERSION}} -X main.commit={{.ShortCommit}} -X main.updater=binary {{.Env.JFA_GO_STRIP}} -X main.cssVersion={{.Env.JFA_GO_CSS_VERSION}} -X main.buildTimeUnix={{.Env.JFA_GO_BUILD_TIME}} -X main.builtBy="{{.Env.JFA_GO_BUILT_BY}}" goos: @@ -28,9 +30,10 @@ builds: - CGO_ENABLED=1 - CC={{ if eq .Arch "amd64" }}x86_64{{ else if eq .Arch "arm64" }}aarch64{{ else }}{{ .Arch }}{{ end }}-linux-gnu{{ if eq .Arch "arm" }}eabihf{{ end }}-gcc - CXX={{ if eq .Arch "amd64" }}x86_64{{ else if eq .Arch "arm64" }}aarch64{{ else }}{{ .Arch }}{{ end }}-linux-gnu{{ if eq .Arch "arm" }}eabihf{{ end }}-gcc + - PKG_CONFIG_PATH=/usr/lib/{{ if eq .Arch "amd64" }}x86_64{{ else if eq .Arch "arm64" }}aarch64{{ else }}{{ .Arch }}{{ end }}-linux-gnu{{ if eq .Arch "arm" }}eabihf{{ end }}/pkgconfig:$PKG_CONFIG_PATH - GOARM={{ if eq .Arch "arm" }}7{{ end }} flags: - - -tags=e2ee + - -tags=e2ee,{{ .Env.JFA_GO_TAG }} ldflags: - -X main.version={{.Env.JFA_GO_VERSION}} -X main.commit={{.ShortCommit}} -X main.updater=binary {{.Env.JFA_GO_STRIP}} -X main.cssVersion={{.Env.JFA_GO_CSS_VERSION}} -X main.buildTimeUnix={{.Env.JFA_GO_BUILD_TIME}} -X main.builtBy="{{.Env.JFA_GO_BUILT_BY}}" goos: @@ -46,7 +49,7 @@ builds: - CC=x86_64-w64-mingw32-gcc - CXX=x86_64-w64-mingw32-g++ flags: - - -tags=tray,e2ee + - -tags=tray,{{ .Env.JFA_GO_TAG }} ldflags: - -X main.version={{.Env.JFA_GO_VERSION}} -X main.commit={{.ShortCommit}} -X main.updater=binary {{.Env.JFA_GO_STRIP}} -X main.cssVersion={{.Env.JFA_GO_CSS_VERSION}} -X main.buildTimeUnix={{.Env.JFA_GO_BUILD_TIME}} -X main.builtBy="{{.Env.JFA_GO_BUILT_BY}}" -H=windowsgui goos: @@ -59,9 +62,9 @@ builds: - CGO_ENABLED=1 - CC=x86_64-linux-gnu-gcc - CXX=x86_64-linux-gnu-gcc - - PKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig:$PKG_CONFIG_PATH + - PKG_CONFIG_PATH=/usr/lib/{{ if eq .Arch "amd64" }}x86_64{{ else if eq .Arch "arm64" }}aarch64{{ else }}{{ .Arch }}{{ end }}-linux-gnu{{ if eq .Arch "arm" }}eabihf{{ end }}/pkgconfig:$PKG_CONFIG_PATH flags: - - -tags=tray,e2ee + - -tags=tray,e2ee,{{ .Env.JFA_GO_TAG }} ldflags: - -X main.version={{.Env.JFA_GO_VERSION}} -X main.commit={{.ShortCommit}} -X main.updater=binary {{.Env.JFA_GO_STRIP}} -X main.cssVersion={{.Env.JFA_GO_CSS_VERSION}} -X main.buildTimeUnix={{.Env.JFA_GO_BUILD_TIME}} -X main.builtBy="{{.Env.JFA_GO_BUILT_BY}}" goos: diff --git a/Dockerfile b/Dockerfile index 1fcd04e..97d414f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,31 +1,24 @@ # Use this instead if hrfee/jfa-go-build-docker doesn't support your architecture # FROM --platform=$BUILDPLATFORM golang:latest AS support FROM --platform=$BUILDPLATFORM docker.io/hrfee/jfa-go-build-docker:latest AS support +ARG BUILT_BY +ENV JFA_GO_BUILT_BY=$BUILT_BY COPY . /opt/build -# Uncomment this if hrfee/jfa-go-build-docker doesn't support your architecture -# RUN apt-get update -y \ -# && apt-get install build-essential python3-pip -y \ -# && (curl -sL https://deb.nodesource.com/setup_current.x | bash -) \ -# && apt-get install nodejs -RUN (cd /opt/build; npm i; make precompile INTERNAL=off GOESBUILD=off) \ - && sed -i 's#id="password_resets-watch_directory" placeholder="/config/jellyfin"#id="password_resets-watch_directory" value="/jf" disabled#g' /opt/build/build/data/html/setup.html +# RUN curl -sfL https://goreleaser.com/static/run > /goreleaser && chmod +x /goreleaser +RUN cd /opt/build; INTERNAL=off ./scripts/version.sh /goreleaser build --auto-snapshot --skip=validate --clean --id notray-e2ee +RUN mv /opt/build/dist/*_linux_arm_6 /opt/build/dist/placeholder_linux_arm +RUN sed -i 's#id="password_resets-watch_directory" placeholder="/config/jellyfin"#id="password_resets-watch_directory" value="/jf" disabled#g' /opt/build/build/data/html/setup.html -ARG TARGETARCH -ENV GOARCH=$TARGETARCH -ARG BUILT_BY -ENV BUILTBY=$BUILT_BY +FROM golang:bookworm AS final + +RUN echo hello from arch ${TARGETARCH} +COPY --from=support /opt/build/dist/*_linux_${TARGETARCH}* /opt/jfa-go +COPY --from=support /opt/build/build/data /opt/jfa-go/ RUN apt-get update -y && apt-get install libolm-dev -y -RUN (cd /opt/build; make compile INTERNAL=off UPDATER=docker) - -FROM golang:bookworm - -RUN apt-get update -y && apt-get install libolm-dev -y -COPY --from=support /opt/build/build /opt/jfa-go - EXPOSE 8056 EXPOSE 8057 diff --git a/scripts/version.sh b/scripts/version.sh index dabd5af..b76100e 100755 --- a/scripts/version.sh +++ b/scripts/version.sh @@ -15,6 +15,15 @@ else export JFA_GO_MINIFY="" fi +if [[ -z "${INTERNAL}" ]]; then + export INTERNAL=on +fi +if [[ "${INTERNAL}" == "on" ]]; then + export JFA_GO_TAG="" +else + export JFA_GO_TAG="external" +fi + JFA_GO_VERSION=$(git describe --exact-match HEAD 2> /dev/null || echo 'vgit') TIMEOUT=60m