Fix MSI release (#572)

* Reapply "Add Windows MSI to the release (#560)" (#570)

This reverts commit b8551a7bdb.

* Fix MSI release: add wixl tool to GH runner
This commit is contained in:
Paulo Janotti 2024-06-10 03:40:25 -07:00 committed by GitHub
parent bf4bd1b9f3
commit 414594f174
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
13 changed files with 234 additions and 9 deletions

View File

@ -32,7 +32,7 @@ jobs:
GOARCH: arm
- GOOS: windows
GOARCH: s390x
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
steps:
- name: Checkout
@ -45,6 +45,12 @@ jobs:
with:
platforms: arm64,ppc64le,linux/arm/v7,s390x
- name: Setup wixl # Required to build MSI packages for Windows
if: ${{ matrix.GOOS }} == 'windows' && (${{ matrix.GOARCH }} == '386' || ${{ matrix.GOARCH }} == 'amd64')
run: |
sudo apt-get update
sudo apt-get install -y wixl
- name: Setup Docker Buildx
uses: docker/setup-buildx-action@d70bba72b1f3fd22344832f00baa16ece964efeb # v3.3.0

View File

@ -32,7 +32,7 @@ jobs:
GOARCH: arm
- GOOS: windows
GOARCH: s390x
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
@ -54,6 +54,12 @@ jobs:
go-version: '1.22'
check-latest: true
- name: Setup wixl # Required to build MSI packages for Windows
if: ${{ matrix.GOOS }} == 'windows' && (${{ matrix.GOARCH }} == '386' || ${{ matrix.GOARCH }} == 'amd64')
run: |
sudo apt-get update
sudo apt-get install -y wixl
- name: Generate distribution sources
run: make generate-sources
@ -95,7 +101,7 @@ jobs:
release:
name: ${{ inputs.distribution }} Release
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
needs: prepare
permissions:

View File

@ -9,7 +9,7 @@ on:
jobs:
build:
name: Build
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6

View File

@ -6,7 +6,8 @@ This repository contains a set of resources that ultimately results in OpenTelem
### Distribution directory
Each distribution has its own directory at the root of this repository, such as `opentelemetry-collector`. Within each one of those, you'll find at least two files:
Each distribution has its own directory under the [`distributions`](./distributions/) folder, such as [`otelcol`](./distributions/otelcol/).
Within each one of those, you'll find at least two files:
- `Dockerfile`, determining how to build the container image for this distribution
- `manifest.yaml`, which is used with [ocb](https://github.com/open-telemetry/opentelemetry-collector/tree/main/cmd/builder) to generate the sources for the distribution.

View File

@ -24,8 +24,7 @@ import (
"path"
"strings"
"github.com/goreleaser/goreleaser/pkg/config"
"github.com/goreleaser/nfpm/v2/files"
"github.com/goreleaser/goreleaser-pro/pkg/config"
)
const ArmArch = "arm"
@ -45,6 +44,7 @@ func Generate(dist string) config.Project {
Env: []string{"COSIGN_YES=true"},
Builds: Builds(dist),
Archives: Archives(dist),
MSI: WinPackages(dist),
NFPMs: Packages(dist),
Dockers: DockerImages(dist),
DockerManifests: DockerManifests(dist),
@ -102,6 +102,26 @@ func Archive(dist string) config.Archive {
}
}
func WinPackages(dist string) []config.MSI {
return []config.MSI{
WinPackage(dist),
}
}
// Package configures goreleaser to build a Windows MSI package.
// https://goreleaser.com/customization/msi/
func WinPackage(dist string) config.MSI {
return config.MSI{
ID: dist,
Name: fmt.Sprintf("%s_{{ .Version }}_{{ .Os }}_{{ .MsiArch }}", dist),
WXS: "windows-installer.wxs",
Files: []string{
"config.yaml",
"opentelemetry.ico",
},
}
}
func Packages(dist string) (r []config.NFPM) {
return []config.NFPM{
Package(dist),
@ -127,7 +147,7 @@ func Package(dist string) config.NFPM {
PostInstall: "postinstall.sh",
PreRemove: "preremove.sh",
},
Contents: files.Contents{
Contents: config.NFPMContents{
{
Source: fmt.Sprintf("%s.service", dist),
Destination: path.Join("/lib", "systemd", "system", fmt.Sprintf("%s.service", dist)),

View File

@ -3,6 +3,13 @@ partial:
project_name: opentelemetry-collector-releases
env:
- COSIGN_YES=true
msi:
- id: otelcol-contrib
name: otelcol-contrib_{{ .Version }}_{{ .Os }}_{{ .MsiArch }}
wxs: windows-installer.wxs
extra_files:
- config.yaml
- opentelemetry.ico
builds:
- id: otelcol-contrib
goos:

Binary file not shown.

After

Width:  |  Height:  |  Size: 269 KiB

View File

@ -0,0 +1,88 @@
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product
Name="OpenTelemetry Collector ({{ .Version }}) - {{ .Binary }} distribution"
Id="B250A214-D463-4E9B-8902-1DE5C19EA951"
UpgradeCode="B7C263DD-95A5-436A-A025-DCA5200C2BE3"
Version="{{ .Version }}"
Manufacturer="OpenTelemetry"
Language="1033">
<Package
InstallerVersion="200"
Compressed="yes"
Comments="Windows Installer Package"
InstallScope="perMachine"/>
<Media Id="1" Cabinet="product.cab" EmbedCab="yes"/>
<Icon Id="ProductIcon" SourceFile="opentelemetry.ico"/>
<Property Id="ARPPRODUCTICON" Value="ProductIcon"/>
<Property Id="ARPHELPLINK" Value="https://opentelemetry.io/"/>
<Property Id="ARPURLINFOABOUT" Value="https://opentelemetry.io/"/>
<Property Id="ARPNOREPAIR" Value="1"/>
<Property Id="ARPNOMODIFY" Value="1"/>
<MajorUpgrade
DowngradeErrorMessage="A later version of OpenTelemetry Collector already installed. Setup will now exit."/>
<Feature Id="Feature" Level="1">
<ComponentRef Id="ApplicationComponent"/>
</Feature>
<Property Id="COLLECTOR_SVC_ARGS"/>
<CustomAction
Id="SetCollectorSvcArgs"
Property="COLLECTOR_SVC_ARGS"
Value="--config &quot;[INSTALLDIR]config.yaml&quot;"/>
<InstallExecuteSequence>
<Custom Action="SetCollectorSvcArgs" Before="InstallFiles">NOT COLLECTOR_SVC_ARGS</Custom>
</InstallExecuteSequence>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFiles64Folder">
<Directory Id="INSTALLDIR" Name="OpenTelemetry Collector">
<Component Id="ApplicationComponent" Guid="1207C3C4-1830-4DC8-8A7B-2BD7DBE45BC3">
<!-- Files to include -->
<File
Id="{{ .Binary }}.exe"
Name="{{ .Binary }}.exe"
Source="{{ .Binary }}.exe"
KeyPath="yes"/>
<File
Id="config.yaml"
Name="config.yaml"
Source="config.yaml"/>
<ServiceInstall
Id="Sevice"
Name="{{ .Binary }}"
DisplayName="OpenTelemetry Collector"
Description="Collects, processes, and exports telemetry from various configurable sources."
Type="ownProcess"
Vital="yes"
Start="auto"
Account="LocalSystem"
ErrorControl="normal"
Arguments="[COLLECTOR_SVC_ARGS]"
Interactive="no"/>
<ServiceControl
Id="StartStopRemoveService"
Name="{{ .Binary }}"
Start="install"
Stop="both"
Remove="uninstall"
Wait="yes"/>
<RegistryKey
Root="HKLM"
Key="SYSTEM\CurrentControlSet\Services\EventLog\Application\{{ .Binary }}">
<RegistryValue
Type="expandable"
Name="EventMessageFile"
Value="%SystemRoot%\System32\EventCreate.exe"/>
</RegistryKey>
</Component>
</Directory>
</Directory>
</Directory>
</Product>
</Wix>

View File

@ -3,6 +3,13 @@ partial:
project_name: opentelemetry-collector-releases
env:
- COSIGN_YES=true
msi:
- id: otelcol
name: otelcol_{{ .Version }}_{{ .Os }}_{{ .MsiArch }}
wxs: windows-installer.wxs
extra_files:
- config.yaml
- opentelemetry.ico
builds:
- id: otelcol
goos:

Binary file not shown.

After

Width:  |  Height:  |  Size: 269 KiB

View File

@ -0,0 +1,88 @@
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product
Name="OpenTelemetry Collector ({{ .Version }}) - {{ .Binary }} distribution"
Id="B250A214-D463-4E9B-8902-1DE5C19EA951"
UpgradeCode="B7C263DD-95A5-436A-A025-DCA5200C2BE3"
Version="{{ .Version }}"
Manufacturer="OpenTelemetry"
Language="1033">
<Package
InstallerVersion="200"
Compressed="yes"
Comments="Windows Installer Package"
InstallScope="perMachine"/>
<Media Id="1" Cabinet="product.cab" EmbedCab="yes"/>
<Icon Id="ProductIcon" SourceFile="opentelemetry.ico"/>
<Property Id="ARPPRODUCTICON" Value="ProductIcon"/>
<Property Id="ARPHELPLINK" Value="https://opentelemetry.io/"/>
<Property Id="ARPURLINFOABOUT" Value="https://opentelemetry.io/"/>
<Property Id="ARPNOREPAIR" Value="1"/>
<Property Id="ARPNOMODIFY" Value="1"/>
<MajorUpgrade
DowngradeErrorMessage="A later version of OpenTelemetry Collector already installed. Setup will now exit."/>
<Feature Id="Feature" Level="1">
<ComponentRef Id="ApplicationComponent"/>
</Feature>
<Property Id="COLLECTOR_SVC_ARGS"/>
<CustomAction
Id="SetCollectorSvcArgs"
Property="COLLECTOR_SVC_ARGS"
Value="--config &quot;[INSTALLDIR]config.yaml&quot;"/>
<InstallExecuteSequence>
<Custom Action="SetCollectorSvcArgs" Before="InstallFiles">NOT COLLECTOR_SVC_ARGS</Custom>
</InstallExecuteSequence>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFiles64Folder">
<Directory Id="INSTALLDIR" Name="OpenTelemetry Collector">
<Component Id="ApplicationComponent" Guid="1207C3C4-1830-4DC8-8A7B-2BD7DBE45BC3">
<!-- Files to include -->
<File
Id="{{ .Binary }}.exe"
Name="{{ .Binary }}.exe"
Source="{{ .Binary }}.exe"
KeyPath="yes"/>
<File
Id="config.yaml"
Name="config.yaml"
Source="config.yaml"/>
<ServiceInstall
Id="Sevice"
Name="{{ .Binary }}"
DisplayName="OpenTelemetry Collector"
Description="Collects, processes, and exports telemetry from various configurable sources."
Type="ownProcess"
Vital="yes"
Start="auto"
Account="LocalSystem"
ErrorControl="normal"
Arguments="[COLLECTOR_SVC_ARGS]"
Interactive="no"/>
<ServiceControl
Id="StartStopRemoveService"
Name="{{ .Binary }}"
Start="install"
Stop="both"
Remove="uninstall"
Wait="yes"/>
<RegistryKey
Root="HKLM"
Key="SYSTEM\CurrentControlSet\Services\EventLog\Application\{{ .Binary }}">
<RegistryValue
Type="expandable"
Name="EventMessageFile"
Value="%SystemRoot%\System32\EventCreate.exe"/>
</RegistryKey>
</Component>
</Directory>
</Directory>
</Directory>
</Product>
</Wix>

2
go.mod
View File

@ -5,7 +5,7 @@ go 1.21
toolchain go1.21.7
require (
github.com/goreleaser/goreleaser v1.25.1
github.com/goreleaser/goreleaser-pro v1.25.1-pro
github.com/goreleaser/nfpm/v2 v2.37.1
gopkg.in/yaml.v3 v3.0.1
)

2
go.sum
View File

@ -21,6 +21,8 @@ github.com/goreleaser/fileglob v1.3.0 h1:/X6J7U8lbDpQtBvGcwwPS6OpzkNVlVEsFUVRx9+
github.com/goreleaser/fileglob v1.3.0/go.mod h1:Jx6BoXv3mbYkEzwm9THo7xbr5egkAraxkGorbJb4RxU=
github.com/goreleaser/goreleaser v1.25.1 h1:a9skjeROotTN5GPPJDHDfhmOK4n13cBgJ34sTdXRDN0=
github.com/goreleaser/goreleaser v1.25.1/go.mod h1:nsbhCYp9eImbE2fyd9/3Tgv5hjuGuDIQRoBozEUEYbc=
github.com/goreleaser/goreleaser-pro v1.25.1-pro h1:NOoSx96oAK0zNA1+hiL0p6pY1DWL101kwPmpmkiExXk=
github.com/goreleaser/goreleaser-pro v1.25.1-pro/go.mod h1:7q9HURJC4ZYBT9VyX3XlqjK0kwe5QbG/VIUAJSP3CKc=
github.com/goreleaser/nfpm/v2 v2.37.1 h1:RUmeEt8OlEVeSzKRrO5Vl5qVWCtUwx4j9uivGuRo5fw=
github.com/goreleaser/nfpm/v2 v2.37.1/go.mod h1:q8+sZXFqn106/eGw+9V+I8+izFxZ/sJjrhwmEUxXhUg=
github.com/invopop/jsonschema v0.12.0 h1:6ovsNSuvn9wEQVOyc72aycBMVQFKz7cPdMJn10CvzRI=