diff --git a/lib/git-utils.ts b/lib/git-utils.ts index ea1f0fc..71de643 100644 --- a/lib/git-utils.ts +++ b/lib/git-utils.ts @@ -11,7 +11,8 @@ let cachedGitInfo: GitInfo | null = null; /** * Gets the current git commit hash from various sources - * - First tries environment variable (from Docker) + * - First tries to read directly from the Git hash file in Docker + * - Then tries environment variable (from Docker) * - Then tries the JSON file created by our build script * - Returns "dev" if nothing is available */ @@ -21,26 +22,16 @@ export async function getGitCommitInfo(): Promise { return cachedGitInfo; } - // First, check if we have the env variable (from Docker) - if (process.env.GIT_COMMIT_SHA) { - const gitInfo: GitInfo = { - commitHash: process.env.GIT_COMMIT_SHA, - buildTime: new Date().toISOString(), - }; - cachedGitInfo = gitInfo; - return gitInfo; - } - - // In Docker, the hash might be stored in a file at /app/git_commit_sha + // In Docker or server, try to read the hash file directly first (most reliable method) if (typeof window === 'undefined') { try { const fs = require('fs'); - const path = require('path'); // Check for Docker-specific git hash file const dockerGitHashPath = '/app/git_commit_sha'; if (fs.existsSync(dockerGitHashPath)) { const hash = fs.readFileSync(dockerGitHashPath, 'utf8').trim(); + console.log(`Read git hash from file: ${hash}`); const gitInfo: GitInfo = { commitHash: hash, buildTime: new Date().toISOString(), @@ -53,6 +44,21 @@ export async function getGitCommitInfo(): Promise { } } + // Then, check if we have the env variable + if (process.env.GIT_COMMIT_SHA) { + // Check if it's the literal string, which is an error case + if (process.env.GIT_COMMIT_SHA.includes('$(cat')) { + console.warn('GIT_COMMIT_SHA contains a shell command instead of the actual hash'); + } else { + const gitInfo: GitInfo = { + commitHash: process.env.GIT_COMMIT_SHA, + buildTime: new Date().toISOString(), + }; + cachedGitInfo = gitInfo; + return gitInfo; + } + } + // In the browser, fetch from the public directory if (typeof window !== 'undefined') { try {