diff --git a/Dockerfile b/Dockerfile index faab470..cf8f7c6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -29,8 +29,6 @@ COPY mix.exs mix.lock ./ # Copy vendor directory for local dependencies COPY vendor vendor RUN mix deps.get --only $MIX_ENV -# Extract the APRS parser hash from the vendored directory -RUN cd vendor/aprs && git rev-parse HEAD | cut -c1-7 > /tmp/aprs_hash.txt RUN mix deps.compile # Copy application code @@ -65,12 +63,6 @@ RUN mkdir -p /app # Set deployment timestamp to current time during runtime container build RUN date -u +"%Y-%m-%dT%H:%M:%SZ" > /app/deployed_at.txt -# Copy APRS parser hash from builder stage -COPY --from=builder /tmp/aprs_hash.txt /app/aprs_hash.txt - -# Set APRS parser hash environment variable for runtime -RUN APRS_HASH=$(cat /app/aprs_hash.txt) && echo "APRS_PARSER_HASH=$APRS_HASH" >> /etc/environment - # Copy release from builder COPY --from=builder --chown=nobody:root /app/release ./ diff --git a/lib/aprsme/dependency_info.ex b/lib/aprsme/dependency_info.ex deleted file mode 100644 index 6e9c4af..0000000 --- a/lib/aprsme/dependency_info.ex +++ /dev/null @@ -1,54 +0,0 @@ -defmodule Aprsme.DependencyInfo do - @moduledoc """ - Provides information about dependencies, particularly for production builds. - """ - - alias Aprsme.CircuitBreaker - - @doc """ - Gets the SHA1 hash of the aprs library currently being used. - In development: reads from vendor/aprs directory - In production: uses the hash captured at compile time - """ - def get_aprs_library_sha do - # First try environment variable (production) - case System.get_env("APRS_PARSER_HASH") do - nil -> get_aprs_sha_from_vendor() - "unknown" -> get_aprs_sha_from_vendor() - hash -> hash - end - end - - defp get_aprs_sha_from_vendor do - vendor_path = Path.join([File.cwd!(), "vendor", "aprs"]) - - if File.dir?(vendor_path) do - case System.cmd("git", ["rev-parse", "HEAD"], cd: vendor_path) do - {sha, 0} -> String.slice(String.trim(sha), 0, 7) - _ -> nil - end - end - rescue - _ -> nil - end - - def latest_aprs_library_sha do - case CircuitBreaker.call( - :github_api, - fn -> - resp = Req.get!("https://api.github.com/repos/aprsme/aprs/commits/main") - body = resp.body - sha = body["sha"] || body |> Jason.decode!() |> Access.get("sha") - String.slice(sha, 0, 7) - end, - 10_000 - ) do - {:ok, sha} -> sha - {:error, _} -> nil - end - end - - def is_latest_aprs_library? do - get_aprs_library_sha() == latest_aprs_library_sha() - end -end diff --git a/lib/aprsme_web/live/status_live/index.ex b/lib/aprsme_web/live/status_live/index.ex index b95bb84..ce1338d 100644 --- a/lib/aprsme_web/live/status_live/index.ex +++ b/lib/aprsme_web/live/status_live/index.ex @@ -14,8 +14,6 @@ defmodule AprsmeWeb.StatusLive.Index do page_title: "System Status", aprs_status: get_aprs_status(), version: get_app_version(), - aprs_library_sha: get_aprs_library_sha(), - is_latest_aprs_library: Aprsme.DependencyInfo.is_latest_aprs_library?(), current_time: DateTime.utc_now(), health_score: calculate_health_score(get_aprs_status()) ) @@ -60,25 +58,6 @@ defmodule AprsmeWeb.StatusLive.Index do {gettext("Version:")} {@version} - <%= if @aprs_library_sha do %> -