Skip to content

Commit 816a335

Browse files
pjanottiCopilot
andauthored
Add Windows ARM MSI to the release (#7275)
* Refactor MSI build scripts parameters from OS to ARCH * Skip agent-bundle unzip for Windows arm64 * Refactor bundle make.ps1 arg from $Runner to $Arch * Remove OS input from reusable agent bundle windows workflow * Remove OS input from reusable msi build workflow * Update GitLab script * Use correct NuGet Python package for Windows arm64 * Fix actionlint issues * Remove typo * Fix python nuget package folder name * Create a fake agent bundle for Windows ARM * Require agent bundle for windows arm (same as amd64) * Update agent bundle test in CI * Move msi-custom-actions-package to build stage (no deps on other jobs) * No chocolatey arm64 release * Select correct arch on install.ps1 * Changelog note * Improve usage msg for packaging/msi/build.sh Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Handle launching from WOW64 powershell --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
1 parent 65d7a43 commit 816a335

File tree

17 files changed

+169
-142
lines changed

17 files changed

+169
-142
lines changed
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix'
2+
change_type: enhancement
3+
4+
# The name of the component, or a single word describing the area of concern, (e.g. crosslink)
5+
component: collector
6+
7+
# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`).
8+
note: "Added native Windows ARM installer for the Splunk OpenTelemetry Collector."
9+
10+
# One or more tracking issues related to the change
11+
issues: [7275]
12+
13+
# (Optional) One or more lines of additional information to render under the primary note.
14+
# These lines will be padded with 2 spaces and then inserted directly into the document.
15+
# Use pipe (|) for multiline entries.
16+
subtext: |
17+
- The Windows ARM installer is now available as part of our release process, allowing users with ARM-based Windows devices to easily install the Splunk OpenTelemetry Collector.
18+
- The PowerShell installation script has been updated to detect the system architecture and install the appropriate MSI package for either AMD64 or ARM64 platforms.

.github/actionlint.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ self-hosted-runner:
44
labels:
55
- otel-arm64
66
- otel-windows
7+
- otel-windows-arm
78

89
# Path-specific configurations.
910
paths:

.github/workflows/ansible.yml

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -60,25 +60,18 @@ jobs:
6060

6161
agent-bundle-windows:
6262
needs: lint
63-
strategy:
64-
matrix:
65-
OS: [ "windows-2025" ]
6663
uses: ./.github/workflows/reusable-agent-bundle-windows.yml
6764
with:
68-
OS: ${{ matrix.OS }}
65+
ARCH: "amd64"
6966

7067
msi-custom-actions:
7168
needs: lint
7269
uses: ./.github/workflows/reusable-msi-custom-actions.yml
7370

7471
msi-build:
7572
needs: [ cross-compile, agent-bundle-windows, msi-custom-actions ]
76-
strategy:
77-
matrix:
78-
OS: [ "windows-2025" ]
7973
uses: ./.github/workflows/reusable-msi-build.yml
8074
with:
81-
OS: ${{ matrix.OS }}
8275
ARCH: "amd64"
8376

8477
lint:
@@ -218,7 +211,7 @@ jobs:
218211

219212
- uses: actions/download-artifact@v7
220213
with:
221-
name: msi-build-windows-2025
214+
name: msi-build-amd64
222215
path: /tmp/msi-build
223216
# Workaround for https://github.com/actions/runner-images/issues/13202
224217
- name: Unload KVM module (AMD)

.github/workflows/chef-test.yml

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -59,25 +59,18 @@ jobs:
5959

6060
agent-bundle-windows:
6161
needs: [ chef-lint-spec-test ]
62-
strategy:
63-
matrix:
64-
OS: [ "windows-2025" ]
6562
uses: ./.github/workflows/reusable-agent-bundle-windows.yml
6663
with:
67-
OS: ${{ matrix.OS }}
64+
ARCH: "amd64"
6865

6966
msi-custom-actions:
7067
needs: [ chef-lint-spec-test ]
7168
uses: ./.github/workflows/reusable-msi-custom-actions.yml
7269

7370
msi-build:
7471
needs: [ cross-compile, agent-bundle-windows, msi-custom-actions ]
75-
strategy:
76-
matrix:
77-
OS: [ "windows-2025" ]
7872
uses: ./.github/workflows/reusable-msi-build.yml
7973
with:
80-
OS: ${{ matrix.OS }}
8174
ARCH: "amd64"
8275

8376
chef-lint-spec-test:

.github/workflows/puppet-test.yml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@ jobs:
231231
puppet-build-windows-agent-bundle:
232232
uses: ./.github/workflows/reusable-agent-bundle-windows.yml
233233
with:
234-
OS: windows-2022
234+
ARCH: amd64
235235

236236
puppet-build-windows-msi-custom-actions:
237237
uses: ./.github/workflows/reusable-msi-custom-actions.yml
@@ -244,7 +244,6 @@ jobs:
244244
- puppet-build-windows-agent-bundle
245245
- puppet-build-windows-msi-custom-actions
246246
with:
247-
OS: windows-2022
248247
ARCH: amd64
249248

250249
puppet-test-windows:
@@ -268,7 +267,7 @@ jobs:
268267
- name: Download MSI package artifacts
269268
uses: actions/download-artifact@v7
270269
with:
271-
name: msi-build-windows-2022
270+
name: msi-build-amd64
272271
path: ./dist
273272

274273
- name: Setup python

.github/workflows/reusable-agent-bundle-windows.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ name: agent-bundle-windows
33
on:
44
workflow_call:
55
inputs:
6-
OS:
6+
ARCH:
77
required: true
88
type: string
99

@@ -12,7 +12,7 @@ env:
1212

1313
jobs:
1414
agent-bundle-windows:
15-
runs-on: ${{ inputs.OS }}
15+
runs-on: ${{ inputs.ARCH == 'arm64' && 'windows-11-arm' || 'windows-2022' }}
1616
steps:
1717
- uses: actions/checkout@v5
1818

@@ -21,9 +21,9 @@ jobs:
2121
path: ${{ env.PIP_CACHE_DIR }}
2222
key: agent-bundle-windows-pip-${{ hashFiles('packaging/bundle/collectd-plugins.yaml', 'packaging/bundle/scripts/requirements.txt') }}
2323

24-
- run: ./packaging/bundle/scripts/windows/make.ps1 bundle "${{ inputs.OS }}"
24+
- run: ./packaging/bundle/scripts/windows/make.ps1 bundle "${{ inputs.ARCH }}"
2525

2626
- uses: actions/upload-artifact@v6
2727
with:
28-
name: agent-bundle-${{ inputs.OS }}
29-
path: ./dist/agent-bundle-${{ inputs.OS }}.zip
28+
name: agent-bundle-windows_${{ inputs.ARCH }}
29+
path: ./dist/agent-bundle-windows_${{ inputs.ARCH }}.zip

.github/workflows/reusable-msi-build.yml

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,6 @@ name: msi-build
33
on:
44
workflow_call:
55
inputs:
6-
OS:
7-
required: true
8-
type: string
96
ARCH:
107
required: true
118
type: string
@@ -19,7 +16,7 @@ env:
1916

2017
jobs:
2118
msi-build:
22-
runs-on: ${{ inputs.OS }}
19+
runs-on: ${{ inputs.ARCH == 'arm64' && 'windows-11-arm' || 'windows-2022' }}
2320
outputs:
2421
version: ${{ steps.get-version.outputs.version }}
2522
steps:
@@ -53,7 +50,7 @@ jobs:
5350
- name: Downloading agent-bundle-windows
5451
uses: actions/download-artifact@v7
5552
with:
56-
name: agent-bundle-${{ inputs.OS }}
53+
name: agent-bundle-windows_${{ inputs.ARCH }}
5754
path: ./dist
5855

5956
- name: Downloading msi-custom-actions
@@ -69,10 +66,10 @@ jobs:
6966
VERSION="${{ steps.get-version.outputs.version }}"
7067
JMX_METRIC_GATHERER_RELEASE=$(cat packaging/jmx-metric-gatherer-release.txt)
7168
72-
./packaging/msi/build.sh "$VERSION" "$JMX_METRIC_GATHERER_RELEASE" "${{ inputs.OS }}"
69+
./packaging/msi/build.sh "$VERSION" "$JMX_METRIC_GATHERER_RELEASE" "${{ inputs.ARCH }}"
7370
7471
- name: Uploading msi build artifacts
7572
uses: actions/upload-artifact@v6
7673
with:
77-
name: msi-build-${{ inputs.OS }}
74+
name: msi-build-${{ inputs.ARCH }}
7875
path: ./dist/*.msi

.github/workflows/vuln-scans.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -165,12 +165,12 @@ jobs:
165165
with:
166166
path: ${{ env.PIP_CACHE_DIR }}
167167
key: agent-bundle-windows-pip-${{ hashFiles('packaging/bundle/collectd-plugins.yaml', 'packaging/bundle/scripts/requirements.txt') }}
168-
- run: ./packaging/bundle/scripts/windows/make.ps1 bundle "${{ matrix.OS }}"
168+
- run: ./packaging/bundle/scripts/windows/make.ps1 bundle amd64
169169
- name: Build docker image
170170
run: |
171171
$ErrorActionPreference = 'Stop'
172172
Copy-Item .\bin\otelcol_windows_amd64.exe .\cmd\otelcol\otelcol.exe
173-
Copy-Item .\dist\agent-bundle-${{ matrix.OS }}.zip .\cmd\otelcol\agent-bundle_windows_amd64.zip
173+
Copy-Item .\dist\agent-bundle-windows_amd64.zip .\cmd\otelcol\agent-bundle_windows_amd64.zip
174174
if ("${{ matrix.OS }}" -eq "windows-2025") {
175175
$base_image = "mcr.microsoft.com/windows/servercore:ltsc2025"
176176
} else {

.github/workflows/win-package-test.yml

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -38,23 +38,22 @@ jobs:
3838
agent-bundle-windows:
3939
strategy:
4040
matrix:
41-
OS: [ {"runner": "windows-2022", "arch": "amd64"}, {"runner": "windows-2025", "arch": "amd64"}, {"runner": "windows-11-arm", "arch": "arm64"} ]
41+
ARCH: [ "amd64", "arm64" ]
4242
uses: ./.github/workflows/reusable-agent-bundle-windows.yml
4343
with:
44-
OS: ${{ matrix.OS.runner }}
44+
ARCH: ${{ matrix.ARCH }}
4545

4646
msi-custom-actions:
4747
uses: ./.github/workflows/reusable-msi-custom-actions.yml
4848

4949
msi-build:
5050
strategy:
5151
matrix:
52-
OS: [ {"runner": "windows-2022", "arch": "amd64"}, {"runner": "windows-2025", "arch": "amd64"}, {"runner": "windows-11-arm", "arch": "arm64"} ]
52+
ARCH: [ "amd64", "arm64" ]
5353
needs: [cross-compile, agent-bundle-windows, msi-custom-actions]
5454
uses: ./.github/workflows/reusable-msi-build.yml
5555
with:
56-
OS: ${{ matrix.OS.runner }}
57-
ARCH: ${{ matrix.OS.arch }}
56+
ARCH: ${{ matrix.ARCH }}
5857

5958
dotnet-zeroconfig-e2e-test:
6059
runs-on: windows-2022 # windows-2022 comes preloaded with the Docker image used in the test
@@ -77,7 +76,7 @@ jobs:
7776
- name: Download Splunk OTel Collector msi
7877
uses: actions/download-artifact@v7
7978
with:
80-
name: msi-build-windows-2025
79+
name: msi-build-amd64
8180
path: ./tests/zeroconfig/windows/testdata/docker-setup/
8281

8382
- uses: ./.github/actions/win-wait-for-docker
@@ -108,8 +107,8 @@ jobs:
108107
msi-test:
109108
strategy:
110109
matrix:
111-
OS: [ "windows-2022", "windows-11-arm" ]
112-
runs-on: ${{ matrix.OS != 'windows-11-arm' && 'otel-windows' || 'otel-windows-arm' }}
110+
runner: [ "otel-windows", "otel-windows-arm" ]
111+
runs-on: ${{ matrix.runner }}
113112
needs: [msi-build]
114113
timeout-minutes: 40
115114
steps:
@@ -119,7 +118,7 @@ jobs:
119118
- name: Downloading msi build
120119
uses: actions/download-artifact@v7
121120
with:
122-
name: msi-build-${{ matrix.OS }}
121+
name: msi-build-${{ matrix.runner == 'otel-windows-arm' && 'arm64' || 'amd64' }}
123122
path: ./dist
124123

125124
- name: Set the MSI_COLLECTOR_PATH environment variable
@@ -149,7 +148,7 @@ jobs:
149148
- name: Downloading msi build
150149
uses: actions/download-artifact@v7
151150
with:
152-
name: msi-build-${{ matrix.OS }}
151+
name: msi-build-${{ matrix.OS == 'windows-11-arm' && 'arm64' || 'amd64' }}
153152
path: ./dist
154153

155154
- name: Ensure required ports in the dynamic range are available
@@ -171,8 +170,13 @@ jobs:
171170
Start-Sleep -s 30
172171
& ${{ github.workspace }}\.github\workflows\scripts\win-test-services.ps1 -mode "${{ matrix.MODE }}" -access_token "${{ env.token }}" -realm "${{ env.realm }}" -memory "${{ env.memory }}"
173172
& ${{ github.workspace }}\.github\workflows\scripts\win-test-support-bundle.ps1 -mode "${{ matrix.MODE }}"
174-
Resolve-Path -Path "$env:ProgramFiles\Splunk\OpenTelemetry Collector\agent-bundle\python\python.exe"
175-
Resolve-Path -Path "$env:ProgramFiles\Splunk\OpenTelemetry Collector\agent-bundle\collectd-python"
173+
if ("${{ matrix.OS }}" -ne "windows-11-arm") {
174+
Resolve-Path -Path "$env:ProgramFiles\Splunk\OpenTelemetry Collector\agent-bundle\python\python.exe"
175+
Resolve-Path -Path "$env:ProgramFiles\Splunk\OpenTelemetry Collector\agent-bundle\collectd-python"
176+
} else {
177+
# The arm64 bundle does not include the python binaries since they are not used in the arm64 tests, so just check that the expected directory structure is created and the expected files are included
178+
Resolve-Path -Path "$env:ProgramFiles\Splunk\OpenTelemetry Collector\agent-bundle\README.txt"
179+
}
176180
# The JMX file is installed under Disk:\opt, so we need to check each available disk to see if it's installed
177181
$found_jmx = $false
178182
(Get-PSDrive -PSProvider FileSystem).Root | ForEach-Object {
@@ -197,7 +201,7 @@ jobs:
197201
- name: Downloading msi build
198202
uses: actions/download-artifact@v7
199203
with:
200-
name: msi-build-${{ matrix.OS }}
204+
name: msi-build-amd64
201205
path: ./dist
202206
- name: Ensure required ports in the dynamic range are available
203207
run: |
@@ -233,7 +237,7 @@ jobs:
233237
- name: Downloading msi build
234238
uses: actions/download-artifact@v7
235239
with:
236-
name: msi-build-${{ matrix.OS }}
240+
name: msi-build-amd64
237241
path: ./dist
238242

239243
- name: Build Chocolatey
@@ -374,7 +378,7 @@ jobs:
374378

375379
- uses: actions/download-artifact@v7
376380
with:
377-
name: agent-bundle-${{ matrix.OS }}
381+
name: agent-bundle-windows_amd64
378382
path: ./dist
379383

380384
- uses: ./.github/actions/win-wait-for-docker
@@ -383,7 +387,7 @@ jobs:
383387
run: |
384388
$ErrorActionPreference = 'Stop'
385389
Copy-Item .\bin\otelcol_windows_amd64.exe .\cmd\otelcol\otelcol.exe
386-
Copy-Item .\dist\agent-bundle-${{ matrix.OS }}.zip .\cmd\otelcol\agent-bundle_windows_amd64.zip
390+
Copy-Item .\dist\agent-bundle-windows_amd64.zip .\cmd\otelcol\agent-bundle_windows_amd64.zip
387391
docker build -t otelcol-windows --build-arg BASE_IMAGE=mcr.microsoft.com/windows/servercore:ltsc2022 --build-arg JMX_METRIC_GATHERER_RELEASE=$(Get-Content packaging\jmx-metric-gatherer-release.txt) -f .\cmd\otelcol\Dockerfile.windows .\cmd\otelcol\
388392
Remove-Item .\cmd\otelcol\otelcol.exe
389393
Remove-Item .\cmd\otelcol\agent-bundle_windows_amd64.zip

0 commit comments

Comments
 (0)