feat: print build info at startup; version placeholders filled in by CI [CI SKIP]
This commit is contained in:
1 parent
a9f78f99df
commit
7ff0d0f4e6
14 files changed
+42
-14
No files matched your search
@@ -13,7 +13,7 @@
|
|||||||
<UseArtifactsOutput>true</UseArtifactsOutput>
|
<UseArtifactsOutput>true</UseArtifactsOutput>
|
||||||
<ArtifactsPath>$(MSBuildThisFileDirectory)artifacts</ArtifactsPath>
|
<ArtifactsPath>$(MSBuildThisFileDirectory)artifacts</ArtifactsPath>
|
||||||
<Deterministic>true</Deterministic>
|
<Deterministic>true</Deterministic>
|
||||||
<Version>0.4.0</Version>
|
<Version>0.0.0-dev</Version>
|
||||||
<NuGetAudit>false</NuGetAudit>
|
<NuGetAudit>false</NuGetAudit>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
@@ -143,6 +143,7 @@ public sealed class AgentApp : IDisposable
|
|||||||
|
|
||||||
public async Task RunAsync(CancellationToken ct)
|
public async Task RunAsync(CancellationToken ct)
|
||||||
{
|
{
|
||||||
|
_log.Info("moshiro agent starting", MoShiro.Protocol.BuildInfo.Fields);
|
||||||
using CancellationTokenSource linked = CancellationTokenSource.CreateLinkedTokenSource(ct);
|
using CancellationTokenSource linked = CancellationTokenSource.CreateLinkedTokenSource(ct);
|
||||||
// 数据面和控制端口先开始监听,再连接 Backend:hello 里上报的是实际端口
|
// 数据面和控制端口先开始监听,再连接 Backend:hello 里上报的是实际端口
|
||||||
_udp.Bind();
|
_udp.Bind();
|
||||||
|
|||||||
@@ -103,6 +103,7 @@ public sealed class ProbeApp : IDisposable
|
|||||||
|
|
||||||
public async Task RunAsync(CancellationToken ct)
|
public async Task RunAsync(CancellationToken ct)
|
||||||
{
|
{
|
||||||
|
_log.Info("moshiro probe starting", MoShiro.Protocol.BuildInfo.Fields);
|
||||||
if (_env.Directory.Agents.Count == 0)
|
if (_env.Directory.Agents.Count == 0)
|
||||||
{
|
{
|
||||||
_log.Info("no agents known yet, waiting for the panel to send the list");
|
_log.Info("no agents known yet, waiting for the panel to send the list");
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
namespace MoShiro.Protocol;
|
||||||
|
|
||||||
|
/// <summary>构建信息的人能读的形式(启动时打进日志);常量部分由 MoShiro.Protocol.csproj 的 WriteBuildInfo 在构建时生成。</summary>
|
||||||
|
public static partial class BuildInfo
|
||||||
|
{
|
||||||
|
/// <summary>版本、tag、提交、构建时间的字段,没有的(本地构建不设环境变量)写 unknown。</summary>
|
||||||
|
public static (string Key, object? Value)[] Fields { get; } =
|
||||||
|
[
|
||||||
|
("version", Or(Version)),
|
||||||
|
("tag", Or(Tag)),
|
||||||
|
("commit", Or(Commit)),
|
||||||
|
("built_at", Or(BuiltAt)),
|
||||||
|
];
|
||||||
|
|
||||||
|
/// <summary>一行摘要,例如:0.4.1-dev.2-a3338e1 (tag v0.4.1-dev.2-a3338e1, commit a3338e1b2c, built 2026-10-09T03:00:00Z)。</summary>
|
||||||
|
public static string Summary => $"{Or(Version)} (tag {Or(Tag)}, commit {Or(Commit)}, built {Or(BuiltAt)})";
|
||||||
|
|
||||||
|
private static string Or(string value) => string.IsNullOrWhiteSpace(value) ? "unknown" : value;
|
||||||
|
}
|
||||||
@@ -18,7 +18,7 @@
|
|||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<BuildInfoLine Include="namespace MoShiro.Protocol%3B" />
|
<BuildInfoLine Include="namespace MoShiro.Protocol%3B" />
|
||||||
<BuildInfoLine Include="/// <summary>这个程序是什么时候、从哪个版本构建出来的(构建时生成)。</summary>" />
|
<BuildInfoLine Include="/// <summary>这个程序是什么时候、从哪个版本构建出来的(构建时生成)。</summary>" />
|
||||||
<BuildInfoLine Include="public static class BuildInfo" />
|
<BuildInfoLine Include="public static partial class BuildInfo" />
|
||||||
<BuildInfoLine Include="{" />
|
<BuildInfoLine Include="{" />
|
||||||
<BuildInfoLine Include=" public const string Version = "$(Version)"%3B" />
|
<BuildInfoLine Include=" public const string Version = "$(Version)"%3B" />
|
||||||
<BuildInfoLine Include=" public const string Tag = "$(MOSHIRO_TAG)"%3B" />
|
<BuildInfoLine Include=" public const string Tag = "$(MOSHIRO_TAG)"%3B" />
|
||||||
|
|||||||
@@ -1,3 +1,10 @@
|
|||||||
using MoShiro.Backend;
|
using MoShiro.Backend;
|
||||||
|
|
||||||
await BackendHost.Build(args).RunAsync();
|
WebApplication app = BackendHost.Build(args);
|
||||||
|
// 启动时打一行构建信息:版本、tag、提交、构建时间(和 Agent、Probe 启动时打的是同一组)
|
||||||
|
if (app.Logger.IsEnabled(LogLevel.Information))
|
||||||
|
{
|
||||||
|
app.Logger.LogInformation("moshiro backend starting: version {BuildInfo}", MoShiro.Protocol.BuildInfo.Summary);
|
||||||
|
}
|
||||||
|
|
||||||
|
await app.RunAsync();
|
||||||
@@ -5,7 +5,7 @@
|
|||||||
# 把面板给的 .env 内容存成 .env,再下载本文件为 compose.yaml
|
# 把面板给的 .env 内容存成 .env,再下载本文件为 compose.yaml
|
||||||
# podman compose up -d # Docker 用 docker compose
|
# podman compose up -d # Docker 用 docker compose
|
||||||
# 更新:podman compose pull && podman compose up -d (身份和配置在命名卷里,不会动)
|
# 更新:podman compose pull && podman compose up -d (身份和配置在命名卷里,不会动)
|
||||||
# 固定版本:在 .env 里写 MOSHIRO_VERSION=0.3.3;想要更严,写成 MOSHIRO_VERSION=0.3.3@sha256:<digest>。
|
# 固定版本:在 .env 里写 MOSHIRO_VERSION=<版本号>;想要更严,写成 MOSHIRO_VERSION=<版本号>@sha256:<digest>。
|
||||||
# .env 里的 MOSHIRO_SERVER、MOSHIRO_JOIN(只在第一次启动用来注册,之后可以删掉)、MOSHIRO_GENESIS、MOSHIRO_CONTROLLERS、MOSHIRO_NAME 原样传进容器。
|
# .env 里的 MOSHIRO_SERVER、MOSHIRO_JOIN(只在第一次启动用来注册,之后可以删掉)、MOSHIRO_GENESIS、MOSHIRO_CONTROLLERS、MOSHIRO_NAME 原样传进容器。
|
||||||
# 说明见 docs/ops/deployment.md。
|
# 说明见 docs/ops/deployment.md。
|
||||||
services:
|
services:
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
# 把面板给的 .env 内容存成 .env,再下载本文件为 compose.yaml
|
# 把面板给的 .env 内容存成 .env,再下载本文件为 compose.yaml
|
||||||
# podman compose up -d # Docker 用 docker compose
|
# podman compose up -d # Docker 用 docker compose
|
||||||
# 更新:podman compose pull && podman compose up -d (身份和配置在命名卷里,不会动)
|
# 更新:podman compose pull && podman compose up -d (身份和配置在命名卷里,不会动)
|
||||||
# 固定版本:在 .env 里写 MOSHIRO_VERSION=0.3.3;想要更严,写成 MOSHIRO_VERSION=0.3.3@sha256:<digest>。
|
# 固定版本:在 .env 里写 MOSHIRO_VERSION=<版本号>;想要更严,写成 MOSHIRO_VERSION=<版本号>@sha256:<digest>。
|
||||||
# macOS、Windows 的 Docker Desktop 没有宿主网络:面板给的 .env 里已经写了 MOSHIRO_NETWORK_MODE=bridge。
|
# macOS、Windows 的 Docker Desktop 没有宿主网络:面板给的 .env 里已经写了 MOSHIRO_NETWORK_MODE=bridge。
|
||||||
# .env 里的 MOSHIRO_SERVER、MOSHIRO_JOIN(只在第一次启动用来注册,之后可以删掉)、MOSHIRO_GENESIS、MOSHIRO_CONTROLLERS、MOSHIRO_NAME 原样传进容器。
|
# .env 里的 MOSHIRO_SERVER、MOSHIRO_JOIN(只在第一次启动用来注册,之后可以删掉)、MOSHIRO_GENESIS、MOSHIRO_CONTROLLERS、MOSHIRO_NAME 原样传进容器。
|
||||||
# 说明见 docs/ops/deployment.md。
|
# 说明见 docs/ops/deployment.md。
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
# loginctl enable-linger $USER # 退出登录后继续运行(需要管理员执行一次)
|
# loginctl enable-linger $USER # 退出登录后继续运行(需要管理员执行一次)
|
||||||
# rootful:本文件放进 /etc/containers/systemd/,.env 内容存成 /etc/moshiro/agent.env,把下面的 EnvironmentFile 改成这个路径、
|
# rootful:本文件放进 /etc/containers/systemd/,.env 内容存成 /etc/moshiro/agent.env,把下面的 EnvironmentFile 改成这个路径、
|
||||||
# WantedBy 改成 multi-user.target,用 systemctl(不加 --user)。
|
# WantedBy 改成 multi-user.target,用 systemctl(不加 --user)。
|
||||||
# 开发通道:把 Image 的 moshiro 换成 moshiro-dev。固定版本:把 :latest 换成 :0.3.3(固定之后更新不会换版本)。
|
# 开发通道:把 Image 的 moshiro 换成 moshiro-dev。固定版本:把 :latest 换成 :<版本号>(固定之后更新不会换版本)。
|
||||||
# 想要完全自动、不用在管理端点:另外启用 podman-auto-update.timer,并在 [Container] 里加 AutoUpdate=registry(Pull=always 也保留)。
|
# 想要完全自动、不用在管理端点:另外启用 podman-auto-update.timer,并在 [Container] 里加 AutoUpdate=registry(Pull=always 也保留)。
|
||||||
# 说明见 docs/ops/deployment.md。
|
# 说明见 docs/ops/deployment.md。
|
||||||
[Unit]
|
[Unit]
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
# loginctl enable-linger $USER # 退出登录后继续运行(需要管理员执行一次)
|
# loginctl enable-linger $USER # 退出登录后继续运行(需要管理员执行一次)
|
||||||
# rootful:本文件放进 /etc/containers/systemd/,.env 内容存成 /etc/moshiro/probe.env,把下面的 EnvironmentFile 改成这个路径、
|
# rootful:本文件放进 /etc/containers/systemd/,.env 内容存成 /etc/moshiro/probe.env,把下面的 EnvironmentFile 改成这个路径、
|
||||||
# WantedBy 改成 multi-user.target,用 systemctl(不加 --user)。
|
# WantedBy 改成 multi-user.target,用 systemctl(不加 --user)。
|
||||||
# 开发通道:把 Image 的 moshiro 换成 moshiro-dev。固定版本:把 :latest 换成 :0.3.3(固定之后更新不会换版本)。
|
# 开发通道:把 Image 的 moshiro 换成 moshiro-dev。固定版本:把 :latest 换成 :<版本号>(固定之后更新不会换版本)。
|
||||||
# 想要完全自动、不用在管理端点:另外启用 podman-auto-update.timer,并在 [Container] 里加 AutoUpdate=registry(Pull=always 也保留)。
|
# 想要完全自动、不用在管理端点:另外启用 podman-auto-update.timer,并在 [Container] 里加 AutoUpdate=registry(Pull=always 也保留)。
|
||||||
# 说明见 docs/ops/deployment.md。
|
# 说明见 docs/ops/deployment.md。
|
||||||
[Unit]
|
[Unit]
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "moshiro-admin",
|
"name": "moshiro-admin",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "0.1.0",
|
"version": "0.0.0-dev",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "moshiro-display",
|
"name": "moshiro-display",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "0.1.0",
|
"version": "0.0.0-dev",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
|
|||||||
Generated
+4
-4
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "moshiro-web",
|
"name": "moshiro-web",
|
||||||
"version": "0.4.0",
|
"version": "0.0.0-dev",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "moshiro-web",
|
"name": "moshiro-web",
|
||||||
"version": "0.4.0",
|
"version": "0.0.0-dev",
|
||||||
"workspaces": [
|
"workspaces": [
|
||||||
"display",
|
"display",
|
||||||
"admin"
|
"admin"
|
||||||
@@ -18,7 +18,7 @@
|
|||||||
},
|
},
|
||||||
"admin": {
|
"admin": {
|
||||||
"name": "moshiro-admin",
|
"name": "moshiro-admin",
|
||||||
"version": "0.1.0",
|
"version": "0.0.0-dev",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"lucide-react": "^0.468.0",
|
"lucide-react": "^0.468.0",
|
||||||
"react": "^19.2.8",
|
"react": "^19.2.8",
|
||||||
@@ -38,7 +38,7 @@
|
|||||||
},
|
},
|
||||||
"display": {
|
"display": {
|
||||||
"name": "moshiro-display",
|
"name": "moshiro-display",
|
||||||
"version": "0.1.0",
|
"version": "0.0.0-dev",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"lucide-react": "^0.468.0",
|
"lucide-react": "^0.468.0",
|
||||||
"react": "^19.2.8",
|
"react": "^19.2.8",
|
||||||
|
|||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "moshiro-web",
|
"name": "moshiro-web",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "0.4.0",
|
"version": "0.0.0-dev",
|
||||||
"workspaces": [
|
"workspaces": [
|
||||||
"display",
|
"display",
|
||||||
"admin"
|
"admin"
|
||||||
|
|||||||
Reference in new issue
Block a user