Skip to content

Commit edfcb30

Browse files
committed
Performance/scaling/Side-by-side improvements
1 parent 7e03608 commit edfcb30

29 files changed

+155
-127
lines changed

.github/ci-Template.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ jobs:
1111
uses: ./.github/workflows/build-module.yml
1212
with:
1313
module-name: {{moduleName}}
14-
module-directory: './modules/{{moduleName}}'
14+
module-directory: 'modules/{{moduleName}}'
1515

1616
build-test:
1717
needs: [

.github/workflows/Dotnet.Init.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ jobs:
1818
defaults:
1919
run:
2020
shell: bash
21-
working-directory: '${{ inputs.module-directory }}'
21+
working-directory: './${{ inputs.module-directory }}'
2222

2323
steps:
2424
- name: check out code

.github/workflows/Dotnet.Main.yml

Lines changed: 5 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,7 @@ on:
1919
required: false
2020
type: string
2121
os-list:
22-
default: '[ "windows-latest", "ubuntu-22.04" ]'
23-
required: false
24-
type: string
25-
tfm-list:
26-
default: '[ "net462", "net8.0", "net9.0" ]'
22+
default: '[ "windows-latest", "ubuntu-22.04", "macos-latest" ]'
2723
required: false
2824
type: string
2925
test-case-filter:
@@ -41,19 +37,13 @@ jobs:
4137
fail-fast: false # ensures the entire test matrix is run, even if one permutation fails
4238
matrix:
4339
os: ${{ fromJSON(inputs.os-list) }}
44-
version: ${{ fromJSON(inputs.tfm-list) }}
45-
exclude:
46-
- os: ubuntu-22.04
47-
version: net462
48-
- os: macos-latest
49-
version: net462
5040

5141
runs-on: ${{ matrix.os }}
5242

5343
defaults:
5444
run:
5545
shell: bash
56-
working-directory: '${{ inputs.module-directory }}'
46+
working-directory: './${{ inputs.module-directory }}'
5747

5848
steps:
5949
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
@@ -91,7 +81,6 @@ jobs:
9181
dotnet test
9282
--collect:"Code Coverage;Format=cobertura"
9383
--results-directory:TestResults
94-
--framework ${{ matrix.version }}
9584
--configuration Release
9685
--no-restore
9786
--no-build
@@ -107,14 +96,13 @@ jobs:
10796
continue-on-error: true # Note: Don't fail for upload failures
10897
env:
10998
OS: ${{ matrix.os }}
110-
TFM: ${{ matrix.version }}
11199
FILTER: ${{ inputs.test-case-filter }}
112100
token: ${{ secrets.CODECOV_TOKEN }}
113101
with:
114102
files: '**/TestResults/**/*Cobertura.xml'
115-
env_vars: OS,TFM,FILTER
103+
env_vars: OS,FILTER
116104
flags: ${{ inputs.code-cov-prefix }}-${{ inputs.module-name }}
117-
name: Code Coverage for ${{ inputs.code-cov-prefix }}-${{ inputs.module-name }} on [${{ matrix.os }}.${{ matrix.version }}]
105+
name: Code Coverage for ${{ inputs.code-cov-prefix }}-${{ inputs.module-name }} on [${{ matrix.os }}]
118106
codecov_yml_path: .github/codecov.yml
119107

120108
- name: Upload test results ${{ inputs.code-cov-prefix }}-${{ inputs.module-name }}
@@ -124,5 +112,5 @@ jobs:
124112
files: '**/TestResults/junit.xml'
125113
env_vars: OS,TFM,FILTER
126114
flags: ${{ inputs.code-cov-prefix }}-${{ inputs.module-name }}
127-
name: Test results for ${{ inputs.code-cov-prefix }}-${{ inputs.module-name }} on [${{ matrix.os }}.${{ matrix.version }}]
115+
name: Test results for ${{ inputs.code-cov-prefix }}-${{ inputs.module-name }} on [${{ matrix.os }}]
128116
token: ${{ secrets.CODECOV_TOKEN }}

.github/workflows/Dotnet.WrapUp.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ jobs:
2222
defaults:
2323
run:
2424
shell: bash
25-
working-directory: '${{ inputs.module-directory }}'
25+
working-directory: './${{ inputs.module-directory }}'
2626

2727
steps:
2828
- name: check out code
@@ -46,7 +46,7 @@ jobs:
4646
- name: Publish ${{ inputs.module-name }} NuGet packages to Artifacts
4747
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
4848
# Only publish packages from the first job
49-
if: ${{ inputs.pack && strategy.job-index == 0 }}
49+
if: ${{ inputs.pack }} && ${{ strategy.job-index == 0 }}
5050
with:
5151
name: ${{ inputs.module-name }}-packages
5252
path: '.\modules\**\src\**\*.*nupkg'

.github/workflows/build-module.yml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ on:
1010
required: false
1111
default: '.'
1212
type: string
13+
os-list:
14+
default: '[ "windows-latest", "ubuntu-22.04", "macos-latest" ]'
15+
required: false
16+
type: string
1317

1418
jobs:
1519
initialization:
@@ -24,11 +28,14 @@ jobs:
2428
with:
2529
module-name: ${{ inputs.module-name }}
2630
module-directory: '${{ inputs.module-directory }}'
27-
os-list: '[ "windows-latest", "ubuntu-22.04", "macos-latest" ]'
31+
os-list: ${{ inputs.os-list }}
2832

2933
verify:
3034
needs: main
3135
uses: ./.github/workflows/verifyaotcompat.yml
36+
with:
37+
module-name: ${{ inputs.module-name }}
38+
module-directory: '${{ inputs.module-directory }}'
3239

3340
wrap-up:
3441
needs: main

.github/workflows/ci-Resources.OperatingSystem.yml

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,19 @@ jobs:
1515
uses: ./.github/workflows/build-module.yml
1616
with:
1717
module-name: Resources.OperatingSystem
18-
module-directory: './modules/Resources.OperatingSystem'
18+
module-directory: "modules/Resources.OperatingSystem"
19+
20+
_resources-operatingsystem:
21+
uses: ./.github/workflows/deploy-module.yml
22+
if: ${{ github.event_name == 'push' }}
23+
with:
24+
module-name: Resources.OperatingSystem
25+
module-directory: "modules/Resources.OperatingSystem"
1926

2027
build-test:
2128
needs: [
22-
resources-operatingsystem
29+
resources-operatingsystem,
30+
_resources-operatingsystem
2331
]
2432
if: always() && !cancelled()
2533
runs-on: ubuntu-22.04

.github/workflows/ci.yml

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@ on:
44
push:
55
branches: [ 'main' ]
66
pull_request:
7-
branches: [ 'main2*', 'instrumentation*', 'exporter*', 'extensions*' ]
7+
branches: [ 'main*', 'instrumentation*', 'exporter*', 'extensions*' ]
8+
paths:
9+
- '!modules/**'
810

911
permissions:
1012
contents: read
@@ -67,7 +69,6 @@ jobs:
6769
resources-container: ['*/OpenTelemetry.Resources.Container*/**', '!**/*.md']
6870
resources-gcp: ['*/OpenTelemetry.Resources.Gcp*/**', '!**/*.md']
6971
resources-host: ['*/OpenTelemetry.Resources.Host*/**', '!**/*.md']
70-
resources-operatingsystem: ['*/OpenTelemetry.Resources.OperatingSystem/**', '*/OpenTelemetry.Resources.OperatingSystem.Tests/**', '!**/*.md']
7172
resources-process: ['*/OpenTelemetry.Resources.Process/**', '*/OpenTelemetry.Resources.Process.Tests/**', '!**/*.md']
7273
resources-processruntime: ['*/OpenTelemetry.Resources.ProcessRuntime/**', '*/OpenTelemetry.Resources.ProcessRuntime.Tests/**', '!**/*.md']
7374
sampler-aws: ['*/OpenTelemetry.Sampler.AWS*/**', '!**/*.md']
@@ -515,18 +516,6 @@ jobs:
515516
code-cov-name: Resources.Host
516517
os-list: '[ "windows-latest", "ubuntu-22.04", "macos-latest" ]'
517518

518-
build-test-resources-operatingsystem:
519-
needs: detect-changes
520-
if: |
521-
contains(needs.detect-changes.outputs.changes, 'resources-operatingsystem')
522-
|| contains(needs.detect-changes.outputs.changes, 'build')
523-
|| contains(needs.detect-changes.outputs.changes, 'shared')
524-
uses: ./.github/workflows/Component.BuildTest.yml
525-
with:
526-
project-name: Component[OpenTelemetry.Resources.OperatingSystem]
527-
code-cov-name: Resources.OperatingSystem
528-
os-list: '[ "windows-latest", "ubuntu-22.04", "macos-latest" ]'
529-
530519
build-test-resources-process:
531520
needs: detect-changes
532521
if: |
@@ -606,7 +595,6 @@ jobs:
606595
|| contains(needs.detect-changes.outputs.changes, 'resources-azure')
607596
|| contains(needs.detect-changes.outputs.changes, 'resources-container')
608597
|| contains(needs.detect-changes.outputs.changes, 'resources-host')
609-
|| contains(needs.detect-changes.outputs.changes, 'resources-operatingsystem')
610598
|| contains(needs.detect-changes.outputs.changes, 'resources-process')
611599
|| contains(needs.detect-changes.outputs.changes, 'resources-processruntime')
612600
|| contains(needs.detect-changes.outputs.changes, 'sampler-aws')
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
name: Build Module
2+
3+
on:
4+
workflow_call:
5+
inputs:
6+
module-name:
7+
required: true
8+
type: string
9+
module-directory:
10+
required: false
11+
default: '.'
12+
type: string
13+
14+
jobs:
15+
run-dotnet-format:
16+
runs-on: windows-latest
17+
18+
steps:
19+
20+
- name: Blank
21+
run: echo "Deployed"

.github/workflows/verifyaotcompat.yml

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,19 @@ name: Publish & Verify AOT Compatibility
22

33
on:
44
workflow_call:
5+
inputs:
6+
module-name:
7+
required: false
8+
default: ''
9+
type: string
10+
module-directory:
11+
required: false
12+
default: '.'
13+
type: string
14+
os-list:
15+
default: '[ "windows-latest", "ubuntu-22.04" ]'
16+
required: false
17+
type: string
518

619
permissions:
720
contents: read
@@ -12,7 +25,7 @@ jobs:
1225
strategy:
1326
fail-fast: false # ensures the entire test matrix is run, even if one permutation fails
1427
matrix:
15-
os: [ ubuntu-22.04, windows-latest ]
28+
os: ${{ fromJSON(inputs.os-list) }}
1629
version: [ net8.0, net9.0 ]
1730

1831
runs-on: ${{ matrix.os }}
@@ -24,4 +37,4 @@ jobs:
2437

2538
- name: publish AOT testApp, assert static analysis warning count, and run the app
2639
shell: pwsh
27-
run: .\build\scripts\test-aot-compatibility.ps1 ${{ matrix.version }}
40+
run: .\build\scripts\test-aot-compatibility.ps1 ${{ matrix.version }} ${{ inputs.module-name }} ${{ inputs.module-directory }}

CONTRIBUTING.md

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,8 @@ within the `/modules` folder for your module. This folder will contain the follo
221221
This is to import from the root file.
222222
* `Directory.build.props` a convient location to define
223223
shared properties for your module.
224-
This is to import from the root file.
224+
225+
The props files are to import from the root file.
225226

226227
To facilitate CI/CD, a workflow needs to be added in the `.github\workflows` folder.
227228
This file should be based on `ci-Template.yml` with
@@ -237,7 +238,22 @@ To facilitate code coverage analysis, a block based on the below
237238
```
238239

239240
with
240-
`{{moduleName}}` replaced with your module name.
241+
`{{moduleName}}` replaced with your module name and added to the `codecov.yml` file
242+
which is in the `.github` directory.
243+
244+
## Migrating projects to module approach
245+
246+
The process to migrate a project to be part of a module consists of the
247+
following steps:
248+
249+
1. Create module folder
250+
2. Move source/test files into module folder and up date solution file
251+
3. Create `Directory.Build.props` file making sure to set the module property.
252+
4. Create Module workflow file based on template
253+
5. Update codeowners file to refer to new files including the workflow definition
254+
6. Update codecov.yaml paths
255+
7. Remove project from `test/OpenTelemetry.AotCompatibility.TestApp/OpenTelemetry.AotCompatibility.TestApp.csproj`
256+
8. Remove all references from the `ci.yml` file
241257

242258
> [!NOTE]
243259
> It is generally helpful to reference a previous pull request when adding a new

0 commit comments

Comments
 (0)