From e3686e81c0735e67a5290f057ef61de8001dee1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomas=20Hellstr=C3=B6m?= Date: Tue, 24 Mar 2020 23:03:46 +0100 Subject: [PATCH] Display version at startup (#43) * Removed Azure build system * Version display on startup in docker containers * use const as version * Did code replacement instead of env --- .github/workflows/push_addon_dev.yml | 3 + .github/workflows/push_docker.yml | 3 + .github/workflows/push_docker_dev.yml | 3 + .github/workflows/tags_docker.yml | 3 + .github/workflows/tags_nuget.yml | 3 + Dockerfile | 14 ++-- azure/azure-pipelines.yml | 64 ------------------- azure/netdaemon-ci-pipeline.yml | 63 ------------------ azure/netdaemon-release.yml | 63 ------------------ .../DaemonRunner/Service/RunnerService.cs | 7 +- 10 files changed, 28 insertions(+), 198 deletions(-) delete mode 100644 azure/azure-pipelines.yml delete mode 100644 azure/netdaemon-ci-pipeline.yml delete mode 100644 azure/netdaemon-release.yml diff --git a/.github/workflows/push_addon_dev.yml b/.github/workflows/push_addon_dev.yml index 88b3869b1..545e43ddd 100644 --- a/.github/workflows/push_addon_dev.yml +++ b/.github/workflows/push_addon_dev.yml @@ -12,5 +12,8 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@master + - name: "Set version number" + run: | + sed -i '/ const string _version = /c\ const string _version = "dev build";' ${{github.workspace}}/src/DaemonRunner/DaemonRunner/Service/RunnerService.cs - name: Run deploy script using builder run: docker run --rm --privileged -v /var/run/docker.sock:/var/run/docker.sock -v ${{github.workspace}}/addon:/data homeassistant/amd64-builder -t /data --all --docker-user ${{ secrets.DOCKER_USERNAME }} --docker-password ${{ secrets.DOCKER_TOKEN }} diff --git a/.github/workflows/push_docker.yml b/.github/workflows/push_docker.yml index 57c1d137c..46caec5a8 100644 --- a/.github/workflows/push_docker.yml +++ b/.github/workflows/push_docker.yml @@ -11,6 +11,9 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@master + - name: "Set version number" + run: | + sed -i '/ const string _version = /c\ const string _version = "master build";' ${{github.workspace}}/src/DaemonRunner/DaemonRunner/Service/RunnerService.cs - name: Login to docker hub run: docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_TOKEN }} - name: Set up Docker Buildx diff --git a/.github/workflows/push_docker_dev.yml b/.github/workflows/push_docker_dev.yml index e56493d23..c08e8e13b 100644 --- a/.github/workflows/push_docker_dev.yml +++ b/.github/workflows/push_docker_dev.yml @@ -11,6 +11,9 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@master + - name: "Set version number" + run: | + sed -i '/ const string _version = /c\ const string _version = "dev build";' ${{github.workspace}}/src/DaemonRunner/DaemonRunner/Service/RunnerService.cs - name: Login to docker hub run: docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_TOKEN }} - name: Set up Docker Buildx diff --git a/.github/workflows/tags_docker.yml b/.github/workflows/tags_docker.yml index 31d7e1880..6252b4497 100644 --- a/.github/workflows/tags_docker.yml +++ b/.github/workflows/tags_docker.yml @@ -15,6 +15,9 @@ jobs: run: docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_TOKEN }} - uses: olegtarasov/get-tag@v2 name: Set tag envronment variable + - name: "Set version number" + run: | + sed -i '/ const string _version = /c\ const string _version = "${GIT_TAG_NAME}";' ${{github.workspace}}/src/DaemonRunner/DaemonRunner/Service/RunnerService.cs - name: Set up Docker Buildx id: buildx uses: crazy-max/ghaction-docker-buildx@v1 diff --git a/.github/workflows/tags_nuget.yml b/.github/workflows/tags_nuget.yml index 8881a085f..b4004ae3b 100644 --- a/.github/workflows/tags_nuget.yml +++ b/.github/workflows/tags_nuget.yml @@ -14,6 +14,9 @@ jobs: - uses: actions/setup-dotnet@v1 - uses: olegtarasov/get-tag@v2 name: Set tag envronment variable + - name: "Set version number" + run: | + sed -i '/ const string _version = /c\ const string _version = "${GIT_TAG_NAME}";' ${{github.workspace}}/src/DaemonRunner/DaemonRunner/Service/RunnerService.cs - name: pack DaemonRunner run: dotnet pack src/DaemonRunner/DaemonRunner/DaemonRunner.csproj --configuration Release -p:PackageVersion=${GIT_TAG_NAME}-alpha - name: pack App diff --git a/Dockerfile b/Dockerfile index ac03aff18..031bda8fe 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,3 +1,4 @@ +# Build the NetDaemon with build container FROM mcr.microsoft.com/dotnet/core/sdk:3.1.200-alpine as build COPY . ./temp/ @@ -6,16 +7,17 @@ RUN \ mkdir -p /data \ \ && dotnet \ - publish \ - ./temp/src/Service/Service.csproj \ - -c Release \ - -o ./temp/dist \ - \ + publish \ + ./temp/src/Service/Service.csproj \ + -c Release \ + -o ./temp/dist \ + \ && mv ./temp/dist /app \ && rm -R ./temp - +# Build the target container FROM ludeeus/container:dotnet-base + COPY --from=build /app /app ENV \ diff --git a/azure/azure-pipelines.yml b/azure/azure-pipelines.yml deleted file mode 100644 index 4f7ca6dba..000000000 --- a/azure/azure-pipelines.yml +++ /dev/null @@ -1,64 +0,0 @@ -# ASP.NET Core -# Build and test ASP.NET Core projects targeting .NET Core. -# Add steps that run tests, create a NuGet package, deploy, and more: -# https://docs.microsoft.com/azure/devops/pipelines/languages/dotnet-core - -trigger: -- master -- dev - -pool: - vmImage: 'ubuntu-latest' - -variables: - buildConfiguration: 'Release' - -steps: - - task: UseDotNet@2 - displayName: 'Use .net core 3.1' - inputs: - version: '3.1.x' - - - script: dotnet build ./src --configuration $(buildConfiguration) - displayName: 'dotnet build $(buildConfiguration)' - - - task: DotNetCoreCLI@2 - displayName: 'Run tests' - inputs: - command: test - projects: '**/*.Tests/*.csproj' - arguments: -c $(BuildConfiguration) -v minimal --collect:"XPlat Code Coverage" -- RunConfiguration.DisableAppDomain=true - # - script: dotnet test --logger:"trx;verbosity=minimal" --collect:"XPlat Code Coverage" -- RunConfiguration.DisableAppDomain=true - # - task: PublishTestResults@2 - # condition: succeededOrFailed() - # inputs: - # testRunner: VSTest - # testResultsFiles: '**/*.trx' - - - task: DotNetCoreCLI@2 - displayName: Install ReportGenerator Global Tool - inputs: - command: custom - custom: tool - arguments: install dotnet-reportgenerator-globaltool -g - - - script: reportgenerator -reports:$(Agent.TempDirectory)/**/coverage.cobertura.xml -targetdir:$(Build.SourcesDirectory)/coverlet/reports -reporttypes:"Cobertura;Badges" - displayName: Create reports - - - task: CopyFiles@2 - displayName: 'Copy Badges' - inputs: - sourceFolder: '$(Build.SourcesDirectory)/coverlet/reports' - contents: '*.svg' - targetFolder: '$(Build.ArtifactStagingDirectory)' - - - task: PublishBuildArtifacts@1 - displayName: 'Publish Badges artifact' - inputs: - PathtoPublish: '$(build.artifactstagingdirectory)' - - - task: PublishCodeCoverageResults@1 - displayName: 'Publish code coverage' - inputs: - codeCoverageTool: Cobertura - summaryFileLocation: $(Build.SourcesDirectory)/coverlet/reports/Cobertura.xml diff --git a/azure/netdaemon-ci-pipeline.yml b/azure/netdaemon-ci-pipeline.yml deleted file mode 100644 index 06fd9302a..000000000 --- a/azure/netdaemon-ci-pipeline.yml +++ /dev/null @@ -1,63 +0,0 @@ -# ASP.NET Core -# Build and test ASP.NET Core projects targeting .NET Core. -# Add steps that run tests, create a NuGet package, deploy, and more: -# https://docs.microsoft.com/azure/devops/pipelines/languages/dotnet-core - -#trigger: -#- master -#- dev - -#pr: -# branches: -# include: -# - '*' # must quote since "*" is a YAML reserved character; we want a string - -pool: - vmImage: 'ubuntu-latest' - -variables: - buildConfiguration: 'Release' - -steps: - - task: UseDotNet@2 - displayName: 'Use .net core 3.1' - inputs: - version: '3.1.x' - - - script: dotnet build --configuration $(buildConfiguration) - displayName: 'dotnet build $(buildConfiguration)' - - - task: DotNetCoreCLI@2 - displayName: 'Run tests' - inputs: - command: test - projects: '**/*.Tests/*.csproj' - arguments: -c $(BuildConfiguration) -v minimal --collect:"XPlat Code Coverage" -- RunConfiguration.DisableAppDomain=true - - - task: DotNetCoreCLI@2 - displayName: Install ReportGenerator Global Tool - inputs: - command: custom - custom: tool - arguments: install dotnet-reportgenerator-globaltool -g - - - script: reportgenerator -reports:$(Agent.TempDirectory)/**/coverage.cobertura.xml -targetdir:$(Build.SourcesDirectory)/coverlet/reports -reporttypes:"Cobertura;Badges" - displayName: Create reports - - - task: CopyFiles@2 - displayName: 'Copy Badges' - inputs: - sourceFolder: '$(Build.SourcesDirectory)/coverlet/reports' - contents: '*.svg' - targetFolder: '$(Build.ArtifactStagingDirectory)' - - - task: PublishBuildArtifacts@1 - displayName: 'Publish Badges artifact' - inputs: - PathtoPublish: '$(build.artifactstagingdirectory)' - - - task: PublishCodeCoverageResults@1 - displayName: 'Publish code coverage' - inputs: - codeCoverageTool: Cobertura - summaryFileLocation: $(Build.SourcesDirectory)/coverlet/reports/Cobertura.xml diff --git a/azure/netdaemon-release.yml b/azure/netdaemon-release.yml deleted file mode 100644 index 513d85bc1..000000000 --- a/azure/netdaemon-release.yml +++ /dev/null @@ -1,63 +0,0 @@ -# Starter pipeline -# Start with a minimal pipeline that you can customize to build and deploy your code. -# Add steps that build, run tests, deploy, and more: -# https://aka.ms/yaml - -# Do not trigger this script on any change or pr -trigger: none -pr: none - -pool: - vmImage: 'ubuntu-latest' - -variables: - - group: package-information - - name: buildConfiguration - value: 'Release' - -steps: - - task: UseDotNet@2 - displayName: 'Use .net core 3.1' - inputs: - version: '3.1.x' - - - script: dotnet build --configuration $(buildConfiguration) - displayName: 'dotnet build $(buildConfiguration)' - - - task: DotNetCoreCLI@2 - displayName: 'Make NUGET Runner' - inputs: - command: pack - versioningScheme: byEnvVar - packagesToPack: '**/DaemonRunner.csproj' - outputDir: '$(Build.ArtifactStagingDirectory)/NUGET' - versionEnvVar: package-version - - - task: DotNetCoreCLI@2 - displayName: 'Make NUGET App' - inputs: - command: pack - versioningScheme: byEnvVar - packagesToPack: '**/NetDaemon.App.csproj' - outputDir: '$(Build.ArtifactStagingDirectory)/NUGET' - versionEnvVar: package-version - - - task: DotNetCoreCLI@2 - displayName: 'Make NUGET Daemon' - inputs: - command: pack - versioningScheme: byEnvVar - packagesToPack: '**/NetDaemon.Daemon.csproj' - outputDir: '$(Build.ArtifactStagingDirectory)/NUGET' - versionEnvVar: package-version - # - task: CopyFiles@2 - # displayName: 'Copy RELEASENOTES' - # inputs: - # sourceFolder: '$(Build.SourcesDirectory)' - # contents: '**/RELEASENOTES.md' - # targetFolder: '$(Build.ArtifactStagingDirectory)' - - - task: PublishBuildArtifacts@1 - displayName: 'Publish Artifacts' - inputs: - PathtoPublish: '$(build.artifactstagingdirectory)' \ No newline at end of file diff --git a/src/DaemonRunner/DaemonRunner/Service/RunnerService.cs b/src/DaemonRunner/DaemonRunner/Service/RunnerService.cs index f2d4b680e..7467db728 100644 --- a/src/DaemonRunner/DaemonRunner/Service/RunnerService.cs +++ b/src/DaemonRunner/DaemonRunner/Service/RunnerService.cs @@ -16,8 +16,11 @@ namespace JoySoftware.HomeAssistant.NetDaemon.DaemonRunner.Service { + public class RunnerService : BackgroundService { + const string _version = "dev"; + private NetDaemonHost? _daemonHost; private readonly ILogger _logger; private readonly ILoggerFactory _loggerFactory; @@ -43,7 +46,7 @@ protected override async Task ExecuteAsync(CancellationToken stoppingToken) { try { - _logger.LogInformation("Starting netdaemon..."); + _logger.LogInformation($"Starting netdaemon (version {_version})..."); var config = await ReadConfigAsync(); @@ -168,7 +171,7 @@ protected override async Task ExecuteAsync(CancellationToken stoppingToken) if (!File.Exists(exampleFilePath)) { var json = JsonSerializer.Serialize(new HostConfig()); - + using (var fileStream = new FileStream(exampleFilePath, FileMode.CreateNew)) { var options = new JsonSerializerOptions { WriteIndented = true, IgnoreNullValues = true };