Files
grafana/pkg/build/daggerbuild/msi/build.go
T
Kevin Minehart 8b370bb6a5 CI: Build pre-release artifacts in GhA on merge to release branches and main. (#106779)
* Add grafana-build action and workflow

* Fix the --verify flag stalling on tar.gz builds

* Add event sources for main / release branches

* Update CODEOWNERS
2025-06-16 22:54:50 +02:00

69 lines
4.1 KiB
Go

package msi
import (
"fmt"
"dagger.io/dagger"
"github.com/grafana/grafana/pkg/build/daggerbuild/containers"
)
func Build(d *dagger.Client, builder *dagger.Container, targz *dagger.File, version string, enterprise bool) (*dagger.File, error) {
wxsFiles, err := WXSFiles(version, enterprise)
if err != nil {
return nil, fmt.Errorf("error generating wxs files: %w", err)
}
f := containers.ExtractedArchive(d, targz)
builder = builder.WithDirectory("/src/grafana", f, dagger.ContainerWithDirectoryOpts{
// Hack from grafana/build-pipeline: Remove files with names too long...
Exclude: []string{
"public/app/plugins/datasource/grafana-azure-monitor-datasource/app_insights/app_insights_querystring_builder.test.ts",
"public/app/plugins/datasource/grafana-azure-monitor-datasource/app_insights/app_insights_querystring_builder.ts",
"public/app/plugins/datasource/grafana-azure-monitor-datasource/azure_log_analytics/azure_log_analytics_datasource.test.ts",
"public/app/plugins/datasource/grafana-azure-monitor-datasource/azure_log_analytics/azure_log_analytics_datasource.ts",
"public/app/plugins/datasource/grafana-azure-monitor-datasource/azure_monitor/azure_monitor_datasource.test.ts",
"public/app/plugins/datasource/grafana-azure-monitor-datasource/azure_monitor/azure_monitor_datasource.ts",
"public/app/plugins/datasource/grafana-azure-monitor-datasource/app_insights/app_insights_datasource.ts",
"public/app/plugins/datasource/grafana-azure-monitor-datasource/app_insights/app_insights_datasource.test.ts",
"public/app/plugins/datasource/grafana-azure-monitor-datasource/insights_analytics/insights_analytics_datasource.ts",
"public/app/plugins/datasource/grafana-azure-monitor-datasource/azure_monitor/azure_monitor_filter_builder.test.ts",
"public/app/plugins/datasource/grafana-azure-monitor-datasource/azure_monitor/azure_monitor_filter_builder.ts",
"public/app/plugins/datasource/grafana-azure-monitor-datasource/components/AnalyticsConfig.test.tsx",
"public/app/plugins/datasource/grafana-azure-monitor-datasource/components/AzureCredentialsForm.test.tsx",
"public/app/plugins/datasource/grafana-azure-monitor-datasource/components/InsightsConfig.test.tsx",
"public/app/plugins/datasource/grafana-azure-monitor-datasource/components/__snapshots__/AnalyticsConfig.test.tsx.snap",
"public/app/plugins/datasource/grafana-azure-monitor-datasource/components/__snapshots__/AzureCredentialsForm.test.tsx.snap",
"public/app/plugins/datasource/grafana-azure-monitor-datasource/components/__snapshots__/InsightsConfig.test.tsx.snap",
"public/app/plugins/datasource/grafana-azure-monitor-datasource/components/__snapshots__/ConfigEditor.test.tsx.snap",
"storybook",
},
}).WithWorkdir("/src")
for _, v := range wxsFiles {
builder = builder.WithNewFile(v.Name, v.Contents)
}
// 1. `heat`: create 'grafana.wxs'
// 2. 'candle': Compile .wxs files into .wixobj
// 3. `light`: assembles the MSI
builder = builder.
WithExec([]string{"/bin/sh", "-c", "cp -r /src/resources/* /src"}).
WithExec([]string{"/bin/sh", "-c", "ls -al /src && ls -a /src/resources"}).
WithExec([]string{"/bin/sh", "-c", `WINEPATH=$(winepath /src/wix3) wine heat dir /src -platform x64 -sw5150 -srd -cg GrafanaX64 -gg -sfrag -dr GrafanaX64Dir -template fragment -out $(winepath -w grafana.wxs)`}).
WithExec([]string{"winepath"}).
WithExec([]string{"mkdir", "/root/.wine/drive_c/temp"})
for _, name := range []string{
"grafana-service.wxs",
"grafana-firewall.wxs",
"grafana.wxs",
"grafana-product.wxs",
} {
builder = builder.WithExec([]string{"/bin/sh", "-c", fmt.Sprintf(`WINEPATH=$(winepath /src/wix3) wine candle -ext WixFirewallExtension -ext WixUtilExtension -v -arch x64 $(winepath -w %s)`, name)})
}
builder = builder.
WithExec([]string{"/bin/bash", "-c", "WINEPATH=$(winepath /src/wix3) wine light -cultures:en-US -ext WixUIExtension.dll -ext WixFirewallExtension -ext WixUtilExtension -v -sval -spdb grafana-service.wixobj grafana-firewall.wixobj grafana.wixobj grafana-product.wixobj -out $(winepath -w /src/grafana.msi)"})
return builder.File("/src/grafana.msi"), nil
}