ci: include version in BuildInfo and Prometheus metrics (#1418)

This commit is contained in:
Kévin Dunglas
2025-03-19 13:27:28 +01:00
committed by GitHub
parent 432824edf1
commit 341b0240c9
7 changed files with 54 additions and 54 deletions

View File

@@ -1,14 +1,11 @@
# ignored /caddy/frankenphp/frankenphp
**/* /internal/testserver/testserver
/internal/testcli/testcli
# authorized /dist
!**/Caddyfile .DS_Store
!**/*.go .idea/
!**/go.* .vscode/
!**/*.c __debug_bin
!**/*.h frankenphp.test
!testdata/*.php caddy/frankenphp/Build
!testdata/*.txt *.log
!build-static.sh
!app.tar
!app_checksum.txt

View File

@@ -168,6 +168,7 @@ jobs:
- name: Run sanity checks - name: Run sanity checks
run: | run: |
"${BINARY}" version "${BINARY}" version
"${BINARY}" build-info
"${BINARY}" list-modules | grep frankenphp "${BINARY}" list-modules | grep frankenphp
"${BINARY}" list-modules | grep http.encoders.br "${BINARY}" list-modules | grep http.encoders.br
"${BINARY}" list-modules | grep http.handlers.mercure "${BINARY}" list-modules | grep http.handlers.mercure
@@ -262,6 +263,7 @@ jobs:
- name: Run sanity checks - name: Run sanity checks
run: | run: |
"${BINARY}" version "${BINARY}" version
"${BINARY}" build-info
"${BINARY}" list-modules | grep frankenphp "${BINARY}" list-modules | grep frankenphp
"${BINARY}" list-modules | grep http.encoders.br "${BINARY}" list-modules | grep http.encoders.br
"${BINARY}" list-modules | grep http.handlers.mercure "${BINARY}" list-modules | grep http.handlers.mercure

3
.gitignore vendored
View File

@@ -2,7 +2,10 @@
/internal/testserver/testserver /internal/testserver/testserver
/internal/testcli/testcli /internal/testcli/testcli
/dist /dist
.DS_Store
.idea/ .idea/
.vscode/ .vscode/
__debug_bin __debug_bin
frankenphp.test frankenphp.test
caddy/frankenphp/Build
*.log

View File

@@ -61,7 +61,8 @@ ENV PATH=/usr/local/go/bin:$PATH
# This is required to link the FrankenPHP binary to the PHP binary # This is required to link the FrankenPHP binary to the PHP binary
RUN apt-get update && \ RUN apt-get update && \
apt-get -y --no-install-recommends install \ apt-get -y --no-install-recommends install \
cmake \ cmake \
git \
libargon2-dev \ libargon2-dev \
libbrotli-dev \ libbrotli-dev \
libcurl4-openssl-dev \ libcurl4-openssl-dev \
@@ -75,21 +76,6 @@ RUN apt-get update && \
&& \ && \
apt-get clean apt-get clean
WORKDIR /go/src/app
COPY --link go.mod go.sum ./
RUN go mod graph | awk '{if ($1 !~ "@") print $2}' | xargs go get
WORKDIR /go/src/app/caddy
COPY --link caddy/go.mod caddy/go.sum ./
RUN go mod graph | awk '{if ($1 !~ "@") print $2}' | xargs go get
WORKDIR /go/src/app
COPY --link *.* ./
COPY --link caddy caddy
COPY --link internal internal
COPY --link testdata testdata
# Install e-dant/watcher (necessary for file watching) # Install e-dant/watcher (necessary for file watching)
WORKDIR /usr/local/src/watcher WORKDIR /usr/local/src/watcher
RUN curl -s https://api.github.com/repos/e-dant/watcher/releases/latest | \ RUN curl -s https://api.github.com/repos/e-dant/watcher/releases/latest | \
@@ -104,6 +90,18 @@ RUN curl -s https://api.github.com/repos/e-dant/watcher/releases/latest | \
cmake --install build && \ cmake --install build && \
ldconfig ldconfig
WORKDIR /go/src/app
COPY --link go.mod go.sum ./
RUN go mod graph | awk '{if ($1 !~ "@") print $2}' | xargs go get
WORKDIR /go/src/app/caddy
COPY --link caddy/go.mod caddy/go.sum ./
RUN go mod graph | awk '{if ($1 !~ "@") print $2}' | xargs go get
WORKDIR /go/src/app
COPY --link . ./
# See https://github.com/docker-library/php/blob/master/8.3/bookworm/zts/Dockerfile#L57-L59 for PHP values # See https://github.com/docker-library/php/blob/master/8.3/bookworm/zts/Dockerfile#L57-L59 for PHP values
ENV CGO_CFLAGS="-DFRANKENPHP_VERSION=$FRANKENPHP_VERSION $PHP_CFLAGS" ENV CGO_CFLAGS="-DFRANKENPHP_VERSION=$FRANKENPHP_VERSION $PHP_CFLAGS"
ENV CGO_CPPFLAGS=$PHP_CPPFLAGS ENV CGO_CPPFLAGS=$PHP_CPPFLAGS
@@ -112,10 +110,11 @@ ENV CGO_LDFLAGS="-L/usr/local/lib -lssl -lcrypto -lreadline -largon2 -lcurl -lon
RUN echo $CGO_LDFLAGS RUN echo $CGO_LDFLAGS
WORKDIR /go/src/app/caddy/frankenphp WORKDIR /go/src/app/caddy/frankenphp
RUN GOBIN=/usr/local/bin go install -tags 'nobadger,nomysql,nopgx' -ldflags "-w -s -X 'github.com/caddyserver/caddy/v2.CustomVersion=FrankenPHP $FRANKENPHP_VERSION PHP $PHP_VERSION Caddy'" && \ RUN GOBIN=/usr/local/bin go install -tags 'nobadger,nomysql,nopgx' -ldflags "-w -s -X 'github.com/caddyserver/caddy/v2.CustomVersion=FrankenPHP $FRANKENPHP_VERSION PHP $PHP_VERSION Caddy'" -buildvcs=true && \
setcap cap_net_bind_service=+ep /usr/local/bin/frankenphp && \ setcap cap_net_bind_service=+ep /usr/local/bin/frankenphp && \
cp Caddyfile /etc/caddy/Caddyfile && \ cp Caddyfile /etc/caddy/Caddyfile && \
frankenphp version frankenphp version && \
frankenphp build-info
WORKDIR /go/src/app WORKDIR /go/src/app
@@ -133,4 +132,5 @@ RUN apt-get install -y --no-install-recommends libstdc++6 && \
COPY --from=builder /usr/local/bin/frankenphp /usr/local/bin/frankenphp COPY --from=builder /usr/local/bin/frankenphp /usr/local/bin/frankenphp
RUN setcap cap_net_bind_service=+ep /usr/local/bin/frankenphp && \ RUN setcap cap_net_bind_service=+ep /usr/local/bin/frankenphp && \
frankenphp version frankenphp version && \
frankenphp build-info

View File

@@ -82,21 +82,6 @@ RUN apk add --no-cache --virtual .build-deps \
sqlite-dev \ sqlite-dev \
upx upx
WORKDIR /go/src/app
COPY --link go.mod go.sum ./
RUN go mod graph | awk '{if ($1 !~ "@") print $2}' | xargs go get
WORKDIR /go/src/app/caddy
COPY caddy/go.mod caddy/go.sum ./
RUN go mod graph | awk '{if ($1 !~ "@") print $2}' | xargs go get
WORKDIR /go/src/app
COPY --link *.* ./
COPY --link caddy caddy
COPY --link internal internal
COPY --link testdata testdata
# Install e-dant/watcher (necessary for file watching) # Install e-dant/watcher (necessary for file watching)
WORKDIR /usr/local/src/watcher WORKDIR /usr/local/src/watcher
RUN curl -s https://api.github.com/repos/e-dant/watcher/releases/latest | \ RUN curl -s https://api.github.com/repos/e-dant/watcher/releases/latest | \
@@ -110,16 +95,29 @@ RUN curl -s https://api.github.com/repos/e-dant/watcher/releases/latest | \
cmake --build build && \ cmake --build build && \
cmake --install build cmake --install build
WORKDIR /go/src/app
COPY --link go.mod go.sum ./
RUN go mod graph | awk '{if ($1 !~ "@") print $2}' | xargs go get
WORKDIR /go/src/app/caddy
COPY caddy/go.mod caddy/go.sum ./
RUN go mod graph | awk '{if ($1 !~ "@") print $2}' | xargs go get
WORKDIR /go/src/app
COPY --link . ./
# See https://github.com/docker-library/php/blob/master/8.3/alpine3.20/zts/Dockerfile#L53-L55 # See https://github.com/docker-library/php/blob/master/8.3/alpine3.20/zts/Dockerfile#L53-L55
ENV CGO_CFLAGS="-DFRANKENPHP_VERSION=$FRANKENPHP_VERSION $PHP_CFLAGS" ENV CGO_CFLAGS="-DFRANKENPHP_VERSION=$FRANKENPHP_VERSION $PHP_CFLAGS"
ENV CGO_CPPFLAGS=$PHP_CPPFLAGS ENV CGO_CPPFLAGS=$PHP_CPPFLAGS
ENV CGO_LDFLAGS="-lssl -lcrypto -lreadline -largon2 -lcurl -lonig -lz $PHP_LDFLAGS" ENV CGO_LDFLAGS="-lssl -lcrypto -lreadline -largon2 -lcurl -lonig -lz $PHP_LDFLAGS"
WORKDIR /go/src/app/caddy/frankenphp WORKDIR /go/src/app/caddy/frankenphp
RUN GOBIN=/usr/local/bin go install -tags 'nobadger,nomysql,nopgx' -ldflags "-w -s -extldflags '-Wl,-z,stack-size=0x80000' -X 'github.com/caddyserver/caddy/v2.CustomVersion=FrankenPHP $FRANKENPHP_VERSION PHP $PHP_VERSION Caddy'" && \ RUN GOBIN=/usr/local/bin go install -tags 'nobadger,nomysql,nopgx' -ldflags "-w -s -extldflags '-Wl,-z,stack-size=0x80000' -X 'github.com/caddyserver/caddy/v2.CustomVersion=FrankenPHP $FRANKENPHP_VERSION PHP $PHP_VERSION Caddy'" -buildvcs=true && \
setcap cap_net_bind_service=+ep /usr/local/bin/frankenphp && \ setcap cap_net_bind_service=+ep /usr/local/bin/frankenphp && \
([ -z "${NO_COMPRESS}" ] && upx --best /usr/local/bin/frankenphp || true) && \ ([ -z "${NO_COMPRESS}" ] && upx --best /usr/local/bin/frankenphp || true) && \
frankenphp version frankenphp version && \
frankenphp build-info
WORKDIR /go/src/app WORKDIR /go/src/app
@@ -135,4 +133,5 @@ RUN apk add --no-cache libstdc++ && \
COPY --from=builder /usr/local/bin/frankenphp /usr/local/bin/frankenphp COPY --from=builder /usr/local/bin/frankenphp /usr/local/bin/frankenphp
RUN setcap cap_net_bind_service=+ep /usr/local/bin/frankenphp && \ RUN setcap cap_net_bind_service=+ep /usr/local/bin/frankenphp && \
frankenphp version frankenphp version && \
frankenphp build-info

View File

@@ -323,6 +323,7 @@ if type "upx" >/dev/null 2>&1 && [ -z "${DEBUG_SYMBOLS}" ] && [ -z "${NO_COMPRES
fi fi
"dist/${bin}" version "dist/${bin}" version
"dist/${bin}" build-info
if [ -n "${RELEASE}" ]; then if [ -n "${RELEASE}" ]; then
gh release upload "v${FRANKENPHP_VERSION}" "dist/${bin}" --repo dunglas/frankenphp --clobber gh release upload "v${FRANKENPHP_VERSION}" "dist/${bin}" --repo dunglas/frankenphp --clobber

View File

@@ -88,9 +88,7 @@ COPY caddy/go.mod caddy/go.sum ./
RUN go mod graph | awk '{if ($1 !~ "@") print $2}' | xargs go get RUN go mod graph | awk '{if ($1 !~ "@") print $2}' | xargs go get
WORKDIR /go/src/app WORKDIR /go/src/app
COPY --link *.* ./ COPY --link . ./
COPY --link caddy caddy
COPY --link internal internal
RUN --mount=type=secret,id=github-token GITHUB_TOKEN=$(cat /run/secrets/github-token) ./build-static.sh && \ RUN --mount=type=secret,id=github-token GITHUB_TOKEN=$(cat /run/secrets/github-token) ./build-static.sh && \
rm -Rf dist/static-php-cli/source/* rm -Rf dist/static-php-cli/source/*