diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index 560801ac..5e074c4b 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -1,10 +1,10 @@ # 复制到 tracks .gitea/workflows/deploy.yml +# push master → prod;push test → test name: Build and Deploy on: push: - branches: [master, main] - workflow_dispatch: + branches: [master, test] env: CSPROJ: src/TrackCenter.Api/TrackCenter.Api.csproj @@ -21,14 +21,47 @@ jobs: - name: Build and deploy run: | set -euxo pipefail - export KUBECONFIG=/etc/rancher/k3s/k3s.yaml - TAG="${{ gitea.sha }}" - IMG="${{ env.TCR_REGISTRY }}/${{ env.TCR_NAMESPACE }}/${{ env.IMAGE_NAME }}:${TAG}" + REF="${{ gitea.ref_name }}" + case "$REF" in + test) TARGET=test ;; + master) TARGET=prod ;; + *) echo "unsupported branch: $REF"; exit 1 ;; + esac + + SHA="${{ gitea.sha }}" REPO="${{ gitea.repository }}" test -n "$REPO" && [[ "$REPO" == */* ]] - echo "REPO=$REPO TAG=$TAG host=$(hostname)" + + case "$TARGET" in + test) TAG="test-${SHA}" ;; + *) TAG="${SHA}" ;; + esac + + IMG="${{ env.TCR_REGISTRY }}/${{ env.TCR_NAMESPACE }}/${{ env.IMAGE_NAME }}:${TAG}" + echo "TARGET=$TARGET REF=$REF REPO=$REPO TAG=$TAG host=$(hostname)" + + export KUBECONFIG=/etc/rancher/k3s/k3s.yaml + unset NAMESPACE cd /data/k3s ./scripts/ci-publish-container.sh "$REPO" "${{ env.CSPROJ }}" \ - "${{ env.IMAGE_NAME }}" "$TAG" "$TAG" + "${{ env.IMAGE_NAME }}" "$TAG" "$SHA" + + case "$TARGET" in + test) + export KUBECONFIG=/etc/rancher/k3s/k3s-test.yaml + export NAMESPACE=test + export MANIFEST_ROOT=/data/k3s-test + ;; + *) + export KUBECONFIG=/etc/rancher/k3s/k3s.yaml + export NAMESPACE=prod + export MANIFEST_ROOT=/data/k3s + ;; + esac + if [[ ! -f "$KUBECONFIG" ]]; then + echo "FAIL: missing KUBECONFIG=$KUBECONFIG host=$(hostname) uid=$(id -u)" + ls -la /etc/rancher/k3s/ /root/.kube/ 2>/dev/null || true + exit 1 + fi ./scripts/ci-deploy-api.sh "${{ env.DEPLOY_NAME }}" \ "${{ env.CONTAINER_NAME }}" "$IMG" diff --git a/src/TrackCenter.Application/Kafka/WarningCalcServiceExtension.cs b/src/TrackCenter.Application/Kafka/WarningCalcServiceExtension.cs index b844cdb5..91b0d5b2 100644 --- a/src/TrackCenter.Application/Kafka/WarningCalcServiceExtension.cs +++ b/src/TrackCenter.Application/Kafka/WarningCalcServiceExtension.cs @@ -14,17 +14,17 @@ public static class WarningCalcServiceExtension { public static void AddWarningCalcServices(this IServiceCollection services, IConfiguration conf) { - var env = "-" + conf.GetValue("Environment")!.ToLower(); + // Kafka 已按集群隔离,主题/消费组不再拼 Environment 后缀 // 预警信号批处理后台任务 services.AddHostedService(); // 预警信号 - RegisterConsumer(services, conf, GlobalConst.WarningKafkaGroup + env, new[] { GlobalConst.WarningKafkaTopic + env }); - RegisterProducer(services, conf, GlobalConst.WarningKafkaTopic + env); + RegisterConsumer(services, conf, GlobalConst.WarningKafkaGroup, new[] { GlobalConst.WarningKafkaTopic }); + RegisterProducer(services, conf, GlobalConst.WarningKafkaTopic); // 预警信号DLX - RegisterConsumer(services, conf, GlobalConst.WarningDLXKafkaGroup + env, new[] { GlobalConst.WarningDLXKafkaTopic + env }); - RegisterProducer(services, conf, GlobalConst.WarningDLXKafkaTopic + env); + RegisterConsumer(services, conf, GlobalConst.WarningDLXKafkaGroup, new[] { GlobalConst.WarningDLXKafkaTopic }); + RegisterProducer(services, conf, GlobalConst.WarningDLXKafkaTopic); } private static void RegisterConsumer(IServiceCollection services, IConfiguration conf, string groupId, string[] subTopic) diff --git a/src/TrackCenter.Application/Kafka/WarningSignalPublisher.cs b/src/TrackCenter.Application/Kafka/WarningSignalPublisher.cs index a8ccac41..d61c6b14 100644 --- a/src/TrackCenter.Application/Kafka/WarningSignalPublisher.cs +++ b/src/TrackCenter.Application/Kafka/WarningSignalPublisher.cs @@ -1,5 +1,4 @@ using Confluent.Kafka; -using Microsoft.Extensions.Configuration; using TrackCenter.Application.Services.Warning.Signals; using TrackCenter.Domain.Aggregates.TrackDetailsAggregate; @@ -12,13 +11,11 @@ public sealed class WarningSignalPublisher : IDisposable, ISingletonDependency { private readonly IProducer _producer; private readonly IProducer _dlxProducer; - private readonly string env; - public WarningSignalPublisher(IProducer producer, IProducer dlxProducer, IConfiguration conf) + public WarningSignalPublisher(IProducer producer, IProducer dlxProducer) { _producer = producer; _dlxProducer = dlxProducer; - env = "-" + conf.GetValue("Environment")!.ToLower(); } public void PublishSignal(WarningSignalType type, List tracks) @@ -29,7 +26,7 @@ public sealed class WarningSignalPublisher : IDisposable, ISingletonDependency public void PublishSignal(WarningSignalType type, TrackDetailsIndex track) { - _producer.Produce(GlobalConst.WarningKafkaTopic + env, new Message + _producer.Produce(GlobalConst.WarningKafkaTopic, new Message { Key = new WarningSignalKey(type, track.OrderId), Value = WarningSignal.FromTrack(track, type) @@ -38,13 +35,12 @@ public sealed class WarningSignalPublisher : IDisposable, ISingletonDependency public Task PublishSignalAsync(Message msg, CancellationToken ct = default) { - return _producer.ProduceAsync(GlobalConst.WarningKafkaTopic + env, msg, ct); + return _producer.ProduceAsync(GlobalConst.WarningKafkaTopic, msg, ct); } - public Task PublishDlxSignalAsync(Message message, CancellationToken ct = default) { - return _dlxProducer.ProduceAsync(GlobalConst.WarningDLXKafkaTopic + env, message, ct); + return _dlxProducer.ProduceAsync(GlobalConst.WarningDLXKafkaTopic, message, ct); } public void Dispose()