Commit graph

58 commits

Author SHA1 Message Date
CI
a42dc1d68f chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1771546731-753fa50 [skip ci] 2026-02-20 00:20:13 +00:00
CI
6e29bd80be chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1771544325-29da64a [skip ci] 2026-02-19 23:38:53 +00:00
CI
cb884606f3 chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1771544148-497ad85 [skip ci] 2026-02-19 23:35:56 +00:00
CI
8c1a3c84ab chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1771543306-66061a5 [skip ci] 2026-02-19 23:23:10 +00:00
CI
dda4bbce15 chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1771538611-976b6f1 [skip ci] 2026-02-19 22:04:59 +00:00
75ceb73607
Fix Erlang clustering: use IP-based node names with DNS strategy
DNSSRV strategy resolves to IP-based names but nodes were named by
pod name, causing connection failures. Switch to DNS strategy with
IP-based node naming so libcluster discovery matches actual node names.
2026-02-19 16:01:20 -06:00
CI
bff63bb8a8 chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1771538286-d182024 [skip ci] 2026-02-19 21:58:14 +00:00
d182024b8a
Scale to 2 replicas and enable Erlang clustering 2026-02-19 15:57:42 -06:00
CI
ae9d8eb595 chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1771537665-ca9ad68 [skip ci] 2026-02-19 21:49:06 +00:00
CI
a9b0fad1de chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1771537316-14fa16d [skip ci] 2026-02-19 21:43:18 +00:00
CI
91ced547b1 chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1771536841-1d0b1ba [skip ci] 2026-02-19 21:34:09 +00:00
CI
046f97db54 chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1771535328-15e6fda [skip ci] 2026-02-19 21:10:13 +00:00
CI
17bef39d51 chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1771534930-b5d7cf4 [skip ci] 2026-02-19 21:03:36 +00:00
CI
ba4f3ee392 chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1771534282-8716202 [skip ci] 2026-02-19 20:54:49 +00:00
CI
1b23c3026e chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1771531931-509f271 [skip ci] 2026-02-19 20:13:37 +00:00
CI
e995b0f144 chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1771529673-a7d934c [skip ci] 2026-02-19 19:36:02 +00:00
CI
baf3d7b857 chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1771528828-b4f85bf [skip ci] 2026-02-19 19:21:54 +00:00
CI
e5659e889f chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1771518150-f6730b2 [skip ci] 2026-02-19 16:23:59 +00:00
CI
33b4a35900 chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1771517296-4de4829 [skip ci] 2026-02-19 16:09:44 +00:00
CI
f9af61f29a chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1771514834-aca0571 [skip ci] 2026-02-19 15:28:45 +00:00
CI
f1b363a2e2 chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1771514450-f591e15 [skip ci] 2026-02-19 15:22:21 +00:00
CI
f94925407d chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1771514008-68f64f3 [skip ci] 2026-02-19 15:17:11 +00:00
CI
8e7405ccb4 chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1771460127-d803d07 [skip ci] 2026-02-19 00:16:56 +00:00
CI
3b64c95fe9 chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1771452962-abc6ebe [skip ci] 2026-02-18 22:16:10 +00:00
CI
33587fb866 chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1771448056-e22d385 [skip ci] 2026-02-18 20:55:46 +00:00
CI
790f13cef6 chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1771445759-447a76b [skip ci] 2026-02-18 20:19:40 +00:00
447a76b3cc
update 2026-02-18 14:14:49 -06:00
FluxCD
e46e8ab3ea chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1771443290-d2910b5 [skip ci] 2026-02-18 19:36:13 +00:00
FluxCD
b875b7ab9e chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1771442126-3e47a83 [skip ci] 2026-02-18 19:20:10 +00:00
FluxCD
aebc410a8c chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1771440207-6a0c8de [skip ci] 2026-02-18 18:45:06 +00:00
6a0c8deb5e
Fix ETS table init, send failure handling, and deployment cleanup
- Initialize :aprsme ETS table in application.ex with message_number
  counter; was missing, causing crash in Is.send_message/1
- Trigger reconnect on gen_tcp.send failure instead of leaking the
  dead socket with active timers
