[CI] backward compatible executable compilation

Add a new static-executable target to use in Dockerfiles and restore
the $(EXECUTABLE) target to what it was before to for backward
compatibility.

The release process now builds static executables instead of
dynamically linked ones which makes them more portable. It changes the
requirements at compile time and is not backward compatible. In
particular it may break packaging that rely on the target that
currently creates a dynamically linked executable.
This commit is contained in:
Earl Warren 2023-06-28 07:37:05 +02:00
parent c4d52f97c2
commit 84d02a174a
No known key found for this signature in database
GPG key ID: 0579CB2928A78A00
3 changed files with 6 additions and 3 deletions

View file

@ -36,7 +36,7 @@ WORKDIR ${GOPATH}/src/code.gitea.io/gitea
RUN make clean-all RUN make clean-all
RUN make frontend RUN make frontend
RUN go build contrib/environment-to-ini/environment-to-ini.go && xx-verify environment-to-ini RUN go build contrib/environment-to-ini/environment-to-ini.go && xx-verify environment-to-ini
RUN make backend && xx-verify gitea RUN make go-check generate-backend static-executable && xx-verify gitea
FROM docker.io/library/alpine:3.18 FROM docker.io/library/alpine:3.18
LABEL maintainer="contact@forgejo.org" LABEL maintainer="contact@forgejo.org"

View file

@ -36,7 +36,7 @@ WORKDIR ${GOPATH}/src/code.gitea.io/gitea
RUN make clean-all RUN make clean-all
RUN make frontend RUN make frontend
RUN go build contrib/environment-to-ini/environment-to-ini.go && xx-verify environment-to-ini RUN go build contrib/environment-to-ini/environment-to-ini.go && xx-verify environment-to-ini
RUN make backend && xx-verify gitea RUN make go-check generate-backend static-executable && xx-verify gitea
FROM docker.io/library/alpine:3.18 FROM docker.io/library/alpine:3.18
LABEL maintainer="contact@forgejo.org" LABEL maintainer="contact@forgejo.org"

View file

@ -808,7 +808,10 @@ security-check:
go run $(GOVULNCHECK_PACKAGE) ./... go run $(GOVULNCHECK_PACKAGE) ./...
$(EXECUTABLE): $(GO_SOURCES) $(TAGS_PREREQ) $(EXECUTABLE): $(GO_SOURCES) $(TAGS_PREREQ)
CGO_CFLAGS="$(CGO_CFLAGS)" $(GO) build $(GOFLAGS) $(EXTRA_GOFLAGS) -tags 'netgo osusergo $(TAGS)' -ldflags '-s -w -linkmode external -extldflags "-static" $(LDFLAGS)' -o $@ CGO_CFLAGS="$(CGO_CFLAGS)" $(GO) build $(GOFLAGS) $(EXTRA_GOFLAGS) -tags '$(TAGS)' -ldflags '-s -w $(LDFLAGS)' -o $@
static-executable: $(GO_SOURCES) $(TAGS_PREREQ)
CGO_CFLAGS="$(CGO_CFLAGS)" $(GO) build $(GOFLAGS) $(EXTRA_GOFLAGS) -tags 'netgo osusergo $(TAGS)' -ldflags '-s -w -linkmode external -extldflags "-static" $(LDFLAGS)' -o $(EXECUTABLE)
.PHONY: release .PHONY: release
release: frontend generate release-linux release-copy release-compress vendor release-sources release-check release: frontend generate release-linux release-copy release-compress vendor release-sources release-check