From 642ea8c762801ff328c75176aac30d8f933ac042 Mon Sep 17 00:00:00 2001 From: David Kern Date: Fri, 15 Aug 2025 15:25:21 -0700 Subject: [PATCH 1/7] add recent release manifests and script to update them --- ...-hostconfig-v0.5.2-linux-amd64.tar.gz.json | 7 ++ ...-hostconfig-v0.5.2-linux-arm64.tar.gz.json | 7 ++ ...-hostconfig-v0.6.0-linux-amd64.tar.gz.json | 7 ++ ...-hostconfig-v0.6.0-linux-arm64.tar.gz.json | 7 ++ ...-hostconfig-v0.7.0-linux-amd64.tar.gz.json | 7 ++ ...-hostconfig-v0.7.0-linux-arm64.tar.gz.json | 7 ++ ...ind-agent-v0.112.0-linux-amd64.tar.gz.json | 7 ++ ...ind-agent-v0.112.0-linux-arm64.tar.gz.json | 7 ++ ...ind-agent-v0.115.3-linux-amd64.tar.gz.json | 7 ++ ...ind-agent-v0.115.3-linux-arm64.tar.gz.json | 7 ++ ...nt-v0.116.0-alpha1-linux-amd64.tar.gz.json | 7 ++ ...nt-v0.116.0-alpha1-linux-arm64.tar.gz.json | 7 ++ ...nt-v0.116.0-alpha2-linux-amd64.tar.gz.json | 7 ++ ...nt-v0.116.0-alpha2-linux-arm64.tar.gz.json | 7 ++ ...nt-v0.116.2-alpha1-linux-amd64.tar.gz.json | 7 ++ ...nt-v0.116.2-alpha1-linux-arm64.tar.gz.json | 7 ++ ...ind-agent-v0.117.0-linux-amd64.tar.gz.json | 7 ++ ...ind-agent-v0.117.0-linux-arm64.tar.gz.json | 7 ++ ...ind-agent-v0.117.1-linux-amd64.tar.gz.json | 7 ++ ...ind-agent-v0.117.1-linux-arm64.tar.gz.json | 7 ++ ...ind-agent-v0.117.2-linux-amd64.tar.gz.json | 7 ++ ...ind-agent-v0.117.2-linux-arm64.tar.gz.json | 7 ++ ...ind-agent-v0.117.3-linux-amd64.tar.gz.json | 7 ++ ...ind-agent-v0.117.3-linux-arm64.tar.gz.json | 7 ++ ...ind-agent-v0.118.0-linux-amd64.tar.gz.json | 7 ++ ...ind-agent-v0.118.0-linux-arm64.tar.gz.json | 7 ++ ...ind-agent-v0.118.1-linux-amd64.tar.gz.json | 7 ++ ...ind-agent-v0.118.1-linux-arm64.tar.gz.json | 7 ++ ...ind-agent-v0.118.2-linux-amd64.tar.gz.json | 7 ++ ...ind-agent-v0.118.2-linux-arm64.tar.gz.json | 7 ++ ...ind-agent-v0.118.3-linux-amd64.tar.gz.json | 7 ++ ...ind-agent-v0.118.3-linux-arm64.tar.gz.json | 7 ++ ...ind-agent-v0.119.0-linux-amd64.tar.gz.json | 7 ++ ...ind-agent-v0.119.0-linux-arm64.tar.gz.json | 7 ++ script/generate-manifest.sh | 106 ++++++++++++++++++ 35 files changed, 344 insertions(+) create mode 100644 release/upwind-agent-hostconfig/v0.5.2/upwind-agent-hostconfig-v0.5.2-linux-amd64.tar.gz.json create mode 100644 release/upwind-agent-hostconfig/v0.5.2/upwind-agent-hostconfig-v0.5.2-linux-arm64.tar.gz.json create mode 100644 release/upwind-agent-hostconfig/v0.6.0/upwind-agent-hostconfig-v0.6.0-linux-amd64.tar.gz.json create mode 100644 release/upwind-agent-hostconfig/v0.6.0/upwind-agent-hostconfig-v0.6.0-linux-arm64.tar.gz.json create mode 100644 release/upwind-agent-hostconfig/v0.7.0/upwind-agent-hostconfig-v0.7.0-linux-amd64.tar.gz.json create mode 100644 release/upwind-agent-hostconfig/v0.7.0/upwind-agent-hostconfig-v0.7.0-linux-arm64.tar.gz.json create mode 100644 release/upwind-agent/v0.112.0/upwind-agent-v0.112.0-linux-amd64.tar.gz.json create mode 100644 release/upwind-agent/v0.112.0/upwind-agent-v0.112.0-linux-arm64.tar.gz.json create mode 100644 release/upwind-agent/v0.115.3/upwind-agent-v0.115.3-linux-amd64.tar.gz.json create mode 100644 release/upwind-agent/v0.115.3/upwind-agent-v0.115.3-linux-arm64.tar.gz.json create mode 100644 release/upwind-agent/v0.116.0-alpha1/upwind-agent-v0.116.0-alpha1-linux-amd64.tar.gz.json create mode 100644 release/upwind-agent/v0.116.0-alpha1/upwind-agent-v0.116.0-alpha1-linux-arm64.tar.gz.json create mode 100644 release/upwind-agent/v0.116.0-alpha2/upwind-agent-v0.116.0-alpha2-linux-amd64.tar.gz.json create mode 100644 release/upwind-agent/v0.116.0-alpha2/upwind-agent-v0.116.0-alpha2-linux-arm64.tar.gz.json create mode 100644 release/upwind-agent/v0.116.2-alpha1/upwind-agent-v0.116.2-alpha1-linux-amd64.tar.gz.json create mode 100644 release/upwind-agent/v0.116.2-alpha1/upwind-agent-v0.116.2-alpha1-linux-arm64.tar.gz.json create mode 100644 release/upwind-agent/v0.117.0/upwind-agent-v0.117.0-linux-amd64.tar.gz.json create mode 100644 release/upwind-agent/v0.117.0/upwind-agent-v0.117.0-linux-arm64.tar.gz.json create mode 100644 release/upwind-agent/v0.117.1/upwind-agent-v0.117.1-linux-amd64.tar.gz.json create mode 100644 release/upwind-agent/v0.117.1/upwind-agent-v0.117.1-linux-arm64.tar.gz.json create mode 100644 release/upwind-agent/v0.117.2/upwind-agent-v0.117.2-linux-amd64.tar.gz.json create mode 100644 release/upwind-agent/v0.117.2/upwind-agent-v0.117.2-linux-arm64.tar.gz.json create mode 100644 release/upwind-agent/v0.117.3/upwind-agent-v0.117.3-linux-amd64.tar.gz.json create mode 100644 release/upwind-agent/v0.117.3/upwind-agent-v0.117.3-linux-arm64.tar.gz.json create mode 100644 release/upwind-agent/v0.118.0/upwind-agent-v0.118.0-linux-amd64.tar.gz.json create mode 100644 release/upwind-agent/v0.118.0/upwind-agent-v0.118.0-linux-arm64.tar.gz.json create mode 100644 release/upwind-agent/v0.118.1/upwind-agent-v0.118.1-linux-amd64.tar.gz.json create mode 100644 release/upwind-agent/v0.118.1/upwind-agent-v0.118.1-linux-arm64.tar.gz.json create mode 100644 release/upwind-agent/v0.118.2/upwind-agent-v0.118.2-linux-amd64.tar.gz.json create mode 100644 release/upwind-agent/v0.118.2/upwind-agent-v0.118.2-linux-arm64.tar.gz.json create mode 100644 release/upwind-agent/v0.118.3/upwind-agent-v0.118.3-linux-amd64.tar.gz.json create mode 100644 release/upwind-agent/v0.118.3/upwind-agent-v0.118.3-linux-arm64.tar.gz.json create mode 100644 release/upwind-agent/v0.119.0/upwind-agent-v0.119.0-linux-amd64.tar.gz.json create mode 100644 release/upwind-agent/v0.119.0/upwind-agent-v0.119.0-linux-arm64.tar.gz.json create mode 100755 script/generate-manifest.sh diff --git a/release/upwind-agent-hostconfig/v0.5.2/upwind-agent-hostconfig-v0.5.2-linux-amd64.tar.gz.json b/release/upwind-agent-hostconfig/v0.5.2/upwind-agent-hostconfig-v0.5.2-linux-amd64.tar.gz.json new file mode 100644 index 0000000..3a175ad --- /dev/null +++ b/release/upwind-agent-hostconfig/v0.5.2/upwind-agent-hostconfig-v0.5.2-linux-amd64.tar.gz.json @@ -0,0 +1,7 @@ +{ + "name": "upwind-agent-hostconfig", + "arch": "amd64", + "version": "0.5.2", + "package": "https://releases.upwind.io/upwind-agent-hostconfig/upwind-agent-hostconfig-v0.5.2-linux-amd64.tar.gz", + "sha256": "85cc27fc54d4ce2f24c12aca3d3673c2070381e9960502d4266520a5c3f37813" +} diff --git a/release/upwind-agent-hostconfig/v0.5.2/upwind-agent-hostconfig-v0.5.2-linux-arm64.tar.gz.json b/release/upwind-agent-hostconfig/v0.5.2/upwind-agent-hostconfig-v0.5.2-linux-arm64.tar.gz.json new file mode 100644 index 0000000..8f517ad --- /dev/null +++ b/release/upwind-agent-hostconfig/v0.5.2/upwind-agent-hostconfig-v0.5.2-linux-arm64.tar.gz.json @@ -0,0 +1,7 @@ +{ + "name": "upwind-agent-hostconfig", + "arch": "arm64", + "version": "0.5.2", + "package": "https://releases.upwind.io/upwind-agent-hostconfig/upwind-agent-hostconfig-v0.5.2-linux-arm64.tar.gz", + "sha256": "cfa90939c126c4b2449befd905bde31751b559d19ff1a2e8276d9f22ba954ac2" +} diff --git a/release/upwind-agent-hostconfig/v0.6.0/upwind-agent-hostconfig-v0.6.0-linux-amd64.tar.gz.json b/release/upwind-agent-hostconfig/v0.6.0/upwind-agent-hostconfig-v0.6.0-linux-amd64.tar.gz.json new file mode 100644 index 0000000..7c30f1d --- /dev/null +++ b/release/upwind-agent-hostconfig/v0.6.0/upwind-agent-hostconfig-v0.6.0-linux-amd64.tar.gz.json @@ -0,0 +1,7 @@ +{ + "name": "upwind-agent-hostconfig", + "arch": "amd64", + "version": "0.6.0", + "package": "https://releases.upwind.io/upwind-agent-hostconfig/upwind-agent-hostconfig-v0.6.0-linux-amd64.tar.gz", + "sha256": "b433e78c2ea93a7b865041b407021b4f8fdb18252300cba90a10e8e419de8526" +} diff --git a/release/upwind-agent-hostconfig/v0.6.0/upwind-agent-hostconfig-v0.6.0-linux-arm64.tar.gz.json b/release/upwind-agent-hostconfig/v0.6.0/upwind-agent-hostconfig-v0.6.0-linux-arm64.tar.gz.json new file mode 100644 index 0000000..0355f6b --- /dev/null +++ b/release/upwind-agent-hostconfig/v0.6.0/upwind-agent-hostconfig-v0.6.0-linux-arm64.tar.gz.json @@ -0,0 +1,7 @@ +{ + "name": "upwind-agent-hostconfig", + "arch": "arm64", + "version": "0.6.0", + "package": "https://releases.upwind.io/upwind-agent-hostconfig/upwind-agent-hostconfig-v0.6.0-linux-arm64.tar.gz", + "sha256": "a40a2a3e22dd71d54784b46350634295ae073b28e1263fc9866a9bd7a7512a2a" +} diff --git a/release/upwind-agent-hostconfig/v0.7.0/upwind-agent-hostconfig-v0.7.0-linux-amd64.tar.gz.json b/release/upwind-agent-hostconfig/v0.7.0/upwind-agent-hostconfig-v0.7.0-linux-amd64.tar.gz.json new file mode 100644 index 0000000..f11f790 --- /dev/null +++ b/release/upwind-agent-hostconfig/v0.7.0/upwind-agent-hostconfig-v0.7.0-linux-amd64.tar.gz.json @@ -0,0 +1,7 @@ +{ + "name": "upwind-agent-hostconfig", + "arch": "amd64", + "version": "0.7.0", + "package": "https://releases.upwind.io/upwind-agent-hostconfig/upwind-agent-hostconfig-v0.7.0-linux-amd64.tar.gz", + "sha256": "b0d9e1693dd2c0991e9d5ac928a158a7b51931ae1edafc6f4d043eb1473b31bf" +} diff --git a/release/upwind-agent-hostconfig/v0.7.0/upwind-agent-hostconfig-v0.7.0-linux-arm64.tar.gz.json b/release/upwind-agent-hostconfig/v0.7.0/upwind-agent-hostconfig-v0.7.0-linux-arm64.tar.gz.json new file mode 100644 index 0000000..4a4e6df --- /dev/null +++ b/release/upwind-agent-hostconfig/v0.7.0/upwind-agent-hostconfig-v0.7.0-linux-arm64.tar.gz.json @@ -0,0 +1,7 @@ +{ + "name": "upwind-agent-hostconfig", + "arch": "arm64", + "version": "0.7.0", + "package": "./upwind-agent-hostconfig-v0.7.0-linux-arm64.tar.gz", + "sha256": "5686e91273c2dba68530f14fc4dd91db30e132443cd765dcec1a9d5ca4623847" +} diff --git a/release/upwind-agent/v0.112.0/upwind-agent-v0.112.0-linux-amd64.tar.gz.json b/release/upwind-agent/v0.112.0/upwind-agent-v0.112.0-linux-amd64.tar.gz.json new file mode 100644 index 0000000..9102eaa --- /dev/null +++ b/release/upwind-agent/v0.112.0/upwind-agent-v0.112.0-linux-amd64.tar.gz.json @@ -0,0 +1,7 @@ +{ + "name": "upwind-agent", + "arch": "amd64", + "version": "0.112.0", + "package": "https://releases.upwind.io/upwind-agent/v0.112.0/upwind-agent-v0.112.0-linux-amd64.tar.gz", + "sha256": "11b5eaa190ef823ec6d8132e2db49c7d2fd1c1514559905e5294cecfbf1f9a1d" +} diff --git a/release/upwind-agent/v0.112.0/upwind-agent-v0.112.0-linux-arm64.tar.gz.json b/release/upwind-agent/v0.112.0/upwind-agent-v0.112.0-linux-arm64.tar.gz.json new file mode 100644 index 0000000..6a595e3 --- /dev/null +++ b/release/upwind-agent/v0.112.0/upwind-agent-v0.112.0-linux-arm64.tar.gz.json @@ -0,0 +1,7 @@ +{ + "name": "upwind-agent", + "arch": "arm64", + "version": "0.112.0", + "package": "https://releases.upwind.io/upwind-agent/v0.112.0/upwind-agent-v0.112.0-linux-arm64.tar.gz", + "sha256": "820e31edbe6b60c7fb918068ec18770c707d4072821813d0ab240270c472c555" +} diff --git a/release/upwind-agent/v0.115.3/upwind-agent-v0.115.3-linux-amd64.tar.gz.json b/release/upwind-agent/v0.115.3/upwind-agent-v0.115.3-linux-amd64.tar.gz.json new file mode 100644 index 0000000..3308b71 --- /dev/null +++ b/release/upwind-agent/v0.115.3/upwind-agent-v0.115.3-linux-amd64.tar.gz.json @@ -0,0 +1,7 @@ +{ + "name": "upwind-agent", + "arch": "amd64", + "version": "0.115.3", + "package": "https://releases.upwind.io/upwind-agent/v0.115.3/upwind-agent-v0.115.3-linux-amd64.tar.gz", + "sha256": "c9a037b66455fc9ab9ddfc719628154ab7f9495bb4efafb4ab0a8eb159539a53" +} diff --git a/release/upwind-agent/v0.115.3/upwind-agent-v0.115.3-linux-arm64.tar.gz.json b/release/upwind-agent/v0.115.3/upwind-agent-v0.115.3-linux-arm64.tar.gz.json new file mode 100644 index 0000000..f3828fc --- /dev/null +++ b/release/upwind-agent/v0.115.3/upwind-agent-v0.115.3-linux-arm64.tar.gz.json @@ -0,0 +1,7 @@ +{ + "name": "upwind-agent", + "arch": "arm64", + "version": "0.115.3", + "package": "https://releases.upwind.io/upwind-agent/v0.115.3/upwind-agent-v0.115.3-linux-arm64.tar.gz", + "sha256": "bed4f044859747755af52cd9b93f8a8b3f0ce3d1c477498add604b1a1e8ac2d0" +} diff --git a/release/upwind-agent/v0.116.0-alpha1/upwind-agent-v0.116.0-alpha1-linux-amd64.tar.gz.json b/release/upwind-agent/v0.116.0-alpha1/upwind-agent-v0.116.0-alpha1-linux-amd64.tar.gz.json new file mode 100644 index 0000000..4eb7cb1 --- /dev/null +++ b/release/upwind-agent/v0.116.0-alpha1/upwind-agent-v0.116.0-alpha1-linux-amd64.tar.gz.json @@ -0,0 +1,7 @@ +{ + "name": "upwind-agent", + "arch": "amd64", + "version": "0.116.0-alpha1", + "package": "https://releases.upwind.io/upwind-agent/v0.116.0-alpha1/upwind-agent-v0.116.0-alpha1-linux-amd64.tar.gz", + "sha256": "2d037872bd09ac4b38ea6823bbf875277e00ea4eed8a9098b854b476637ce20c" +} diff --git a/release/upwind-agent/v0.116.0-alpha1/upwind-agent-v0.116.0-alpha1-linux-arm64.tar.gz.json b/release/upwind-agent/v0.116.0-alpha1/upwind-agent-v0.116.0-alpha1-linux-arm64.tar.gz.json new file mode 100644 index 0000000..fc23805 --- /dev/null +++ b/release/upwind-agent/v0.116.0-alpha1/upwind-agent-v0.116.0-alpha1-linux-arm64.tar.gz.json @@ -0,0 +1,7 @@ +{ + "name": "upwind-agent", + "arch": "arm64", + "version": "0.116.0-alpha1", + "package": "https://releases.upwind.io/upwind-agent/v0.116.0-alpha1/upwind-agent-v0.116.0-alpha1-linux-arm64.tar.gz", + "sha256": "bd9814046197bb9b462e8cc3aa25515262a72fa6f41320b0a85d6577bb685089" +} diff --git a/release/upwind-agent/v0.116.0-alpha2/upwind-agent-v0.116.0-alpha2-linux-amd64.tar.gz.json b/release/upwind-agent/v0.116.0-alpha2/upwind-agent-v0.116.0-alpha2-linux-amd64.tar.gz.json new file mode 100644 index 0000000..4ae1fb7 --- /dev/null +++ b/release/upwind-agent/v0.116.0-alpha2/upwind-agent-v0.116.0-alpha2-linux-amd64.tar.gz.json @@ -0,0 +1,7 @@ +{ + "name": "upwind-agent", + "arch": "amd64", + "version": "0.116.0-alpha2", + "package": "https://releases.upwind.io/upwind-agent/v0.116.0-alpha2/upwind-agent-v0.116.0-alpha2-linux-amd64.tar.gz", + "sha256": "77c184f213cd90d93cfd30dbb331b33f767c17251dd434a1ea1d31ebfa3e6881" +} diff --git a/release/upwind-agent/v0.116.0-alpha2/upwind-agent-v0.116.0-alpha2-linux-arm64.tar.gz.json b/release/upwind-agent/v0.116.0-alpha2/upwind-agent-v0.116.0-alpha2-linux-arm64.tar.gz.json new file mode 100644 index 0000000..471a9f0 --- /dev/null +++ b/release/upwind-agent/v0.116.0-alpha2/upwind-agent-v0.116.0-alpha2-linux-arm64.tar.gz.json @@ -0,0 +1,7 @@ +{ + "name": "upwind-agent", + "arch": "arm64", + "version": "0.116.0-alpha2", + "package": "https://releases.upwind.io/upwind-agent/v0.116.0-alpha2/upwind-agent-v0.116.0-alpha2-linux-arm64.tar.gz", + "sha256": "f57aea4525c1f988b5d66b95d0642aece6cf8d3ee1e4e89d714c87a41ab88d6a" +} diff --git a/release/upwind-agent/v0.116.2-alpha1/upwind-agent-v0.116.2-alpha1-linux-amd64.tar.gz.json b/release/upwind-agent/v0.116.2-alpha1/upwind-agent-v0.116.2-alpha1-linux-amd64.tar.gz.json new file mode 100644 index 0000000..3d7d11a --- /dev/null +++ b/release/upwind-agent/v0.116.2-alpha1/upwind-agent-v0.116.2-alpha1-linux-amd64.tar.gz.json @@ -0,0 +1,7 @@ +{ + "name": "upwind-agent", + "arch": "amd64", + "version": "0.116.2-alpha1", + "package": "https://releases.upwind.io/upwind-agent/v0.116.2-alpha1/upwind-agent-v0.116.2-alpha1-linux-amd64.tar.gz", + "sha256": "1596434f5c19897db38334caa7b466bf7da5b2936f9737147ad7646f535cc628" +} diff --git a/release/upwind-agent/v0.116.2-alpha1/upwind-agent-v0.116.2-alpha1-linux-arm64.tar.gz.json b/release/upwind-agent/v0.116.2-alpha1/upwind-agent-v0.116.2-alpha1-linux-arm64.tar.gz.json new file mode 100644 index 0000000..b92ea1e --- /dev/null +++ b/release/upwind-agent/v0.116.2-alpha1/upwind-agent-v0.116.2-alpha1-linux-arm64.tar.gz.json @@ -0,0 +1,7 @@ +{ + "name": "upwind-agent", + "arch": "arm64", + "version": "0.116.2-alpha1", + "package": "https://releases.upwind.io/upwind-agent/v0.116.2-alpha1/upwind-agent-v0.116.2-alpha1-linux-arm64.tar.gz", + "sha256": "085aba5ed1fb5baa27d1249b6d2c8cc609a7a4c3c9f3ad208651616261cc2efd" +} diff --git a/release/upwind-agent/v0.117.0/upwind-agent-v0.117.0-linux-amd64.tar.gz.json b/release/upwind-agent/v0.117.0/upwind-agent-v0.117.0-linux-amd64.tar.gz.json new file mode 100644 index 0000000..0902d09 --- /dev/null +++ b/release/upwind-agent/v0.117.0/upwind-agent-v0.117.0-linux-amd64.tar.gz.json @@ -0,0 +1,7 @@ +{ + "name": "upwind-agent", + "arch": "amd64", + "version": "0.117.0", + "package": "https://releases.upwind.io/upwind-agent/v0.117.0/upwind-agent-v0.117.0-linux-amd64.tar.gz", + "sha256": "445d20e5c0a5f230abbba3807160ac86ac921b2557dd3df1fd13807a51da5e68" +} diff --git a/release/upwind-agent/v0.117.0/upwind-agent-v0.117.0-linux-arm64.tar.gz.json b/release/upwind-agent/v0.117.0/upwind-agent-v0.117.0-linux-arm64.tar.gz.json new file mode 100644 index 0000000..17e1e1f --- /dev/null +++ b/release/upwind-agent/v0.117.0/upwind-agent-v0.117.0-linux-arm64.tar.gz.json @@ -0,0 +1,7 @@ +{ + "name": "upwind-agent", + "arch": "arm64", + "version": "0.117.0", + "package": "https://releases.upwind.io/upwind-agent/v0.117.0/upwind-agent-v0.117.0-linux-arm64.tar.gz", + "sha256": "48d45e4631fccb2c2d38b0b93123ee6c10f0546d21418078834be20797ae3cc1" +} diff --git a/release/upwind-agent/v0.117.1/upwind-agent-v0.117.1-linux-amd64.tar.gz.json b/release/upwind-agent/v0.117.1/upwind-agent-v0.117.1-linux-amd64.tar.gz.json new file mode 100644 index 0000000..a592e79 --- /dev/null +++ b/release/upwind-agent/v0.117.1/upwind-agent-v0.117.1-linux-amd64.tar.gz.json @@ -0,0 +1,7 @@ +{ + "name": "upwind-agent", + "arch": "amd64", + "version": "0.117.1", + "package": "https://releases.upwind.io/upwind-agent/v0.117.1/upwind-agent-v0.117.1-linux-amd64.tar.gz", + "sha256": "6790a43a77d3e50bb0ec5577b72e309f36394209c09c849e410a5402e5f1e9e2" +} diff --git a/release/upwind-agent/v0.117.1/upwind-agent-v0.117.1-linux-arm64.tar.gz.json b/release/upwind-agent/v0.117.1/upwind-agent-v0.117.1-linux-arm64.tar.gz.json new file mode 100644 index 0000000..16f2981 --- /dev/null +++ b/release/upwind-agent/v0.117.1/upwind-agent-v0.117.1-linux-arm64.tar.gz.json @@ -0,0 +1,7 @@ +{ + "name": "upwind-agent", + "arch": "arm64", + "version": "0.117.1", + "package": "https://releases.upwind.io/upwind-agent/v0.117.1/upwind-agent-v0.117.1-linux-arm64.tar.gz", + "sha256": "229fad48cf0ede9f9e5884eb27314d4daa7b5773e2106a9c7494d1731094c14a" +} diff --git a/release/upwind-agent/v0.117.2/upwind-agent-v0.117.2-linux-amd64.tar.gz.json b/release/upwind-agent/v0.117.2/upwind-agent-v0.117.2-linux-amd64.tar.gz.json new file mode 100644 index 0000000..5bb49de --- /dev/null +++ b/release/upwind-agent/v0.117.2/upwind-agent-v0.117.2-linux-amd64.tar.gz.json @@ -0,0 +1,7 @@ +{ + "name": "upwind-agent", + "arch": "amd64", + "version": "0.117.2", + "package": "https://releases.upwind.io/upwind-agent/v0.117.2/upwind-agent-v0.117.2-linux-amd64.tar.gz", + "sha256": "e497a07d7c6847be68f1c4851587d04ab6312fe0f51c097d8a7161a9cc54ee32" +} diff --git a/release/upwind-agent/v0.117.2/upwind-agent-v0.117.2-linux-arm64.tar.gz.json b/release/upwind-agent/v0.117.2/upwind-agent-v0.117.2-linux-arm64.tar.gz.json new file mode 100644 index 0000000..26baf8f --- /dev/null +++ b/release/upwind-agent/v0.117.2/upwind-agent-v0.117.2-linux-arm64.tar.gz.json @@ -0,0 +1,7 @@ +{ + "name": "upwind-agent", + "arch": "arm64", + "version": "0.117.2", + "package": "https://releases.upwind.io/upwind-agent/v0.117.2/upwind-agent-v0.117.2-linux-arm64.tar.gz", + "sha256": "24aac7ff6869a4f8c47540f59a102cea01011bec22033bb29ff18a2c3b0146be" +} diff --git a/release/upwind-agent/v0.117.3/upwind-agent-v0.117.3-linux-amd64.tar.gz.json b/release/upwind-agent/v0.117.3/upwind-agent-v0.117.3-linux-amd64.tar.gz.json new file mode 100644 index 0000000..c9fbba9 --- /dev/null +++ b/release/upwind-agent/v0.117.3/upwind-agent-v0.117.3-linux-amd64.tar.gz.json @@ -0,0 +1,7 @@ +{ + "name": "upwind-agent", + "arch": "amd64", + "version": "0.117.3", + "package": "https://releases.upwind.io/upwind-agent/v0.117.3/upwind-agent-v0.117.3-linux-amd64.tar.gz", + "sha256": "dee706efb18306b98065fd38deeeb6d51b8583e8fd796d95e4b6270423018a78" +} diff --git a/release/upwind-agent/v0.117.3/upwind-agent-v0.117.3-linux-arm64.tar.gz.json b/release/upwind-agent/v0.117.3/upwind-agent-v0.117.3-linux-arm64.tar.gz.json new file mode 100644 index 0000000..9525d8c --- /dev/null +++ b/release/upwind-agent/v0.117.3/upwind-agent-v0.117.3-linux-arm64.tar.gz.json @@ -0,0 +1,7 @@ +{ + "name": "upwind-agent", + "arch": "arm64", + "version": "0.117.3", + "package": "https://releases.upwind.io/upwind-agent/v0.117.3/upwind-agent-v0.117.3-linux-arm64.tar.gz", + "sha256": "9b712aaae0d5c325ff14e9d5060ee978fe24e2ddc7480b89cdc988c076ebe0fd" +} diff --git a/release/upwind-agent/v0.118.0/upwind-agent-v0.118.0-linux-amd64.tar.gz.json b/release/upwind-agent/v0.118.0/upwind-agent-v0.118.0-linux-amd64.tar.gz.json new file mode 100644 index 0000000..72aedfc --- /dev/null +++ b/release/upwind-agent/v0.118.0/upwind-agent-v0.118.0-linux-amd64.tar.gz.json @@ -0,0 +1,7 @@ +{ + "name": "upwind-agent", + "arch": "amd64", + "version": "0.118.0", + "package": "https://releases.upwind.io/upwind-agent/v0.118.0/upwind-agent-v0.118.0-linux-amd64.tar.gz", + "sha256": "63d71e6ab83f9cac7ee9407f1347bc5d75719e9e1f3a84e7ec9476562ea95b65" +} diff --git a/release/upwind-agent/v0.118.0/upwind-agent-v0.118.0-linux-arm64.tar.gz.json b/release/upwind-agent/v0.118.0/upwind-agent-v0.118.0-linux-arm64.tar.gz.json new file mode 100644 index 0000000..cf0e7df --- /dev/null +++ b/release/upwind-agent/v0.118.0/upwind-agent-v0.118.0-linux-arm64.tar.gz.json @@ -0,0 +1,7 @@ +{ + "name": "upwind-agent", + "arch": "arm64", + "version": "0.118.0", + "package": "https://releases.upwind.io/upwind-agent/v0.118.0/upwind-agent-v0.118.0-linux-arm64.tar.gz", + "sha256": "4c412d4ae7768566ca151a00d23e8a6c0dd4f8d911b4bf9f54ce052fd30f6413" +} diff --git a/release/upwind-agent/v0.118.1/upwind-agent-v0.118.1-linux-amd64.tar.gz.json b/release/upwind-agent/v0.118.1/upwind-agent-v0.118.1-linux-amd64.tar.gz.json new file mode 100644 index 0000000..22f85e0 --- /dev/null +++ b/release/upwind-agent/v0.118.1/upwind-agent-v0.118.1-linux-amd64.tar.gz.json @@ -0,0 +1,7 @@ +{ + "name": "upwind-agent", + "arch": "amd64", + "version": "0.118.1", + "package": "https://releases.upwind.io/upwind-agent/v0.118.1/upwind-agent-v0.118.1-linux-amd64.tar.gz", + "sha256": "05b236f67bf3af57d531bc87db3e8df63e551e9cfaeaa712edb8ac77209f18a0" +} diff --git a/release/upwind-agent/v0.118.1/upwind-agent-v0.118.1-linux-arm64.tar.gz.json b/release/upwind-agent/v0.118.1/upwind-agent-v0.118.1-linux-arm64.tar.gz.json new file mode 100644 index 0000000..9cc7b1a --- /dev/null +++ b/release/upwind-agent/v0.118.1/upwind-agent-v0.118.1-linux-arm64.tar.gz.json @@ -0,0 +1,7 @@ +{ + "name": "upwind-agent", + "arch": "arm64", + "version": "0.118.1", + "package": "https://releases.upwind.io/upwind-agent/v0.118.1/upwind-agent-v0.118.1-linux-arm64.tar.gz", + "sha256": "a897a7de8d4d99d23748b80185b1ec94a99c6d4c6fe7e80c964866e420dfa8eb" +} diff --git a/release/upwind-agent/v0.118.2/upwind-agent-v0.118.2-linux-amd64.tar.gz.json b/release/upwind-agent/v0.118.2/upwind-agent-v0.118.2-linux-amd64.tar.gz.json new file mode 100644 index 0000000..454e03b --- /dev/null +++ b/release/upwind-agent/v0.118.2/upwind-agent-v0.118.2-linux-amd64.tar.gz.json @@ -0,0 +1,7 @@ +{ + "name": "upwind-agent", + "arch": "amd64", + "version": "0.118.2", + "package": "https://releases.upwind.io/upwind-agent/v0.118.2/upwind-agent-v0.118.2-linux-amd64.tar.gz", + "sha256": "03169bbd2a8829dd9753e4e813e900f716f54c02b4184d9f8d0fb7b7f3ff2c02" +} diff --git a/release/upwind-agent/v0.118.2/upwind-agent-v0.118.2-linux-arm64.tar.gz.json b/release/upwind-agent/v0.118.2/upwind-agent-v0.118.2-linux-arm64.tar.gz.json new file mode 100644 index 0000000..3c68afd --- /dev/null +++ b/release/upwind-agent/v0.118.2/upwind-agent-v0.118.2-linux-arm64.tar.gz.json @@ -0,0 +1,7 @@ +{ + "name": "upwind-agent", + "arch": "arm64", + "version": "0.118.2", + "package": "https://releases.upwind.io/upwind-agent/v0.118.2/upwind-agent-v0.118.2-linux-arm64.tar.gz", + "sha256": "d87bd2ad255425a2f2575ca674000098e24163980cbfcab4e127f7342894f21b" +} diff --git a/release/upwind-agent/v0.118.3/upwind-agent-v0.118.3-linux-amd64.tar.gz.json b/release/upwind-agent/v0.118.3/upwind-agent-v0.118.3-linux-amd64.tar.gz.json new file mode 100644 index 0000000..e81f1a1 --- /dev/null +++ b/release/upwind-agent/v0.118.3/upwind-agent-v0.118.3-linux-amd64.tar.gz.json @@ -0,0 +1,7 @@ +{ + "name": "upwind-agent", + "arch": "amd64", + "version": "0.118.3", + "package": "https://releases.upwind.io/upwind-agent/v0.118.3/upwind-agent-v0.118.3-linux-amd64.tar.gz", + "sha256": "3c3bcc24c4cd02aa9fd9328b1e520b0996c79449f2dbd72a725f4f0749f22518" +} diff --git a/release/upwind-agent/v0.118.3/upwind-agent-v0.118.3-linux-arm64.tar.gz.json b/release/upwind-agent/v0.118.3/upwind-agent-v0.118.3-linux-arm64.tar.gz.json new file mode 100644 index 0000000..05c7b74 --- /dev/null +++ b/release/upwind-agent/v0.118.3/upwind-agent-v0.118.3-linux-arm64.tar.gz.json @@ -0,0 +1,7 @@ +{ + "name": "upwind-agent", + "arch": "arm64", + "version": "0.118.3", + "package": "https://releases.upwind.io/upwind-agent/v0.118.3/upwind-agent-v0.118.3-linux-arm64.tar.gz", + "sha256": "8be547a8d931d12a2fc11e1b80db81812eb94d0033677e0c8b3e59eadb4bf026" +} diff --git a/release/upwind-agent/v0.119.0/upwind-agent-v0.119.0-linux-amd64.tar.gz.json b/release/upwind-agent/v0.119.0/upwind-agent-v0.119.0-linux-amd64.tar.gz.json new file mode 100644 index 0000000..76b038b --- /dev/null +++ b/release/upwind-agent/v0.119.0/upwind-agent-v0.119.0-linux-amd64.tar.gz.json @@ -0,0 +1,7 @@ +{ + "name": "upwind-agent", + "arch": "amd64", + "version": "0.119.0", + "package": "https://releases.upwind.io/upwind-agent/v0.119.0/upwind-agent-v0.119.0-linux-amd64.tar.gz", + "sha256": "4cfa32684135322a9ff748b6143f4ef4dcd7e9509630d93a7f415aec32fe1776" +} diff --git a/release/upwind-agent/v0.119.0/upwind-agent-v0.119.0-linux-arm64.tar.gz.json b/release/upwind-agent/v0.119.0/upwind-agent-v0.119.0-linux-arm64.tar.gz.json new file mode 100644 index 0000000..5824af5 --- /dev/null +++ b/release/upwind-agent/v0.119.0/upwind-agent-v0.119.0-linux-arm64.tar.gz.json @@ -0,0 +1,7 @@ +{ + "name": "upwind-agent", + "arch": "arm64", + "version": "0.119.0", + "package": "https://releases.upwind.io/upwind-agent/v0.119.0/upwind-agent-v0.119.0-linux-arm64.tar.gz", + "sha256": "a060e6cb24c8fda3278bcecd6d8bbd3ece8046dec45f8a10251eb4bf4e682ba8" +} diff --git a/script/generate-manifest.sh b/script/generate-manifest.sh new file mode 100755 index 0000000..eb57d64 --- /dev/null +++ b/script/generate-manifest.sh @@ -0,0 +1,106 @@ +#!/usr/bin/env bash +set -uo pipefail + +main() { + arg_release_url_or_path="$1" + arg_component="$2" + arg_version="$(strip-prefix "$3" v)" + arg_platform="$4" + arg_arch="$5" + + # show usage and exit if args aren't provided + if [[ $# != 5 ]]; then + print_usage_message + exit 1 + fi + + filename="${arg_component}-v${arg_version}-${arg_platform}-${arg_arch}.tar.gz" + if [[ "${arg_release_url_or_path}" == http* ]]; then + base_url="${arg_release_url_or_path}/${arg_component}/v${arg_version}" + package="${base_url}/${filename}" + + if [[ "${UPWIND_CLIENT_ID:-}" == "" || "${UPWIND_CLIENT_SECRET:-}" == "" ]]; then + echo "error: UPWIND_CLIENT_ID and UPWIND_CLIENT_SECRET must be set." >&2 + exit 1 + fi + + auth_endpoint="${UPWIND_AUTH_ENDPOINT:-https://oauth.upwind.io/oauth/token}" + auth_audience="${UPWIND_AUTH_AUDIENCE:-https://agent.upwind.io}" + + auth_response="$(curl -fsSL -X POST \ + --data grant_type=client_credentials \ + --data "audience=${auth_audience}" \ + --data "client_id=${UPWIND_CLIENT_ID}" \ + --data "client_secret=${UPWIND_CLIENT_SECRET}" \ + --url "${auth_endpoint}" 2>&1)" + if [[ $? != 0 ]]; then + echo "Error authenticating: ${auth_response}" 2>&1 + exit 1 + fi + + auth_token="$(echo "${auth_response}" | grep -Eo '"access_token"[^,]*' | sed -E 's/"access_token": ?"(.*)"/\1/')" + + auth_header="Authorization: Bearer ${auth_token}" + sha256="$(curl -fsSL -X GET --url "${package}.sha256" --header "${auth_header}" 2>&1)" + if [[ $? != 0 ]]; then + echo "Error getting hash: ${sha256}" 2>&1 + exit 1 + fi + else + package="${arg_release_url_or_path}/${filename}" + sha256_file="${arg_release_url_or_path}/${filename}.sha256" + sha256="$(cat "${sha256_file}")" + fi + + output_path="./release/${arg_component}/v${arg_version}" + echo "Writing to ${output_path}/${filename}.json" + mkdir -p "${output_path}" + print_manifest + print_manifest > "${output_path}/${filename}.json" +} + +strip-prefix() { printf "%s" "${1#"$2"}"; } + +print_manifest() { + cat <&2 < + +If release-url-or-path is set to a path containing a tarball and hash file, then +authentication is skipped and the release manifest is generated directly from those +local files. + +Otherwise, the environment variables UPWIND_CLIENT_ID and UPWIND_CLIENT_SECRET are +required to be set to credentials with permission to access the provided release url. + +Additionally, the optional UPWIND_AUTH_ENDPOINT and UPWIND_AUTH_AUDIENCE variables +may be set to override the authentication endpoint and audience if necessary. + +For example, the invocation: + + generate-manifest.sh https://releases.upwind.io upwind-agent 0.119.0 linux amd64 + +generates the output: + +{ + "name": "upwind-agent", + "arch": "amd64", + "version": "0.119.0", + "package": "https://releases.upwind.io/upwind-agent/v0.119.0/upwind-agent-v0.119.0-linux-amd64.tar.gz", + "sha256": "4cfa32684135322a9ff748b6143f4ef4dcd7e9509630d93a7f415aec32fe1776" +} +EOF +} + +main "$@" From 13af0883cfaa80ab776b32cc11eaeb5c38c886f4 Mon Sep 17 00:00:00 2001 From: David Kern Date: Fri, 15 Aug 2025 15:28:19 -0700 Subject: [PATCH 2/7] update manifest package url --- .../upwind-agent-hostconfig-v0.7.0-linux-arm64.tar.gz.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release/upwind-agent-hostconfig/v0.7.0/upwind-agent-hostconfig-v0.7.0-linux-arm64.tar.gz.json b/release/upwind-agent-hostconfig/v0.7.0/upwind-agent-hostconfig-v0.7.0-linux-arm64.tar.gz.json index 4a4e6df..820482c 100644 --- a/release/upwind-agent-hostconfig/v0.7.0/upwind-agent-hostconfig-v0.7.0-linux-arm64.tar.gz.json +++ b/release/upwind-agent-hostconfig/v0.7.0/upwind-agent-hostconfig-v0.7.0-linux-arm64.tar.gz.json @@ -2,6 +2,6 @@ "name": "upwind-agent-hostconfig", "arch": "arm64", "version": "0.7.0", - "package": "./upwind-agent-hostconfig-v0.7.0-linux-arm64.tar.gz", + "package": "https://releases.upwind.io/upwind-agent-hostconfig/upwind-agent-hostconfig-v0.7.0-linux-arm64.tar.gz", "sha256": "5686e91273c2dba68530f14fc4dd91db30e132443cd765dcec1a9d5ca4623847" } From 109dc7addd063c09e8fa57cd4cb733378c693aa4 Mon Sep 17 00:00:00 2001 From: David Kern Date: Fri, 15 Aug 2025 15:35:11 -0700 Subject: [PATCH 3/7] add stable release channels and mark latest --- release/upwind-agent-hostconfig/stable.json | 1 + release/upwind-agent/stable.json | 1 + 2 files changed, 2 insertions(+) create mode 100644 release/upwind-agent-hostconfig/stable.json create mode 100644 release/upwind-agent/stable.json diff --git a/release/upwind-agent-hostconfig/stable.json b/release/upwind-agent-hostconfig/stable.json new file mode 100644 index 0000000..7e74e9e --- /dev/null +++ b/release/upwind-agent-hostconfig/stable.json @@ -0,0 +1 @@ +"v0.7.0" \ No newline at end of file diff --git a/release/upwind-agent/stable.json b/release/upwind-agent/stable.json new file mode 100644 index 0000000..72c7077 --- /dev/null +++ b/release/upwind-agent/stable.json @@ -0,0 +1 @@ +"v0.118.2" \ No newline at end of file From 762c664bec98779c3090afbded8238fd17b02455 Mon Sep 17 00:00:00 2001 From: David Kern Date: Tue, 19 Aug 2025 16:20:31 -0700 Subject: [PATCH 4/7] feat: implement release manifests and add unit tests --- .github/workflows/test.yaml | 24 +++++ Justfile | 15 +++ ...-hostconfig-v0.5.2-linux-amd64.tar.gz.json | 2 +- ...-hostconfig-v0.5.2-linux-arm64.tar.gz.json | 2 +- ...-hostconfig-v0.6.0-linux-amd64.tar.gz.json | 2 +- ...-hostconfig-v0.6.0-linux-arm64.tar.gz.json | 2 +- ...-hostconfig-v0.7.0-linux-amd64.tar.gz.json | 2 +- ...-hostconfig-v0.7.0-linux-arm64.tar.gz.json | 2 +- upwind-sensor/README.md | 16 +++- upwind-sensor/default.nix | 56 ++++++++--- upwind-sensor/release.nix | 56 +++++++++++ upwind-sensor/test/test.nix | 95 +++++++++++++++++++ upwind-sensor/upwind-artifact.nix | 44 ++++----- upwind-sensor/upwind-pkg.nix | 48 +++------- upwind-sensor/upwind-version.nix | 46 --------- 15 files changed, 281 insertions(+), 131 deletions(-) create mode 100644 .github/workflows/test.yaml create mode 100644 Justfile create mode 100644 upwind-sensor/release.nix create mode 100644 upwind-sensor/test/test.nix delete mode 100644 upwind-sensor/upwind-version.nix diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml new file mode 100644 index 0000000..4a99a2d --- /dev/null +++ b/.github/workflows/test.yaml @@ -0,0 +1,24 @@ +name: Lint and Test + +on: + pull_request: + push: + branches: [main] + +jobs: + lint-and-test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: cachix/install-nix-action@v31 + with: + nix_path: nixpkgs=channel:nixos-unstable + + - name: Check syntax + run: find . -name '*.nix' | xargs nix-instantiate --parse > /dev/null + + - name: Lint + run: nix run github:nix-community/nixpkgs-lint -- ./upwind-sensor + + - name: Test + run: nix eval --impure --expr 'import ./upwind-sensor/test/test.nix {}' diff --git a/Justfile b/Justfile new file mode 100644 index 0000000..f0c3732 --- /dev/null +++ b/Justfile @@ -0,0 +1,15 @@ +# Show a list of recipes +default: + @just --list + +# Checks syntax of all nix files +check: + find . -name '*.nix' | xargs nix-instantiate --parse > /dev/null + +# Runs nix lint +lint: + nix run github:nix-community/nixpkgs-lint -- ./upwind-sensor + +# Runs unit tests +test: + nix eval --impure --expr 'import ./upwind-sensor/test/test.nix {}' diff --git a/release/upwind-agent-hostconfig/v0.5.2/upwind-agent-hostconfig-v0.5.2-linux-amd64.tar.gz.json b/release/upwind-agent-hostconfig/v0.5.2/upwind-agent-hostconfig-v0.5.2-linux-amd64.tar.gz.json index 3a175ad..7591b4c 100644 --- a/release/upwind-agent-hostconfig/v0.5.2/upwind-agent-hostconfig-v0.5.2-linux-amd64.tar.gz.json +++ b/release/upwind-agent-hostconfig/v0.5.2/upwind-agent-hostconfig-v0.5.2-linux-amd64.tar.gz.json @@ -2,6 +2,6 @@ "name": "upwind-agent-hostconfig", "arch": "amd64", "version": "0.5.2", - "package": "https://releases.upwind.io/upwind-agent-hostconfig/upwind-agent-hostconfig-v0.5.2-linux-amd64.tar.gz", + "package": "https://releases.upwind.io/upwind-agent-hostconfig/v0.5.2/upwind-agent-hostconfig-v0.5.2-linux-amd64.tar.gz", "sha256": "85cc27fc54d4ce2f24c12aca3d3673c2070381e9960502d4266520a5c3f37813" } diff --git a/release/upwind-agent-hostconfig/v0.5.2/upwind-agent-hostconfig-v0.5.2-linux-arm64.tar.gz.json b/release/upwind-agent-hostconfig/v0.5.2/upwind-agent-hostconfig-v0.5.2-linux-arm64.tar.gz.json index 8f517ad..380a8e5 100644 --- a/release/upwind-agent-hostconfig/v0.5.2/upwind-agent-hostconfig-v0.5.2-linux-arm64.tar.gz.json +++ b/release/upwind-agent-hostconfig/v0.5.2/upwind-agent-hostconfig-v0.5.2-linux-arm64.tar.gz.json @@ -2,6 +2,6 @@ "name": "upwind-agent-hostconfig", "arch": "arm64", "version": "0.5.2", - "package": "https://releases.upwind.io/upwind-agent-hostconfig/upwind-agent-hostconfig-v0.5.2-linux-arm64.tar.gz", + "package": "https://releases.upwind.io/upwind-agent-hostconfig/v0.5.2/upwind-agent-hostconfig-v0.5.2-linux-arm64.tar.gz", "sha256": "cfa90939c126c4b2449befd905bde31751b559d19ff1a2e8276d9f22ba954ac2" } diff --git a/release/upwind-agent-hostconfig/v0.6.0/upwind-agent-hostconfig-v0.6.0-linux-amd64.tar.gz.json b/release/upwind-agent-hostconfig/v0.6.0/upwind-agent-hostconfig-v0.6.0-linux-amd64.tar.gz.json index 7c30f1d..fd68984 100644 --- a/release/upwind-agent-hostconfig/v0.6.0/upwind-agent-hostconfig-v0.6.0-linux-amd64.tar.gz.json +++ b/release/upwind-agent-hostconfig/v0.6.0/upwind-agent-hostconfig-v0.6.0-linux-amd64.tar.gz.json @@ -2,6 +2,6 @@ "name": "upwind-agent-hostconfig", "arch": "amd64", "version": "0.6.0", - "package": "https://releases.upwind.io/upwind-agent-hostconfig/upwind-agent-hostconfig-v0.6.0-linux-amd64.tar.gz", + "package": "https://releases.upwind.io/upwind-agent-hostconfig/v0.6.0/upwind-agent-hostconfig-v0.6.0-linux-amd64.tar.gz", "sha256": "b433e78c2ea93a7b865041b407021b4f8fdb18252300cba90a10e8e419de8526" } diff --git a/release/upwind-agent-hostconfig/v0.6.0/upwind-agent-hostconfig-v0.6.0-linux-arm64.tar.gz.json b/release/upwind-agent-hostconfig/v0.6.0/upwind-agent-hostconfig-v0.6.0-linux-arm64.tar.gz.json index 0355f6b..c4505de 100644 --- a/release/upwind-agent-hostconfig/v0.6.0/upwind-agent-hostconfig-v0.6.0-linux-arm64.tar.gz.json +++ b/release/upwind-agent-hostconfig/v0.6.0/upwind-agent-hostconfig-v0.6.0-linux-arm64.tar.gz.json @@ -2,6 +2,6 @@ "name": "upwind-agent-hostconfig", "arch": "arm64", "version": "0.6.0", - "package": "https://releases.upwind.io/upwind-agent-hostconfig/upwind-agent-hostconfig-v0.6.0-linux-arm64.tar.gz", + "package": "https://releases.upwind.io/upwind-agent-hostconfig/v0.6.0/upwind-agent-hostconfig-v0.6.0-linux-arm64.tar.gz", "sha256": "a40a2a3e22dd71d54784b46350634295ae073b28e1263fc9866a9bd7a7512a2a" } diff --git a/release/upwind-agent-hostconfig/v0.7.0/upwind-agent-hostconfig-v0.7.0-linux-amd64.tar.gz.json b/release/upwind-agent-hostconfig/v0.7.0/upwind-agent-hostconfig-v0.7.0-linux-amd64.tar.gz.json index f11f790..d278bbf 100644 --- a/release/upwind-agent-hostconfig/v0.7.0/upwind-agent-hostconfig-v0.7.0-linux-amd64.tar.gz.json +++ b/release/upwind-agent-hostconfig/v0.7.0/upwind-agent-hostconfig-v0.7.0-linux-amd64.tar.gz.json @@ -2,6 +2,6 @@ "name": "upwind-agent-hostconfig", "arch": "amd64", "version": "0.7.0", - "package": "https://releases.upwind.io/upwind-agent-hostconfig/upwind-agent-hostconfig-v0.7.0-linux-amd64.tar.gz", + "package": "https://releases.upwind.io/upwind-agent-hostconfig/v0.7.0/upwind-agent-hostconfig-v0.7.0-linux-amd64.tar.gz", "sha256": "b0d9e1693dd2c0991e9d5ac928a158a7b51931ae1edafc6f4d043eb1473b31bf" } diff --git a/release/upwind-agent-hostconfig/v0.7.0/upwind-agent-hostconfig-v0.7.0-linux-arm64.tar.gz.json b/release/upwind-agent-hostconfig/v0.7.0/upwind-agent-hostconfig-v0.7.0-linux-arm64.tar.gz.json index 820482c..76f97b1 100644 --- a/release/upwind-agent-hostconfig/v0.7.0/upwind-agent-hostconfig-v0.7.0-linux-arm64.tar.gz.json +++ b/release/upwind-agent-hostconfig/v0.7.0/upwind-agent-hostconfig-v0.7.0-linux-arm64.tar.gz.json @@ -2,6 +2,6 @@ "name": "upwind-agent-hostconfig", "arch": "arm64", "version": "0.7.0", - "package": "https://releases.upwind.io/upwind-agent-hostconfig/upwind-agent-hostconfig-v0.7.0-linux-arm64.tar.gz", + "package": "https://releases.upwind.io/upwind-agent-hostconfig/v0.7.0/upwind-agent-hostconfig-v0.7.0-linux-arm64.tar.gz", "sha256": "5686e91273c2dba68530f14fc4dd91db30e132443cd765dcec1a9d5ca4623847" } diff --git a/upwind-sensor/README.md b/upwind-sensor/README.md index 2858f71..e1188c3 100644 --- a/upwind-sensor/README.md +++ b/upwind-sensor/README.md @@ -1,9 +1,5 @@ # Upwind Sensor -## TODO - -* Support Nix Flakes. - ## Usage Provide credentials to fetch artifacts: @@ -28,7 +24,7 @@ in { services.upwindSensor = { enable = true; enableScanner = true; - sensorVersion = "0.115.3"; # (Optional) pin sensor/scanner version + sensorVersion = "0.119.0"; # (Optional) pin sensor/scanner version region = "us"; # Change to "eu" if needed logLevel = "info"; sensorEnvironment = { # (Optional) additional env vars for sensor service @@ -59,7 +55,17 @@ file can be passed to `systemd.services.nix-daemon.serviceConfig.EnvironmentFile ## Testing +### Unit test + +`nix eval --impure --expr 'import ./test/test.nix {}'` + +### Integration test + The configuration in the `test/` directory can be used with nix-build to test the build: `nix-build test` + +## TODO + +* Support Nix Flakes. diff --git a/upwind-sensor/default.nix b/upwind-sensor/default.nix index 6e543fc..32e5751 100644 --- a/upwind-sensor/default.nix +++ b/upwind-sensor/default.nix @@ -8,7 +8,7 @@ let sensorVersion = cfg.sensorVersion; hostconfigVersion = if cfg.enableHostconfig then cfg.hostconfigVersion else ""; region = cfg.region; - domain = cfg.domain; + dev = cfg.dev; }; coerceToString = x: if builtins.isBool x then @@ -54,12 +54,6 @@ in description = "Upwind region."; }; - domain = mkOption { - type = types.str; - default = "upwind.io"; - description = "Override the upwind.io domain for development."; - }; - logLevel = mkOption { type = types.str; default = "info"; @@ -183,6 +177,46 @@ in description = "Additional configuration added to /etc/upwind/agent.yaml"; }; + # Development overrides + dev = let + devOptions = { + sensorTarballUrl = mkOption { + type = types.str; + description = "Override sensor tarball url."; + }; + + sensorTarballHash = mkOption { + type = types.str; + description = "Override sensor tarball hash."; + }; + + hostconfigTarballUrl = mkOption { + type = types.str; + description = "Override hostconfig tarball url."; + }; + + hostconfigTarballHash = mkOption { + type = types.str; + description = "Override hostconfig tarball hash."; + }; + + authEndpoint = mkOption { + type = types.str; + description = "Override authentication endpoint."; + }; + + authAudience = mkOption { + type = types.str; + description = "Override authentication audience."; + }; + }; + in + mkOption { + type = with types; submodule devOptions; + description = "Override options to enable dev/test of unreleased versions."; + default = null; + }; + # TODO: ... add options corresponding to UPWIND_ variables # TODO: Configure scanner exclusions }; @@ -192,8 +226,8 @@ in environment.etc."upwind/agent.yaml".text = '' # Upwind Sensor Configuration generated by NixOS region: "${cfg.region}" - api-host: "https://agent${if cfg.region == "eu" then ".eu" else ""}.${cfg.domain}" - auth-endpoint: "https://oauth${if cfg.region == "eu" then ".eu" else ""}.${cfg.domain}/oauth/token" + api-host: "https://agent${if cfg.region == "eu" then ".eu" else ""}.${domain}" + auth-endpoint: "https://oauth${if cfg.region == "eu" then ".eu" else ""}.${domain}/oauth/token" log-level: "${cfg.logLevel}" install-type: "std" platform: "host" @@ -207,8 +241,8 @@ in environment.etc."upwind/agent-hostconfig.yaml".text = '' # Upwind Hostconfig Configuration generated by NixOS region: "${cfg.region}" - api-host: "https://agent${if cfg.region == "eu" then ".eu" else ""}.${cfg.domain}" - auth-endpoint: "https://oauth${if cfg.region == "eu" then ".eu" else ""}.${cfg.domain}/oauth/token" + api-host: "https://agent${if cfg.region == "eu" then ".eu" else ""}.${domain}" + auth-endpoint: "https://oauth${if cfg.region == "eu" then ".eu" else ""}.${domain}/oauth/token" log-level: "${cfg.logLevel}" ''; diff --git a/upwind-sensor/release.nix b/upwind-sensor/release.nix new file mode 100644 index 0000000..9b111ca --- /dev/null +++ b/upwind-sensor/release.nix @@ -0,0 +1,56 @@ +{ + lib, + system, + sensorVersion, + hostconfigVersion, + region, + dev, +}: + +rec { + pathSensorStable = ../release/upwind-agent/stable.json; + pathHostconfigStable = ../release/upwind-agent-hostconfig/stable.json; + + regionDomain = if region == "us" then "upwind.io" else "${region}.upwind.io"; + releasesDomain = "releases.${regionDomain}"; + + arch = if system == "x86_64-linux" then "amd64" + else if system == "aarch64-linux" then "arm64" + else throw "Unsupported platform: ${system}"; + + packages = if dev == null then + let + sensorSemver = lib.strings.removePrefix "v" ( + if sensorVersion == "stable" then lib.importJSON pathSensorStable else sensorVersion + ); + sensorTarballName = "upwind-agent-v${sensorSemver}-linux-${arch}.tar.gz"; + sensorManifest = lib.importJSON ../release/upwind-agent/v${sensorSemver}/${sensorTarballName}.json; + + hostconfigSemver = lib.strings.removePrefix "v" ( + if hostconfigVersion == "stable" then lib.importJSON pathHostconfigStable else hostconfigVersion + ); + hostconfigTarballName = "upwind-agent-hostconfig-v${hostconfigSemver}-linux-${arch}.tar.gz"; + hostconfigManifest = lib.importJSON ../release/upwind-agent-hostconfig/v${hostconfigSemver}/${hostconfigTarballName}.json; + in { + inherit sensorTarballName hostconfigTarballName; + sensorTarballUrl = "https://${releasesDomain}/upwind-agent/v${sensorSemver}/${sensorTarballName}"; + sensorTarballHash = sensorManifest.sha256; + + hostconfigTarballUrl = "https://${releasesDomain}/upwind-agent-hostconfig/v${hostconfigSemver}/${hostconfigTarballName}"; + hostconfigTarballHash = hostconfigManifest.sha256; + + authEndpoint = "https://oauth.${regionDomain}/oauth/token"; + authAudience = "https://agent.${regionDomain}"; + } else { + sensorTarballUrl = dev.sensorTarballUrl; + sensorTarballHash = dev.sensorTarballHash; + sensorTarballName = lib.lists.last (lib.strings.splitString "/" dev.sensorTarballUrl); + + hostconfigTarballUrl = dev.hostconfigTarballUrl; + hostconfigTarballHash = dev.hostconfigTarballHash; + hostconfigTarballName = lib.lists.last (lib.strings.splitString "/" dev.hostconfigTarballUrl); + + authEndpoint = dev.authEndpoint; + authAudience = dev.authAudience; + }; +} \ No newline at end of file diff --git a/upwind-sensor/test/test.nix b/upwind-sensor/test/test.nix new file mode 100644 index 0000000..a23d25f --- /dev/null +++ b/upwind-sensor/test/test.nix @@ -0,0 +1,95 @@ +{ pkgs ? import {} }: +let + defaultSystem = "x86_64-linux"; + defaultSensorVersion = "0.119.0"; + defaultHostconfigVersion = "0.7.0"; + defaultRegion = "us"; + + # evaluate release with defaults overriden by 'attrs' + mkRelease = attrs: import ../release.nix ( { + lib = pkgs.lib; + system = defaultSystem; + sensorVersion = defaultSensorVersion; + hostconfigVersion = defaultHostconfigVersion; + region = defaultRegion; + dev = null; + } // attrs ); + + dev = { + sensorTarballUrl = "https://example.com/sensor.tar.gz"; + sensorTarballHash = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; + hostconfigTarballUrl = "https://example.com/hostconfig.tar.gz"; + hostconfigTarballHash = "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"; + authEndpoint = "https://auth.example.com"; + authAudience = "https://aud.example.com"; + }; +in + pkgs.lib.debug.runTests { + ### Domains + + # default region domain is "upwind.io" + testRegionDefault = { + expr = (mkRelease { }).regionDomain; + expected = "upwind.io"; + }; + + # if region is set to "us", the domain should still be "upwind.io" + testRegionUS = { + expr = (mkRelease { region = "us"; }).regionDomain; + expected = "upwind.io"; + }; + + # "eu" and other regions make domains like "eu.upwind.io" + testRegionEU = { + expr = (mkRelease { region = "eu"; }).regionDomain; + expected = "eu.upwind.io"; + }; + + # default releases domain is "releases.upwind.io" + testReleasesDefault = { + expr = (mkRelease { }).releasesDomain; + expected = "releases.upwind.io"; + }; + + # and for "eu" it is "releases.eu.upwind.io" + testReleasesEU = { + expr = (mkRelease { region = "eu"; }).releasesDomain; + expected = "releases.eu.upwind.io"; + }; + + ### Sensor + + testReleasePackages = { + expr = (mkRelease { }).packages; + expected = { + authAudience = "https://agent.upwind.io"; + authEndpoint = "https://oauth.upwind.io/oauth/token"; + + sensorTarballUrl = "https://releases.upwind.io/upwind-agent/v0.119.0/upwind-agent-v0.119.0-linux-amd64.tar.gz"; + sensorTarballHash = "4cfa32684135322a9ff748b6143f4ef4dcd7e9509630d93a7f415aec32fe1776"; + sensorTarballName = "upwind-agent-v0.119.0-linux-amd64.tar.gz"; + + hostconfigTarballUrl = "https://releases.upwind.io/upwind-agent-hostconfig/v0.7.0/upwind-agent-hostconfig-v0.7.0-linux-amd64.tar.gz"; + hostconfigTarballHash = "b0d9e1693dd2c0991e9d5ac928a158a7b51931ae1edafc6f4d043eb1473b31bf"; + hostconfigTarballName = "upwind-agent-hostconfig-v0.7.0-linux-amd64.tar.gz"; + }; + }; + + ### Dev + + # if dev is set, those are passed through to the packages + # attribute, and the names are derived from the urls + testDev = { + expr = (mkRelease { inherit dev; }).packages; + expected = { + sensorTarballUrl = dev.sensorTarballUrl; + sensorTarballHash = dev.sensorTarballHash; + sensorTarballName = "sensor.tar.gz"; + hostconfigTarballUrl = dev.hostconfigTarballUrl; + hostconfigTarballHash = dev.hostconfigTarballHash; + hostconfigTarballName = "hostconfig.tar.gz"; + authEndpoint = dev.authEndpoint; + authAudience = dev.authAudience; + }; + }; + } diff --git a/upwind-sensor/upwind-artifact.nix b/upwind-sensor/upwind-artifact.nix index 7396c5c..5d9fa9b 100644 --- a/upwind-sensor/upwind-artifact.nix +++ b/upwind-sensor/upwind-artifact.nix @@ -1,34 +1,24 @@ { stdenv, bash, curl, jq -, domain -, region -, artifactName -, artifactVersion -, artifactArch -, artifactHash + , name + , artifactUrl + , artifactHash + , authEndpoint + , authAudience }: -let - tarballName = "${artifactName}-v${artifactVersion}-linux-${artifactArch}.tar.gz"; - regionUrl=if region == "us" then domain else "${region}.${domain}"; - releaseUrl="https://releases.${regionUrl}"; - artifactUrl="${releaseUrl}/${artifactName}/v${artifactVersion}/${tarballName}"; - authEndpoint="https://oauth.${regionUrl}/oauth/token"; - authAudience="https://agent.${regionUrl}"; -in - stdenv.mkDerivation { - inherit artifactUrl authEndpoint authAudience; +stdenv.mkDerivation { + inherit name artifactUrl authEndpoint authAudience; - name = tarballName; - src = ./.; + src = ./.; - impureEnvVars=["UPWIND_AUTH_CLIENT_ID" "UPWIND_AUTH_CLIENT_SECRET"]; + impureEnvVars=["UPWIND_AUTH_CLIENT_ID" "UPWIND_AUTH_CLIENT_SECRET"]; - curl = "${curl}/bin/curl"; - jq = "${jq}/bin/jq"; - builder = "${bash}/bin/bash"; - args = [ ./upwind-artifact.sh ]; + curl = "${curl}/bin/curl"; + jq = "${jq}/bin/jq"; + builder = "${bash}/bin/bash"; + args = [ ./upwind-artifact.sh ]; - outputHashMode = "flat"; - outputHashAlgo = "sha256"; - outputHash = artifactHash; - } + outputHashMode = "flat"; + outputHashAlgo = "sha256"; + outputHash = artifactHash; +} diff --git a/upwind-sensor/upwind-pkg.nix b/upwind-sensor/upwind-pkg.nix index dea1da8..2aa138d 100644 --- a/upwind-sensor/upwind-pkg.nix +++ b/upwind-sensor/upwind-pkg.nix @@ -2,51 +2,27 @@ sensorVersion, hostconfigVersion, region, - domain, + dev, }: let - version_table = import ./upwind-version.nix; - - # Determine system architecture - isX86_64 = stdenv.hostPlatform.system == "x86_64-linux"; - isAarch64 = stdenv.hostPlatform.system == "aarch64-linux"; - - arch = if isX86_64 then "amd64" - else if isAarch64 then "arm64" - else throw "Unsupported platform: ${stdenv.hostPlatform.system}"; - - sensorSemver = if sensorVersion == "dev" then version_table.dev.sensor - else if sensorVersion == "stable" then version_table.stable.sensor - else sensorVersion; - - sensorHash = lib.attrsets.attrByPath [sensorSemver arch] "" version_table.hashes.sensor; - - hostconfigSemver = if hostconfigVersion == "dev" then version_table.dev.hostconfig - else if hostconfigVersion == "stable" then version_table.stable.hostconfig - else hostconfigVersion; - - hostconfigHash = lib.attrsets.attrByPath [hostconfigSemver arch] "" version_table.hashes.hostconfig; - + release = import ./release.nix { + inherit sensorVersion hostconfigVersion region dev; + system = stdenv.hostPlatform.system; + }; srcs = [(import ./upwind-artifact.nix { inherit stdenv bash curl jq; - artifactName = "upwind-agent"; - artifactVersion = sensorSemver; - artifactArch = arch; - artifactHash = sensorHash; - region = region; - domain = domain; + name = release.pkgs.sensorTarballName; + artifactUrl = release.pkgs.sensorTarballUrl; + artifactHash = release.pkgs.sensorTarballHash; }).out] - ++ lib.optionals (hostconfigVersion != "") + ++ lib.optionals (release.pkgs.hostconfigTarballUrl != null) [(import ./upwind-artifact.nix { inherit stdenv bash curl jq; - artifactName = "upwind-agent-hostconfig"; - artifactVersion = hostconfigSemver; - artifactArch = arch; - artifactHash = hostconfigHash; - region = region; - domain = domain; + name = release.pkgs.hostconfigTarballName; + artifactUrl = release.pkgs.hostconfigTarballUrl; + artifactHash = release.pkgs.hostconfigTarballHash; })]; in diff --git a/upwind-sensor/upwind-version.nix b/upwind-sensor/upwind-version.nix deleted file mode 100644 index ba00d83..0000000 --- a/upwind-sensor/upwind-version.nix +++ /dev/null @@ -1,46 +0,0 @@ -# TODO: Github action to maintain the release metadata. -{ - # The latest stable release - stable = { - sensor = "0.115.3"; - hostconfig = "0.5.2"; - }; - - # The latest dev release - dev = { - sensor = "0.115.3"; - hostconfig = "0.5.2"; - }; - - # Hashes of the release artifacts - hashes = { - sensor = { - "0.111.2" = { - amd64 = "14c8ed136e918ca70e09abe784ee102f0e1b00e41f33a3b1bb7f981d9a32af58"; - arm64 = "4d9f2e12c57ed9374c532790f2e200b0d5d11cfa7627ace7f336ebacbebd3cb4"; - }; - "0.115.3" = { - amd64 = "c9a037b66455fc9ab9ddfc719628154ab7f9495bb4efafb4ab0a8eb159539a53"; - arm64 = "bed4f044859747755af52cd9b93f8a8b3f0ce3d1c477498add604b1a1e8ac2d0"; - }; - "0.116.0-alpha1" = { - amd64 = "2d037872bd09ac4b38ea6823bbf875277e00ea4eed8a9098b854b476637ce20c"; - arm64 = "bd9814046197bb9b462e8cc3aa25515262a72fa6f41320b0a85d6577bb685089"; - }; - "0.116.0-alpha2" = { - amd64 = "77c184f213cd90d93cfd30dbb331b33f767c17251dd434a1ea1d31ebfa3e6881"; - arm64 = "f57aea4525c1f988b5d66b95d0642aece6cf8d3ee1e4e89d714c87a41ab88d6a"; - }; - "0.116.2-alpha1" = { - amd64 = "1596434f5c19897db38334caa7b466bf7da5b2936f9737147ad7646f535cc628"; - arm64 = "085aba5ed1fb5baa27d1249b6d2c8cc609a7a4c3c9f3ad208651616261cc2efd"; - }; - }; - hostconfig = { - "0.5.2" = { - amd64 = "85cc27fc54d4ce2f24c12aca3d3673c2070381e9960502d4266520a5c3f37813"; - arm64 = "cfa90939c126c4b2449befd905bde31751b559d19ff1a2e8276d9f22ba954ac2"; - }; - }; - }; -} \ No newline at end of file From 2f9561ac4f9342318abafede3d95bf5b1721f79c Mon Sep 17 00:00:00 2001 From: David Kern Date: Wed, 20 Aug 2025 08:22:29 -0700 Subject: [PATCH 5/7] handle hostconfig disabled case --- upwind-sensor/release.nix | 6 +++--- upwind-sensor/test/test.nix | 20 +++++++++++++++++++- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/upwind-sensor/release.nix b/upwind-sensor/release.nix index 9b111ca..1f65492 100644 --- a/upwind-sensor/release.nix +++ b/upwind-sensor/release.nix @@ -29,15 +29,15 @@ rec { hostconfigSemver = lib.strings.removePrefix "v" ( if hostconfigVersion == "stable" then lib.importJSON pathHostconfigStable else hostconfigVersion ); - hostconfigTarballName = "upwind-agent-hostconfig-v${hostconfigSemver}-linux-${arch}.tar.gz"; + hostconfigTarballName = if hostconfigVersion != "" then "upwind-agent-hostconfig-v${hostconfigSemver}-linux-${arch}.tar.gz" else null; hostconfigManifest = lib.importJSON ../release/upwind-agent-hostconfig/v${hostconfigSemver}/${hostconfigTarballName}.json; in { inherit sensorTarballName hostconfigTarballName; sensorTarballUrl = "https://${releasesDomain}/upwind-agent/v${sensorSemver}/${sensorTarballName}"; sensorTarballHash = sensorManifest.sha256; - hostconfigTarballUrl = "https://${releasesDomain}/upwind-agent-hostconfig/v${hostconfigSemver}/${hostconfigTarballName}"; - hostconfigTarballHash = hostconfigManifest.sha256; + hostconfigTarballUrl = if hostconfigVersion != "" then "https://${releasesDomain}/upwind-agent-hostconfig/v${hostconfigSemver}/${hostconfigTarballName}" else null; + hostconfigTarballHash = if hostconfigVersion != "" then hostconfigManifest.sha256 else null; authEndpoint = "https://oauth.${regionDomain}/oauth/token"; authAudience = "https://agent.${regionDomain}"; diff --git a/upwind-sensor/test/test.nix b/upwind-sensor/test/test.nix index a23d25f..f064009 100644 --- a/upwind-sensor/test/test.nix +++ b/upwind-sensor/test/test.nix @@ -57,7 +57,7 @@ in expected = "releases.eu.upwind.io"; }; - ### Sensor + ### Install Sensor and Hostconfig testReleasePackages = { expr = (mkRelease { }).packages; @@ -75,6 +75,24 @@ in }; }; + ### Hostconfig disabled + + testReleaseHostconfigDisabled = { + expr = (mkRelease { hostconfigVersion = ""; }).packages; + expected = { + authAudience = "https://agent.upwind.io"; + authEndpoint = "https://oauth.upwind.io/oauth/token"; + + sensorTarballUrl = "https://releases.upwind.io/upwind-agent/v0.119.0/upwind-agent-v0.119.0-linux-amd64.tar.gz"; + sensorTarballHash = "4cfa32684135322a9ff748b6143f4ef4dcd7e9509630d93a7f415aec32fe1776"; + sensorTarballName = "upwind-agent-v0.119.0-linux-amd64.tar.gz"; + + hostconfigTarballUrl = null; + hostconfigTarballHash = null; + hostconfigTarballName = null; + }; + }; + ### Dev # if dev is set, those are passed through to the packages From ee3c5124b9d04d2301000d06adf1aaf9324dd08c Mon Sep 17 00:00:00 2001 From: David Kern Date: Wed, 20 Aug 2025 09:30:16 -0700 Subject: [PATCH 6/7] simplify dev config --- upwind-sensor/default.nix | 77 ++++++++++++++-------------- upwind-sensor/release.nix | 49 +++++++++--------- upwind-sensor/test/configuration.nix | 5 +- upwind-sensor/test/test.nix | 11 ++-- upwind-sensor/upwind-artifact.nix | 4 +- upwind-sensor/upwind-pkg.nix | 20 +++++--- 6 files changed, 87 insertions(+), 79 deletions(-) diff --git a/upwind-sensor/default.nix b/upwind-sensor/default.nix index 32e5751..52d6195 100644 --- a/upwind-sensor/default.nix +++ b/upwind-sensor/default.nix @@ -19,6 +19,8 @@ let extraConfigString = lib.strings.concatLines ( lib.lists.zipListsWith (key: value: "${key}: \"${value}\"") extraConfigKeys extraConfigValues ); + apiEndpoint = if cfg.dev.enable then cfg.dev.apiEndpoint else "https://agent${if cfg.region != "us" then ".${cfg.region}" else ""}.upwind.io"; + authEndpoint = if cfg.dev.enable then cfg.dev.authEndpoint else "https://oauth${if cfg.region != "us" then ".${cfg.region}" else ""}.upwind.io/oauth/token"; in { options.services.upwindSensor = { @@ -56,7 +58,7 @@ in logLevel = mkOption { type = types.str; - default = "info"; + default = "error"; description = "Log level for the sensor."; }; @@ -178,44 +180,43 @@ in }; # Development overrides - dev = let - devOptions = { - sensorTarballUrl = mkOption { - type = types.str; - description = "Override sensor tarball url."; - }; + dev.enable = lib.mkEnableOption "Enable dev settings"; - sensorTarballHash = mkOption { - type = types.str; - description = "Override sensor tarball hash."; - }; + dev.sensorTarballUrl = mkOption { + type = types.str; + description = "Override sensor tarball url."; + default = ""; + }; - hostconfigTarballUrl = mkOption { - type = types.str; - description = "Override hostconfig tarball url."; - }; + dev.sensorTarballHash = mkOption { + type = types.str; + description = "Override sensor tarball hash."; + default = ""; + }; - hostconfigTarballHash = mkOption { - type = types.str; - description = "Override hostconfig tarball hash."; - }; + dev.hostconfigTarballUrl = mkOption { + type = types.str; + description = "Override hostconfig tarball url."; + default = ""; + }; - authEndpoint = mkOption { - type = types.str; - description = "Override authentication endpoint."; - }; + dev.hostconfigTarballHash = mkOption { + type = types.str; + description = "Override hostconfig tarball hash."; + default = ""; + }; - authAudience = mkOption { - type = types.str; - description = "Override authentication audience."; - }; - }; - in - mkOption { - type = with types; submodule devOptions; - description = "Override options to enable dev/test of unreleased versions."; - default = null; - }; + dev.authEndpoint = mkOption { + type = types.str; + description = "Override authentication endpoint."; + default = ""; + }; + + dev.apiEndpoint = mkOption { + type = types.str; + description = "Override api endpoint."; + default = ""; + }; # TODO: ... add options corresponding to UPWIND_ variables # TODO: Configure scanner exclusions @@ -226,8 +227,8 @@ in environment.etc."upwind/agent.yaml".text = '' # Upwind Sensor Configuration generated by NixOS region: "${cfg.region}" - api-host: "https://agent${if cfg.region == "eu" then ".eu" else ""}.${domain}" - auth-endpoint: "https://oauth${if cfg.region == "eu" then ".eu" else ""}.${domain}/oauth/token" + api-host: "${apiEndpoint}" + auth-endpoint: "${authEndpoint}" log-level: "${cfg.logLevel}" install-type: "std" platform: "host" @@ -241,8 +242,8 @@ in environment.etc."upwind/agent-hostconfig.yaml".text = '' # Upwind Hostconfig Configuration generated by NixOS region: "${cfg.region}" - api-host: "https://agent${if cfg.region == "eu" then ".eu" else ""}.${domain}" - auth-endpoint: "https://oauth${if cfg.region == "eu" then ".eu" else ""}.${domain}/oauth/token" + api-host: "${apiEndpoint}" + auth-endpoint: "${authEndpoint}" log-level: "${cfg.logLevel}" ''; diff --git a/upwind-sensor/release.nix b/upwind-sensor/release.nix index 1f65492..62afe17 100644 --- a/upwind-sensor/release.nix +++ b/upwind-sensor/release.nix @@ -18,30 +18,7 @@ rec { else if system == "aarch64-linux" then "arm64" else throw "Unsupported platform: ${system}"; - packages = if dev == null then - let - sensorSemver = lib.strings.removePrefix "v" ( - if sensorVersion == "stable" then lib.importJSON pathSensorStable else sensorVersion - ); - sensorTarballName = "upwind-agent-v${sensorSemver}-linux-${arch}.tar.gz"; - sensorManifest = lib.importJSON ../release/upwind-agent/v${sensorSemver}/${sensorTarballName}.json; - - hostconfigSemver = lib.strings.removePrefix "v" ( - if hostconfigVersion == "stable" then lib.importJSON pathHostconfigStable else hostconfigVersion - ); - hostconfigTarballName = if hostconfigVersion != "" then "upwind-agent-hostconfig-v${hostconfigSemver}-linux-${arch}.tar.gz" else null; - hostconfigManifest = lib.importJSON ../release/upwind-agent-hostconfig/v${hostconfigSemver}/${hostconfigTarballName}.json; - in { - inherit sensorTarballName hostconfigTarballName; - sensorTarballUrl = "https://${releasesDomain}/upwind-agent/v${sensorSemver}/${sensorTarballName}"; - sensorTarballHash = sensorManifest.sha256; - - hostconfigTarballUrl = if hostconfigVersion != "" then "https://${releasesDomain}/upwind-agent-hostconfig/v${hostconfigSemver}/${hostconfigTarballName}" else null; - hostconfigTarballHash = if hostconfigVersion != "" then hostconfigManifest.sha256 else null; - - authEndpoint = "https://oauth.${regionDomain}/oauth/token"; - authAudience = "https://agent.${regionDomain}"; - } else { + packages = if dev.enable then { sensorTarballUrl = dev.sensorTarballUrl; sensorTarballHash = dev.sensorTarballHash; sensorTarballName = lib.lists.last (lib.strings.splitString "/" dev.sensorTarballUrl); @@ -51,6 +28,28 @@ rec { hostconfigTarballName = lib.lists.last (lib.strings.splitString "/" dev.hostconfigTarballUrl); authEndpoint = dev.authEndpoint; - authAudience = dev.authAudience; + apiEndpoint = dev.apiEndpoint; + } else let + sensorSemver = lib.strings.removePrefix "v" ( + if sensorVersion == "stable" then lib.importJSON pathSensorStable else sensorVersion + ); + sensorTarballName = "upwind-agent-v${sensorSemver}-linux-${arch}.tar.gz"; + sensorManifest = lib.importJSON ../release/upwind-agent/v${sensorSemver}/${sensorTarballName}.json; + + hostconfigSemver = lib.strings.removePrefix "v" ( + if hostconfigVersion == "stable" then lib.importJSON pathHostconfigStable else hostconfigVersion + ); + hostconfigTarballName = if hostconfigVersion != "" then "upwind-agent-hostconfig-v${hostconfigSemver}-linux-${arch}.tar.gz" else null; + hostconfigManifest = lib.importJSON ../release/upwind-agent-hostconfig/v${hostconfigSemver}/${hostconfigTarballName}.json; + in { + inherit sensorTarballName hostconfigTarballName; + sensorTarballUrl = "https://${releasesDomain}/upwind-agent/v${sensorSemver}/${sensorTarballName}"; + sensorTarballHash = sensorManifest.sha256; + + hostconfigTarballUrl = if hostconfigVersion != "" then "https://${releasesDomain}/upwind-agent-hostconfig/v${hostconfigSemver}/${hostconfigTarballName}" else null; + hostconfigTarballHash = if hostconfigVersion != "" then hostconfigManifest.sha256 else null; + + authEndpoint = "https://oauth.${regionDomain}/oauth/token"; + apiEndpoint = "https://agent.${regionDomain}"; }; } \ No newline at end of file diff --git a/upwind-sensor/test/configuration.nix b/upwind-sensor/test/configuration.nix index 089dea0..0a8469a 100644 --- a/upwind-sensor/test/configuration.nix +++ b/upwind-sensor/test/configuration.nix @@ -5,10 +5,13 @@ ]; services.upwindSensor = { enable = true; - domain = "upwind.io"; + enableScanner = true; cloudProvider = "byoc"; cloudAccountId = "byoc-1234"; zone = "byoc-east"; + extraConfig = { + scanner-v2 = true; + }; }; # --------------------------------------------------------------------------- diff --git a/upwind-sensor/test/test.nix b/upwind-sensor/test/test.nix index f064009..129c3e1 100644 --- a/upwind-sensor/test/test.nix +++ b/upwind-sensor/test/test.nix @@ -12,16 +12,17 @@ let sensorVersion = defaultSensorVersion; hostconfigVersion = defaultHostconfigVersion; region = defaultRegion; - dev = null; + dev.enable = false; } // attrs ); dev = { + enable = true; sensorTarballUrl = "https://example.com/sensor.tar.gz"; sensorTarballHash = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; hostconfigTarballUrl = "https://example.com/hostconfig.tar.gz"; hostconfigTarballHash = "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"; authEndpoint = "https://auth.example.com"; - authAudience = "https://aud.example.com"; + apiEndpoint = "https://api.example.com"; }; in pkgs.lib.debug.runTests { @@ -62,7 +63,7 @@ in testReleasePackages = { expr = (mkRelease { }).packages; expected = { - authAudience = "https://agent.upwind.io"; + apiEndpoint = "https://agent.upwind.io"; authEndpoint = "https://oauth.upwind.io/oauth/token"; sensorTarballUrl = "https://releases.upwind.io/upwind-agent/v0.119.0/upwind-agent-v0.119.0-linux-amd64.tar.gz"; @@ -80,7 +81,7 @@ in testReleaseHostconfigDisabled = { expr = (mkRelease { hostconfigVersion = ""; }).packages; expected = { - authAudience = "https://agent.upwind.io"; + apiEndpoint = "https://agent.upwind.io"; authEndpoint = "https://oauth.upwind.io/oauth/token"; sensorTarballUrl = "https://releases.upwind.io/upwind-agent/v0.119.0/upwind-agent-v0.119.0-linux-amd64.tar.gz"; @@ -107,7 +108,7 @@ in hostconfigTarballHash = dev.hostconfigTarballHash; hostconfigTarballName = "hostconfig.tar.gz"; authEndpoint = dev.authEndpoint; - authAudience = dev.authAudience; + apiEndpoint = dev.apiEndpoint; }; }; } diff --git a/upwind-sensor/upwind-artifact.nix b/upwind-sensor/upwind-artifact.nix index 5d9fa9b..9ffc204 100644 --- a/upwind-sensor/upwind-artifact.nix +++ b/upwind-sensor/upwind-artifact.nix @@ -3,11 +3,11 @@ , artifactUrl , artifactHash , authEndpoint - , authAudience + , apiEndpoint }: stdenv.mkDerivation { - inherit name artifactUrl authEndpoint authAudience; + inherit name artifactUrl authEndpoint apiEndpoint; src = ./.; diff --git a/upwind-sensor/upwind-pkg.nix b/upwind-sensor/upwind-pkg.nix index 2aa138d..c74e075 100644 --- a/upwind-sensor/upwind-pkg.nix +++ b/upwind-sensor/upwind-pkg.nix @@ -7,22 +7,26 @@ let release = import ./release.nix { - inherit sensorVersion hostconfigVersion region dev; + inherit lib sensorVersion hostconfigVersion region dev; system = stdenv.hostPlatform.system; }; srcs = [(import ./upwind-artifact.nix { inherit stdenv bash curl jq; - name = release.pkgs.sensorTarballName; - artifactUrl = release.pkgs.sensorTarballUrl; - artifactHash = release.pkgs.sensorTarballHash; + name = release.packages.sensorTarballName; + artifactUrl = release.packages.sensorTarballUrl; + artifactHash = release.packages.sensorTarballHash; + authEndpoint = release.packages.authEndpoint; + apiEndpoint = release.packages.apiEndpoint; }).out] - ++ lib.optionals (release.pkgs.hostconfigTarballUrl != null) + ++ lib.optionals (release.packages.hostconfigTarballUrl != null) [(import ./upwind-artifact.nix { inherit stdenv bash curl jq; - name = release.pkgs.hostconfigTarballName; - artifactUrl = release.pkgs.hostconfigTarballUrl; - artifactHash = release.pkgs.hostconfigTarballHash; + name = release.packages.hostconfigTarballName; + artifactUrl = release.package.hostconfigTarballUrl; + artifactHash = release.package.hostconfigTarballHash; + authEndpoint = release.packages.authEndpoint; + apiEndpoint = release.packages.apiEndpoint; })]; in From e01a4369d9becf725ff1a830e32cae2d7e01b208 Mon Sep 17 00:00:00 2001 From: David Kern Date: Wed, 20 Aug 2025 09:48:32 -0700 Subject: [PATCH 7/7] fix: rename variable in download script to match --- upwind-sensor/upwind-artifact.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/upwind-sensor/upwind-artifact.sh b/upwind-sensor/upwind-artifact.sh index 3ff4639..8e63af9 100644 --- a/upwind-sensor/upwind-artifact.sh +++ b/upwind-sensor/upwind-artifact.sh @@ -4,7 +4,7 @@ response="$("${curl}" -fsSL -X POST \ --data grant_type=client_credentials \ - --data "audience=${authAudience}" \ + --data "audience=${apiEndpoint}" \ --data "client_id=${UPWIND_AUTH_CLIENT_ID}" \ --data "client_secret=${UPWIND_AUTH_CLIENT_SECRET}" \ --url "${authEndpoint}" 2>&1)"