[repo] CI tweaks and improvements (#5651)

This commit is contained in:
Mikel Blanchard 2024-05-27 23:37:19 -07:00 committed by GitHub
parent 625f32f33e
commit 81244d6136
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
10 changed files with 63 additions and 44 deletions

8
.github/codecov.yml vendored
View File

@ -33,22 +33,22 @@ ignore:
- "test" - "test"
flags: flags:
unittests-Solution-Stable: unittests-Solution:
carryforward: true carryforward: true
paths: paths:
- src - src
unittests-Solution-Experimental: unittests-Project-Stable:
carryforward: true carryforward: true
paths: paths:
- src - src
unittests-Instrumentation-Stable: unittests-Project-Experimental:
carryforward: true carryforward: true
paths: paths:
- src - src
unittests-Instrumentation-Experimental: unittests-UnstableCoreLibraries-Experimental:
carryforward: true carryforward: true
paths: paths:
- src - src

View File

@ -65,7 +65,7 @@ jobs:
run: dotnet tool install -g dotnet-coverage run: dotnet tool install -g dotnet-coverage
- name: Merging test results - name: Merging test results
run: dotnet-coverage merge -r -f cobertura -o ./TestResults/Cobertura.xml ./TestResults/*.coverage run: dotnet-coverage merge -f cobertura -o ./TestResults/Cobertura.xml ./TestResults/**/*.coverage
- name: Upload code coverage ${{ inputs.code-cov-prefix }}-${{ inputs.code-cov-name }} - name: Upload code coverage ${{ inputs.code-cov-prefix }}-${{ inputs.code-cov-name }}
uses: codecov/codecov-action@v4 uses: codecov/codecov-action@v4

View File

@ -27,6 +27,7 @@ jobs:
build: ['build/**', '.github/**/*.yml', '**/*.targets', '**/*.props'] build: ['build/**', '.github/**/*.yml', '**/*.targets', '**/*.props']
shared: ['src/Shared/**'] shared: ['src/Shared/**']
code: ['**.cs', '**.csproj', '.editorconfig'] code: ['**.cs', '**.csproj', '.editorconfig']
solution: ['OpenTelemetry.sln']
packaged-code: ['src/**', '!**/*.md'] packaged-code: ['src/**', '!**/*.md']
api-code: ['*/OpenTelemetry.Api*/**', '!**/*.md'] api-code: ['*/OpenTelemetry.Api*/**', '!**/*.md']
api-packages: ['src/OpenTelemetry.Api*/**', '!**/*.md'] api-packages: ['src/OpenTelemetry.Api*/**', '!**/*.md']
@ -50,19 +51,18 @@ jobs:
|| contains(needs.detect-changes.outputs.changes, 'build') || contains(needs.detect-changes.outputs.changes, 'build')
uses: ./.github/workflows/dotnet-format.yml uses: ./.github/workflows/dotnet-format.yml
build-test-solution-stable: build-test-solution:
needs: detect-changes needs: detect-changes
if: | if: |
contains(needs.detect-changes.outputs.changes, 'code') contains(needs.detect-changes.outputs.changes, 'solution')
|| contains(needs.detect-changes.outputs.changes, 'build') || contains(needs.detect-changes.outputs.changes, 'build')
|| contains(needs.detect-changes.outputs.changes, 'shared') || contains(needs.detect-changes.outputs.changes, 'shared')
uses: ./.github/workflows/Component.BuildTest.yml uses: ./.github/workflows/Component.BuildTest.yml
with: with:
project-name: 'OpenTelemetry.sln' project-name: 'OpenTelemetry.sln'
project-build-commands: '-p:ExposeExperimentalFeatures=false' code-cov-name: 'Solution'
code-cov-name: 'Solution-Stable'
build-test-solution-experimental: build-test-project-stable:
needs: detect-changes needs: detect-changes
if: | if: |
contains(needs.detect-changes.outputs.changes, 'code') contains(needs.detect-changes.outputs.changes, 'code')
@ -70,9 +70,21 @@ jobs:
|| contains(needs.detect-changes.outputs.changes, 'shared') || contains(needs.detect-changes.outputs.changes, 'shared')
uses: ./.github/workflows/Component.BuildTest.yml uses: ./.github/workflows/Component.BuildTest.yml
with: with:
project-name: 'OpenTelemetry.sln' project-name: './build/OpenTelemetry.proj'
project-build-commands: '-p:ExposeExperimentalFeatures=false'
code-cov-name: 'Project-Stable'
build-test-project-experimental:
needs: detect-changes
if: |
contains(needs.detect-changes.outputs.changes, 'code')
|| contains(needs.detect-changes.outputs.changes, 'build')
|| contains(needs.detect-changes.outputs.changes, 'shared')
uses: ./.github/workflows/Component.BuildTest.yml
with:
project-name: './build/OpenTelemetry.proj'
project-build-commands: '-p:ExposeExperimentalFeatures=true' project-build-commands: '-p:ExposeExperimentalFeatures=true'
code-cov-name: 'Solution-Experimental' code-cov-name: 'Project-Experimental'
# Build unstable core libraries using stable packages released to NuGet # Build unstable core libraries using stable packages released to NuGet
build-test-unstable-core: build-test-unstable-core:
@ -85,7 +97,7 @@ jobs:
with: with:
project-name: './build/UnstableCoreLibraries.proj' project-name: './build/UnstableCoreLibraries.proj'
project-build-commands: '-p:RunningDotNetPack=true -p:ExposeExperimentalFeatures=true' project-build-commands: '-p:RunningDotNetPack=true -p:ExposeExperimentalFeatures=true'
code-cov-name: 'Unstable-Core' code-cov-name: 'UnstableCoreLibraries-Experimental'
otlp-integration-test: otlp-integration-test:
needs: detect-changes needs: detect-changes
@ -163,8 +175,9 @@ jobs:
detect-changes, detect-changes,
lint-md, lint-md,
lint-dotnet-format, lint-dotnet-format,
build-test-solution-stable, build-test-solution,
build-test-solution-experimental, build-test-project-stable,
build-test-project-experimental,
build-test-unstable-core, build-test-unstable-core,
otlp-integration-test, otlp-integration-test,
w3c-trace-context-integration-test, w3c-trace-context-integration-test,

View File

@ -39,8 +39,8 @@ jobs:
- name: Setup dotnet - name: Setup dotnet
uses: actions/setup-dotnet@v4 uses: actions/setup-dotnet@v4
- name: dotnet pack OpenTelemetry.proj - name: dotnet pack
run: dotnet pack OpenTelemetry.proj --configuration Release run: dotnet pack ./build/OpenTelemetry.proj --configuration Release
- name: Perform CodeQL Analysis - name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3 uses: github/codeql-action/analyze@v3

View File

@ -17,10 +17,10 @@ jobs:
uses: actions/setup-dotnet@v4 uses: actions/setup-dotnet@v4
- name: dotnet restore - name: dotnet restore
run: dotnet restore run: dotnet restore OpenTelemetry.sln
- name: dotnet format - name: dotnet format
run: dotnet format OpenTelemetry.sln --no-restore --verify-no-changes run: dotnet format OpenTelemetry.sln --no-restore --verify-no-changes # Note: .proj files are currently not supported by dotnet format
env: env:
ExposeExperimentalFeatures: false ExposeExperimentalFeatures: false
@ -35,9 +35,9 @@ jobs:
uses: actions/setup-dotnet@v4 uses: actions/setup-dotnet@v4
- name: dotnet restore - name: dotnet restore
run: dotnet restore run: dotnet restore OpenTelemetry.sln
- name: dotnet format - name: dotnet format
run: dotnet format OpenTelemetry.sln --no-restore --verify-no-changes run: dotnet format OpenTelemetry.sln --no-restore --verify-no-changes # Note: .proj files are currently not supported by dotnet format
env: env:
ExposeExperimentalFeatures: true ExposeExperimentalFeatures: true

View File

@ -20,8 +20,8 @@ jobs:
- name: Setup dotnet - name: Setup dotnet
uses: actions/setup-dotnet@v4 uses: actions/setup-dotnet@v4
- name: Pack - name: dotnet pack
run: dotnet pack OpenTelemetry.proj --configuration Release /p:EnablePackageValidation=true /p:ExposeExperimentalFeatures=false /p:RunningDotNetPack=true run: dotnet pack ./build/OpenTelemetry.proj --configuration Release /p:EnablePackageValidation=true /p:ExposeExperimentalFeatures=false /p:RunningDotNetPack=true
run-package-validation-experimental: run-package-validation-experimental:
runs-on: windows-latest runs-on: windows-latest
@ -37,5 +37,5 @@ jobs:
- name: Setup dotnet - name: Setup dotnet
uses: actions/setup-dotnet@v4 uses: actions/setup-dotnet@v4
- name: Pack - name: dotnet pack
run: dotnet pack OpenTelemetry.proj --configuration Release /p:EnablePackageValidation=true /p:ExposeExperimentalFeatures=true /p:RunningDotNetPack=true run: dotnet pack ./build/OpenTelemetry.proj --configuration Release /p:EnablePackageValidation=true /p:ExposeExperimentalFeatures=true /p:RunningDotNetPack=true

View File

@ -51,13 +51,13 @@ jobs:
uses: actions/setup-dotnet@v4 uses: actions/setup-dotnet@v4
- name: dotnet restore - name: dotnet restore
run: dotnet restore OpenTelemetry.proj -p:RunningDotNetPack=true run: dotnet restore ./build/OpenTelemetry.proj -p:RunningDotNetPack=true
- name: dotnet build - name: dotnet build
run: dotnet build OpenTelemetry.proj --configuration Release --no-restore -p:Deterministic=true -p:BuildNumber=${{ github.run_number }} -p:RunningDotNetPack=true run: dotnet build ./build/OpenTelemetry.proj --configuration Release --no-restore -p:Deterministic=true -p:BuildNumber=${{ github.run_number }} -p:RunningDotNetPack=true
- name: dotnet pack - name: dotnet pack
run: dotnet pack OpenTelemetry.proj --configuration Release --no-restore --no-build -p:PackTag=${{ github.ref_type == 'tag' && github.ref_name || inputs.tag || '' }} run: dotnet pack ./build/OpenTelemetry.proj --configuration Release --no-restore --no-build -p:PackTag=${{ github.ref_type == 'tag' && github.ref_name || inputs.tag || '' }}
- name: Publish Artifacts - name: Publish Artifacts
id: upload-artifacts id: upload-artifacts

View File

@ -17,7 +17,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
global.json = global.json global.json = global.json
LICENSE.TXT = LICENSE.TXT LICENSE.TXT = LICENSE.TXT
NuGet.config = NuGet.config NuGet.config = NuGet.config
OpenTelemetry.proj = OpenTelemetry.proj
README.md = README.md README.md = README.md
THIRD-PARTY-NOTICES.TXT = THIRD-PARTY-NOTICES.TXT THIRD-PARTY-NOTICES.TXT = THIRD-PARTY-NOTICES.TXT
VERSIONING.md = VERSIONING.md VERSIONING.md = VERSIONING.md
@ -38,6 +37,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{7CB2F02E
build\opentelemetry-icon-color.png = build\opentelemetry-icon-color.png build\opentelemetry-icon-color.png = build\opentelemetry-icon-color.png
build\OpenTelemetry.prod.loose.ruleset = build\OpenTelemetry.prod.loose.ruleset build\OpenTelemetry.prod.loose.ruleset = build\OpenTelemetry.prod.loose.ruleset
build\OpenTelemetry.prod.ruleset = build\OpenTelemetry.prod.ruleset build\OpenTelemetry.prod.ruleset = build\OpenTelemetry.prod.ruleset
build\OpenTelemetry.proj = build\OpenTelemetry.proj
build\OpenTelemetry.test.ruleset = build\OpenTelemetry.test.ruleset build\OpenTelemetry.test.ruleset = build\OpenTelemetry.test.ruleset
build\RELEASING.md = build\RELEASING.md build\RELEASING.md = build\RELEASING.md
build\stylecop.json = build\stylecop.json build\stylecop.json = build\stylecop.json

View File

@ -1,16 +1,18 @@
<Project> <Project>
<PropertyGroup>
<RepoRoot>$([System.IO.Directory]::GetParent($(MSBuildThisFileDirectory)).Parent.FullName)</RepoRoot>
</PropertyGroup>
<ItemGroup> <ItemGroup>
<SolutionProjects Include="**\*.csproj" /> <SolutionProjects Include="$(RepoRoot)\**\*.csproj" />
<PackProjects Include="src\**\*.csproj" /> <PackProjects Include="$(RepoRoot)\src\**\*.csproj" />
<TestProjects Include="test\**\*.csproj" /> <TestProjects Include="$(RepoRoot)\test\**\*.csproj" />
</ItemGroup> </ItemGroup>
<ItemGroup Condition="'$(RunningDotNetPack)' == 'true'"> <ItemGroup Condition="'$(RunningDotNetPack)' == 'true'">
<!-- Skip building these projects when publish packages workflow runs as <!-- Skip building these projects when publish packages workflow runs -->
these projects need to depend upon instrumentation libraries taking a <SolutionProjects Remove="$(RepoRoot)\docs\**\*.csproj" />
project reference instead of package reference on API/SDK --> <SolutionProjects Remove="$(RepoRoot)\examples\**\*.csproj" />
<SolutionProjects Remove="docs\**\**\*.csproj" />
<SolutionProjects Remove="examples\**\*.csproj" />
<SolutionProjects Remove="@(TestProjects)" /> <SolutionProjects Remove="@(TestProjects)" />
</ItemGroup> </ItemGroup>

View File

@ -1,12 +1,16 @@
<Project> <Project>
<ItemGroup> <PropertyGroup>
<SolutionProjects Include="..\**\OpenTelemetry.Exporter.Prometheus.AspNetCore*.csproj" /> <RepoRoot>$([System.IO.Directory]::GetParent($(MSBuildThisFileDirectory)).Parent.FullName)</RepoRoot>
<SolutionProjects Include="..\**\OpenTelemetry.Exporter.Prometheus.HttpListener*.csproj" /> </PropertyGroup>
<SolutionProjects Include="..\**\OpenTelemetry.Shims.OpenTracing*.csproj" />
<TestProjects Include="..\test\**\OpenTelemetry.Exporter.Prometheus.AspNetCore.Tests.csproj" /> <ItemGroup>
<TestProjects Include="..\test\**\OpenTelemetry.Exporter.Prometheus.HttpListener.Tests.csproj" /> <SolutionProjects Include="$(RepoRoot)\**\OpenTelemetry.Exporter.Prometheus.AspNetCore*.csproj" />
<TestProjects Include="..\test\**\OpenTelemetry.Shims.OpenTracing.Tests.csproj" /> <SolutionProjects Include="$(RepoRoot)\**\OpenTelemetry.Exporter.Prometheus.HttpListener*.csproj" />
<SolutionProjects Include="$(RepoRoot)\**\OpenTelemetry.Shims.OpenTracing*.csproj" />
<TestProjects Include="$(RepoRoot)\test\**\OpenTelemetry.Exporter.Prometheus.AspNetCore.Tests.csproj" />
<TestProjects Include="$(RepoRoot)\test\**\OpenTelemetry.Exporter.Prometheus.HttpListener.Tests.csproj" />
<TestProjects Include="$(RepoRoot)\test\**\OpenTelemetry.Shims.OpenTracing.Tests.csproj" />
</ItemGroup> </ItemGroup>
<Target Name="Build"> <Target Name="Build">