mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2025-10-24 11:02:42 +00:00
Refs: https://codeberg.org/forgejo/website/pulls/230 (cherry picked from commit87d56bf6c7) [CI] Forgejo Actions based release process (squash) base64 -w0 to avoid wrapping when the doer name is long as it creates a broken config.json (cherry picked from commit9efdc27e49) [CI] Forgejo Actions based release process (squash) generate .xz files and sources Generate .xz files Check .sha256 Generate the source tarbal (cherry picked from commit7afec520c4) [CI] Forgejo Actions based release process (squash) release notes (cherry picked from commitd8f4f4807b) [CI] Forgejo Actions based release process (squash) publish and sign release (cherry picked from commita52778c747) (cherry picked from commitcf2ec62740) [CI] Forgejo Actions based release process (squash) version use Actions environment variables in Makefile (#25319) (#25318) uses Actions variable to determine the version. But Forgejo builds happen in a container where they are not available. Do not use them. Also verify the version of the binary is as expected for sanity check. (cherry picked from commit6decf111a1) (cherry picked from commit206d0b3886)
91 lines
2.6 KiB
Docker
91 lines
2.6 KiB
Docker
FROM --platform=$BUILDPLATFORM tonistiigi/xx AS xx
|
|
|
|
FROM --platform=$BUILDPLATFORM docker.io/library/golang:1.20-alpine3.18 as build-env
|
|
|
|
ARG GOPROXY
|
|
ENV GOPROXY ${GOPROXY:-direct}
|
|
|
|
ARG GITEA_VERSION
|
|
ARG TAGS="sqlite sqlite_unlock_notify"
|
|
ENV TAGS "bindata timetzdata $TAGS"
|
|
ARG CGO_EXTRA_CFLAGS
|
|
|
|
#
|
|
# Transparently cross compile for the target platform
|
|
#
|
|
COPY --from=xx / /
|
|
ARG TARGETPLATFORM
|
|
RUN apk --no-cache add clang lld
|
|
RUN xx-apk --no-cache add gcc musl-dev
|
|
ENV CGO_ENABLED=1
|
|
RUN xx-go --wrap
|
|
#
|
|
# for go generate and binfmt to find
|
|
# without it the generate phase will fail with
|
|
# #19 25.04 modules/public/public_bindata.go:8: running "go": exit status 1
|
|
# #19 25.39 aarch64-binfmt-P: Could not open '/lib/ld-musl-aarch64.so.1': No such file or directory
|
|
# why exactly is it needed? where is binfmt involved?
|
|
#
|
|
RUN cp /*-alpine-linux-musl*/lib/ld-musl-*.so.1 /lib || true
|
|
|
|
RUN apk --no-cache add build-base git nodejs npm
|
|
|
|
COPY . ${GOPATH}/src/code.gitea.io/gitea
|
|
WORKDIR ${GOPATH}/src/code.gitea.io/gitea
|
|
|
|
RUN make clean-all
|
|
RUN make frontend
|
|
RUN go build contrib/environment-to-ini/environment-to-ini.go && xx-verify environment-to-ini
|
|
RUN make backend && xx-verify gitea
|
|
|
|
FROM docker.io/library/alpine:3.18
|
|
LABEL maintainer="contact@forgejo.org"
|
|
|
|
EXPOSE 2222 3000
|
|
|
|
RUN apk --no-cache add \
|
|
bash \
|
|
ca-certificates \
|
|
dumb-init \
|
|
gettext \
|
|
git \
|
|
curl \
|
|
gnupg
|
|
|
|
RUN addgroup \
|
|
-S -g 1000 \
|
|
git && \
|
|
adduser \
|
|
-S -H -D \
|
|
-h /var/lib/gitea/git \
|
|
-s /bin/bash \
|
|
-u 1000 \
|
|
-G git \
|
|
git
|
|
|
|
RUN mkdir -p /var/lib/gitea /etc/gitea
|
|
RUN chown git:git /var/lib/gitea /etc/gitea
|
|
|
|
COPY docker/rootless /
|
|
COPY --from=build-env --chown=root:root /go/src/code.gitea.io/gitea/gitea /app/gitea/gitea
|
|
COPY --from=build-env --chown=root:root /go/src/code.gitea.io/gitea/environment-to-ini /usr/local/bin/environment-to-ini
|
|
COPY --from=build-env /go/src/code.gitea.io/gitea/contrib/autocompletion/bash_autocomplete /etc/profile.d/gitea_bash_autocomplete.sh
|
|
RUN chmod 755 /usr/local/bin/docker-entrypoint.sh /usr/local/bin/docker-setup.sh /app/gitea/gitea /usr/local/bin/gitea /usr/local/bin/environment-to-ini
|
|
RUN chmod 644 /etc/profile.d/gitea_bash_autocomplete.sh
|
|
|
|
#git:git
|
|
USER 1000:1000
|
|
ENV GITEA_WORK_DIR /var/lib/gitea
|
|
ENV GITEA_CUSTOM /var/lib/gitea/custom
|
|
ENV GITEA_TEMP /tmp/gitea
|
|
ENV TMPDIR /tmp/gitea
|
|
|
|
#TODO add to docs the ability to define the ini to load (useful to test and revert a config)
|
|
ENV GITEA_APP_INI /etc/gitea/app.ini
|
|
ENV HOME "/var/lib/gitea/git"
|
|
VOLUME ["/var/lib/gitea", "/etc/gitea"]
|
|
WORKDIR /var/lib/gitea
|
|
|
|
ENTRYPOINT ["/usr/bin/dumb-init", "--", "/usr/local/bin/docker-entrypoint.sh"]
|
|
CMD []
|
|
|