From a923b25672c0adfd5795d270ac6cf0d6cabf3ea7 Mon Sep 17 00:00:00 2001 From: Ihab Adham <71561048+ihab4real@users.noreply.github.com> Date: Sun, 12 Jan 2025 23:08:09 +0200 Subject: [PATCH] Fix/no commit hash on the deployed project (#611) * define GIT_COMMIT_SHA in Dockerfile * check for GIT_COMMIT_SHA environment variable presence in GitDCommitSha.current_sha * add a new context to test if GIT_COMMIT_SHA exists --- .controlplane/Dockerfile | 4 ++++ app/models/git_commit_sha.rb | 4 +++- spec/system/pages_spec.rb | 23 +++++++++++++++++++---- 3 files changed, 26 insertions(+), 5 deletions(-) diff --git a/.controlplane/Dockerfile b/.controlplane/Dockerfile index e54d715e3..f3033029a 100644 --- a/.controlplane/Dockerfile +++ b/.controlplane/Dockerfile @@ -76,3 +76,7 @@ ENTRYPOINT ["./.controlplane/entrypoint.sh"] # Default args to pass to the entry point that can be overridden # For Kubernetes and ControlPlane, these are the "workload args" CMD ["./bin/rails", "server"] + +# Current commit hash environment variable +ARG GIT_COMMIT_SHA +ENV GIT_COMMIT_SHA=${GIT_COMMIT_SHA} diff --git a/app/models/git_commit_sha.rb b/app/models/git_commit_sha.rb index 598ab20de..3c58498f0 100644 --- a/app/models/git_commit_sha.rb +++ b/app/models/git_commit_sha.rb @@ -5,7 +5,9 @@ class GitCommitSha attr_writer :current_sha def self.current_sha - @current_sha ||= retrieve_sha_from_file.presence || retrieve_sha_from_git + @current_sha ||= ENV["GIT_COMMIT_SHA"].presence || + retrieve_sha_from_file.presence || + retrieve_sha_from_git end def self.reset_current_sha diff --git a/spec/system/pages_spec.rb b/spec/system/pages_spec.rb index a34147d19..61cdd2cb5 100644 --- a/spec/system/pages_spec.rb +++ b/spec/system/pages_spec.rb @@ -17,13 +17,16 @@ GitCommitSha.reset_current_sha end - context "when .source_version file does not exist" do - let(:sha) { "94d92356828a56db25fccff9d50f41c525eead5x" } + context "when GIT_COMMIT_SHA env var exists" do + let(:sha) { "94d92356828a56db25fccff9d50f41c525eead5z" } let(:expected_text) { "94d9235" } before do - # stub this method since we need to control what the sha actually is - allow(GitCommitSha).to receive(:retrieve_sha_from_git) { sha } + ENV["GIT_COMMIT_SHA"] = sha + end + + after do + ENV.delete("GIT_COMMIT_SHA") end it_behaves_like "Git Commit SHA" @@ -39,4 +42,16 @@ it_behaves_like "Git Commit SHA" end + + context "when falling back to git command" do + let(:sha) { "94d92356828a56db25fccff9d50f41c525eead5x" } + let(:expected_text) { "94d9235" } + + before do + # stub this method since we need to control what the sha actually is + allow(GitCommitSha).to receive(:retrieve_sha_from_git) { sha } + end + + it_behaves_like "Git Commit SHA" + end end