From 830e6cefaec1777e87fa33b19cd100f04dd63323 Mon Sep 17 00:00:00 2001
From: Renaud Chaput <renchap@gmail.com>
Date: Thu, 4 May 2023 13:45:39 +0200
Subject: [PATCH] Add version suffixes to nightly & edge image builds (#24823)

---
 .github/workflows/build-image.yml   | 7 +++++++
 .github/workflows/build-nightly.yml | 6 ++++++
 Dockerfile                          | 8 +++++++-
 lib/mastodon/version.rb             | 4 ++--
 4 files changed, 22 insertions(+), 3 deletions(-)

diff --git a/.github/workflows/build-image.yml b/.github/workflows/build-image.yml
index c0a4976b1..6225c7469 100644
--- a/.github/workflows/build-image.yml
+++ b/.github/workflows/build-image.yml
@@ -57,9 +57,16 @@ jobs:
             type=pep440,pattern=v{{major}}.{{minor}}
             type=ref,event=pr
 
+      - name: Generate version suffix
+        id: version_vars
+        if: github.repository == 'mastodon/mastodon' && github.event_name == 'push' && github.ref_name == 'main'
+        run: |
+          echo mastodon_version_suffix=\"+edge-$(git rev-parse --short HEAD)\" >> $GITHUB_OUTPUT
+
       - uses: docker/build-push-action@v4
         with:
           context: .
+          build-args: MASTODON_VERSION_SUFFIX=${{ steps.version_vars.outputs.mastodon_version_suffix }}
           platforms: linux/amd64,linux/arm64
           provenance: false
           builder: ${{ steps.buildx.outputs.name }}
diff --git a/.github/workflows/build-nightly.yml b/.github/workflows/build-nightly.yml
index 501db6e9c..e765315d0 100644
--- a/.github/workflows/build-nightly.yml
+++ b/.github/workflows/build-nightly.yml
@@ -41,9 +41,15 @@ jobs:
           labels: |
             org.opencontainers.image.description=Nightly build image used for testing purposes
 
+      - name: Generate version suffix
+        id: version_vars
+        run: |
+          echo mastodon_version_suffix=\"+nightly-$(date +'%Y%m%d')\" >> $GITHUB_OUTPUT
+
       - uses: docker/build-push-action@v4
         with:
           context: .
+          build-args: MASTODON_VERSION_SUFFIX=${{ steps.version_vars.outputs.mastodon_version_suffix }}
           platforms: linux/amd64,linux/arm64
           provenance: false
           builder: ${{ steps.buildx.outputs.name }}
diff --git a/Dockerfile b/Dockerfile
index 978933421..55f7bcf34 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -2,6 +2,10 @@
 # This needs to be bullseye-slim because the Ruby image is built on bullseye-slim
 ARG NODE_VERSION="16.20-bullseye-slim"
 
+# Use those args to specify your own version flags & suffixes
+ARG MASTODON_VERSION_FLAGS=""
+ARG MASTODON_VERSION_SUFFIX=""
+
 FROM ghcr.io/moritzheiber/ruby-jemalloc:3.2.2-slim as ruby
 FROM node:${NODE_VERSION} as build
 
@@ -84,7 +88,9 @@ COPY --chown=mastodon:mastodon --from=build /opt/mastodon /opt/mastodon
 ENV RAILS_ENV="production" \
     NODE_ENV="production" \
     RAILS_SERVE_STATIC_FILES="true" \
-    BIND="0.0.0.0"
+    BIND="0.0.0.0" \
+    MASTODON_VERSION_FLAGS="${MASTODON_VERSION_FLAGS}" \
+    MASTODON_VERSION_SUFFIX="${MASTODON_VERSION_SUFFIX}"
 
 # Set the run user
 USER mastodon
diff --git a/lib/mastodon/version.rb b/lib/mastodon/version.rb
index 71bcfb4e1..455cdc9b8 100644
--- a/lib/mastodon/version.rb
+++ b/lib/mastodon/version.rb
@@ -17,11 +17,11 @@ module Mastodon
     end
 
     def flags
-      ''
+      ENV.fetch('MASTODON_VERSION_FLAGS', '')
     end
 
     def suffix
-      ''
+      ENV.fetch('MASTODON_VERSION_SUFFIX', '')
     end
 
     def to_a