From bfb5e84c9ac44583fce212f6da15094b464fd679 Mon Sep 17 00:00:00 2001 From: rosslh Date: Sat, 14 Mar 2026 18:38:33 -0400 Subject: [PATCH] fix(versioning): move version bumping to CI build time Version was never bumped because git rebase doesn't run pre-commit hooks. CI now appends a YYYYMMDDHHmm timestamp to the upstream base version and injects it into the Docker image via build arg. --- .forgejo/workflows/build.yml | 5 ++++- docker/production/Dockerfile | 10 ++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/.forgejo/workflows/build.yml b/.forgejo/workflows/build.yml index 7f76fe32d..594980f5d 100644 --- a/.forgejo/workflows/build.yml +++ b/.forgejo/workflows/build.yml @@ -23,7 +23,9 @@ jobs: - name: Get version id: version run: | - VERSION=$(sed -n "s/.*'version' => '\([^']*\)'.*/\1/p" config/constants.php) + BASE_VERSION=$(sed -n "s/.*'version' => '\([^']*\)'.*/\1/p" config/constants.php) + TIMESTAMP=$(date -u +%Y%m%d%H%M) + VERSION="${BASE_VERSION}.${TIMESTAMP}" HELPER_VERSION=$(sed -n "s/.*'helper_version' => '\([^']*\)'.*/\1/p" config/constants.php) REALTIME_VERSION=$(sed -n "s/.*'realtime_version' => '\([^']*\)'.*/\1/p" config/constants.php) echo "VERSION=${VERSION}" >> "$GITHUB_OUTPUT" @@ -38,6 +40,7 @@ jobs: - name: Build image run: | DOCKER_BUILDKIT=1 docker build -f docker/production/Dockerfile \ + --build-arg MAPLEDEPLOY_VERSION=${{ steps.version.outputs.VERSION }} \ -t ${{ env.REGISTRY }}/${{ github.repository }}:${{ steps.version.outputs.VERSION }} \ -t ${{ env.REGISTRY }}/${{ github.repository }}:latest \ . diff --git a/docker/production/Dockerfile b/docker/production/Dockerfile index a01dd595c..83d88cd81 100644 --- a/docker/production/Dockerfile +++ b/docker/production/Dockerfile @@ -116,6 +116,16 @@ COPY --chown=www-data:www-data composer.json composer.lock ./ COPY --chown=www-data:www-data app ./app COPY --chown=www-data:www-data bootstrap ./bootstrap COPY --chown=www-data:www-data config ./config + +# MapleDeploy: inject build version into constants.php at build time. +# The version in git stays at the upstream value to avoid rebase conflicts. +# CI passes the timestamped version (e.g. 4.0.0-beta.468.202603140006) as a build arg. +ARG MAPLEDEPLOY_VERSION="" +RUN if [ -n "$MAPLEDEPLOY_VERSION" ]; then \ + sed -i "s/'version' => '[^']*'/'version' => '$MAPLEDEPLOY_VERSION'/" config/constants.php && \ + chown www-data:www-data config/constants.php; \ + fi + COPY --chown=www-data:www-data database ./database COPY --chown=www-data:www-data lang ./lang COPY --chown=www-data:www-data public ./public