- Remove cluster-only env vars from deployment (POD_IP, POD_NAME,
  POD_NAMESPACE, RELEASE_DISTRIBUTION, RELEASE_NODE) since
  CLUSTER_ENABLED=false
- Remove redundant APRS_PASSCODE secret ref now that APRS_PASSWORD
  is set as plaintext
2026-02-18 12:43:09 -06:00
FluxCD
224700361c chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1771440003-a39059e [skip ci] 2026-02-18 18:41:05 +00:00
FluxCD
f0112f618e chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1771439107-a5d4f6c [skip ci] 2026-02-18 18:27:03 +00:00
FluxCD
528c64bfbc chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1771438938-f89eec8 [skip ci] 2026-02-18 18:23:03 +00:00
f89eec8877
Disable clustering with single replica 2026-02-18 12:21:58 -06:00
FluxCD
98d980ad6e chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1771438634-87dc076 [skip ci] 2026-02-18 18:19:02 +00:00
87dc076220
Set APRS_HOST and APRS_PASSWORD env vars
Connect to 204.110.191.232 instead of the default dallas.aprs2.net.
runtime.exs now reads APRS_HOST (over APRS_SERVER) and APRS_PASSWORD
(over APRS_PASSCODE) so both naming conventions work.
2026-02-18 12:16:54 -06:00
FluxCD
15dd528e05 chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1771438486-46e01cd [skip ci] 2026-02-18 18:15:02 +00:00
46e01cdea1
Scale down to 1 replica until clustering is needed 2026-02-18 12:14:25 -06:00
FluxCD
75d1784a3b chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1771438217-bd26556 [skip ci] 2026-02-18 18:12:01 +00:00
FluxCD
95c009db0d chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1771437137-d886f5d [skip ci] 2026-02-18 17:53:42 +00:00
d886f5d987
Fix migration init container env vars and ConnectionMonitor crash
- Add missing env vars to migration init container (PHX_HOST, PORT,
  APRS_PORT, APRS_CALLSIGN, APRS_PASSCODE) so runtime.exs config
  provider doesn't fail due to Kubernetes service discovery injecting
  APRS_PORT as a full URL
- Guard ConnectionMonitor.accepting_connections?/0 with Process.whereis
  to avoid crashing when the GenServer isn't started (e.g. cluster
  enabled but no libcluster topologies configured)
2026-02-18 11:51:56 -06:00
FluxCD
e71034dd47 chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1771434255-a72d50c [skip ci] 2026-02-18 17:08:35 +00:00
FluxCD
f1b3a00882 chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1771433746-a0f72cf [skip ci] 2026-02-18 16:56:34 +00:00
FluxCD
06d09b590e chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1771368069-24c01d0 [skip ci] 2026-02-18 16:56:17 +00:00
a0f72cfd43
Run database migrations as init container on each deploy
Adds an init container that runs `bin/migrate` before app pods start,
ensuring migrations are applied on every deployment. Uses the existing
advisory lock in MigrationLock so only one pod runs migrations during
a rolling update.
2026-02-18 10:55:25 -06:00
FluxCD
f1ce1b1e03 chore: update aprs.me image to git.mcintire.me/graham/aprs.me:main-1771368069-24c01d0 [skip ci] 2026-02-17 22:52:19 +00:00
a637b3b87c
Add k8s deployment manifests and FluxCD GitOps config
Kubernetes manifests for deploying to home cluster in the aprs
namespace with Forgejo Actions CI pipeline for building and
pushing container images to git.mcintire.me registry.
2026-02-17 16:11:27 -06:00
18b85ad512
cleanup 2025-07-30 14:35:11 -05:00
7e4bbbaff5
Fix deployment timestamp always showing 'less than a minute ago' in k8s
Previously, the deployment timestamp was set to DateTime.utc_now() when
the application started, which meant it would always show as recent in
k8s environments where pods are recreated on each deployment.

This commit:
- Updates Release.init() to check for DEPLOYED_AT environment variable
- Falls back to current time if env var is not set (backwards compatible)
- Adds proper ISO8601 timestamp parsing with error handling
- Updates GitHub Actions deploy workflow to set DEPLOYED_AT during deployment
- Creates k8s patch file for future manual deployments

The deployment timestamp will now persist across pod restarts in k8s,
showing the actual deployment time rather than pod startup time.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-28 12:06:12 -05:00