diff --git a/.circleci/config.yml b/.circleci/config.yml index fcda0ae36..4dc90c0fd 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -41,9 +41,10 @@ jobs: - run: command: | LATEST_TAG=${CIRCLE_TAG:1} #trim v from tag + GIT_COMMIT=$(git rev-parse HEAD) # - sudo docker build --pull -t $DOCKERHUB_REPO:$LATEST_TAG-amd64 -f amd64.Dockerfile . - sudo docker build --pull --build-arg CONFIGURATION_NAME=Altcoins-Release -t $DOCKERHUB_REPO:$LATEST_TAG-altcoins-amd64 -f amd64.Dockerfile . + sudo docker build --build-arg GIT_COMMIT=${GIT_COMMIT} --pull -t $DOCKERHUB_REPO:$LATEST_TAG-amd64 -f amd64.Dockerfile . + sudo docker build --build-arg GIT_COMMIT=${GIT_COMMIT} --pull --build-arg CONFIGURATION_NAME=Altcoins-Release -t $DOCKERHUB_REPO:$LATEST_TAG-altcoins-amd64 -f amd64.Dockerfile . sudo docker login --username=$DOCKERHUB_USER --password=$DOCKERHUB_PASS sudo docker push $DOCKERHUB_REPO:$LATEST_TAG-amd64 sudo docker push $DOCKERHUB_REPO:$LATEST_TAG-altcoins-amd64 @@ -57,9 +58,10 @@ jobs: command: | sudo docker run --rm --privileged multiarch/qemu-user-static:register --reset LATEST_TAG=${CIRCLE_TAG:1} #trim v from tag + GIT_COMMIT=$(git rev-parse HEAD) # - sudo docker build --pull -t $DOCKERHUB_REPO:$LATEST_TAG-arm32v7 -f arm32v7.Dockerfile . - sudo docker build --pull --build-arg CONFIGURATION_NAME=Altcoins-Release -t $DOCKERHUB_REPO:$LATEST_TAG-altcoins-arm32v7 -f arm32v7.Dockerfile . + sudo docker build --build-arg GIT_COMMIT=${GIT_COMMIT} --pull -t $DOCKERHUB_REPO:$LATEST_TAG-arm32v7 -f arm32v7.Dockerfile . + sudo docker build --build-arg GIT_COMMIT=${GIT_COMMIT} --pull --build-arg CONFIGURATION_NAME=Altcoins-Release -t $DOCKERHUB_REPO:$LATEST_TAG-altcoins-arm32v7 -f arm32v7.Dockerfile . sudo docker login --username=$DOCKERHUB_USER --password=$DOCKERHUB_PASS sudo docker push $DOCKERHUB_REPO:$LATEST_TAG-arm32v7 sudo docker push $DOCKERHUB_REPO:$LATEST_TAG-altcoins-arm32v7 @@ -73,9 +75,10 @@ jobs: command: | sudo docker run --rm --privileged multiarch/qemu-user-static:register --reset LATEST_TAG=${CIRCLE_TAG:1} #trim v from tag + GIT_COMMIT=$(git rev-parse HEAD) # - sudo docker build --pull -t $DOCKERHUB_REPO:$LATEST_TAG-arm64v8 -f arm64v8.Dockerfile . - sudo docker build --build-arg CONFIGURATION_NAME=Altcoins-Release --pull -t $DOCKERHUB_REPO:$LATEST_TAG-altcoins-arm64v8 -f arm64v8.Dockerfile . + sudo docker build --build-arg GIT_COMMIT=${GIT_COMMIT} --pull -t $DOCKERHUB_REPO:$LATEST_TAG-arm64v8 -f arm64v8.Dockerfile . + sudo docker build --build-arg GIT_COMMIT=${GIT_COMMIT} --build-arg CONFIGURATION_NAME=Altcoins-Release --pull -t $DOCKERHUB_REPO:$LATEST_TAG-altcoins-arm64v8 -f arm64v8.Dockerfile . sudo docker login --username=$DOCKERHUB_USER --password=$DOCKERHUB_PASS sudo docker push $DOCKERHUB_REPO:$LATEST_TAG-arm64v8 sudo docker push $DOCKERHUB_REPO:$LATEST_TAG-altcoins-arm64v8 diff --git a/BTCPayServer/BTCPayServer.csproj b/BTCPayServer/BTCPayServer.csproj index c5ce06c30..0a762b23a 100644 --- a/BTCPayServer/BTCPayServer.csproj +++ b/BTCPayServer/BTCPayServer.csproj @@ -4,13 +4,15 @@ Exe - true - False - False + + + <_Parameter1>$(GitCommit) + + diff --git a/BTCPayServer/GitCommitAttribute.cs b/BTCPayServer/GitCommitAttribute.cs new file mode 100644 index 000000000..6021cfd0f --- /dev/null +++ b/BTCPayServer/GitCommitAttribute.cs @@ -0,0 +1,18 @@ +using System; + +namespace BTCPayServer +{ + [AttributeUsage(AttributeTargets.Assembly, Inherited = false)] + public sealed class GitCommitAttribute : Attribute + { + public string SHA + { + get; + } + public string ShortSHA => SHA.Substring(0, 9); + public GitCommitAttribute(string sha) + { + SHA = sha; + } + } +} diff --git a/BTCPayServer/Services/BTCPayServerEnvironment.cs b/BTCPayServer/Services/BTCPayServerEnvironment.cs index 6b68f57bd..ad9f96c79 100644 --- a/BTCPayServer/Services/BTCPayServerEnvironment.cs +++ b/BTCPayServer/Services/BTCPayServerEnvironment.cs @@ -18,6 +18,7 @@ namespace BTCPayServer.Services public BTCPayServerEnvironment(IWebHostEnvironment env, BTCPayNetworkProvider provider, TorServices torServices, BTCPayServerOptions opts) { Version = typeof(BTCPayServerEnvironment).GetTypeInfo().Assembly.GetCustomAttribute().Version; + Commit = typeof(BTCPayServerEnvironment).GetTypeInfo().Assembly.GetCustomAttribute()?.ShortSHA; #if DEBUG Build = "Debug"; #else @@ -70,10 +71,14 @@ namespace BTCPayServer.Services Extensions.IsLocalNetwork(httpContext.Request.Host.Host); } + public string Commit { get; set; } + public override string ToString() { StringBuilder txt = new StringBuilder(); txt.Append(CultureInfo.InvariantCulture, $"© BTCPay Server v{Version}"); + if (Commit != null) + txt.Append($"+{Commit}"); if (AltcoinsVersion) txt.Append(" (Altcoins)"); if (!Environment.IsProduction() || !Build.Equals("Release", StringComparison.OrdinalIgnoreCase)) diff --git a/amd64.Dockerfile b/amd64.Dockerfile index b198c85fb..ad65e89d6 100644 --- a/amd64.Dockerfile +++ b/amd64.Dockerfile @@ -18,7 +18,8 @@ COPY BTCPayServer.Abstractions/. BTCPayServer.Abstractions/. COPY BTCPayServer/. BTCPayServer/. COPY Build/Version.csproj Build/Version.csproj ARG CONFIGURATION_NAME=Release -RUN cd BTCPayServer && dotnet publish --output /app/ --configuration ${CONFIGURATION_NAME} +ARG GIT_COMMIT +RUN cd BTCPayServer && dotnet publish -p:GitCommit=${GIT_COMMIT} --output /app/ --configuration ${CONFIGURATION_NAME} FROM mcr.microsoft.com/dotnet/aspnet:6.0.9-bullseye-slim diff --git a/arm32v7.Dockerfile b/arm32v7.Dockerfile index b849f7fe9..84aefb862 100644 --- a/arm32v7.Dockerfile +++ b/arm32v7.Dockerfile @@ -22,7 +22,8 @@ COPY BTCPayServer.Abstractions/. BTCPayServer.Abstractions/. COPY BTCPayServer/. BTCPayServer/. COPY Build/Version.csproj Build/Version.csproj ARG CONFIGURATION_NAME=Release -RUN cd BTCPayServer && dotnet publish --output /app/ --configuration ${CONFIGURATION_NAME} +ARG GIT_COMMIT +RUN cd BTCPayServer && dotnet publish -p:GitCommit=${GIT_COMMIT} --output /app/ --configuration ${CONFIGURATION_NAME} # Note that we are using buster rather than bullseye. Somehow, raspberry pi 4 doesn't like bullseye. FROM mcr.microsoft.com/dotnet/aspnet:6.0.9-bullseye-slim-arm32v7 diff --git a/arm64v8.Dockerfile b/arm64v8.Dockerfile index fe2ee1d66..e057b78dc 100644 --- a/arm64v8.Dockerfile +++ b/arm64v8.Dockerfile @@ -23,7 +23,8 @@ COPY BTCPayServer.Abstractions/. BTCPayServer.Abstractions/. COPY BTCPayServer/. BTCPayServer/. COPY Build/Version.csproj Build/Version.csproj ARG CONFIGURATION_NAME=Release -RUN cd BTCPayServer && dotnet publish --output /app/ --configuration ${CONFIGURATION_NAME} +ARG GIT_COMMIT +RUN cd BTCPayServer && dotnet publish -p:GitCommit=${GIT_COMMIT} --output /app/ --configuration ${CONFIGURATION_NAME} # Force the builder machine to take make an arm runtime image. This is fine as long as the builder does not run any program FROM mcr.microsoft.com/dotnet/aspnet:6.0.9-bullseye-slim-arm64v8