Files
Kevin Minehart 7a2edd35d5 CI: Support more version formats in publishing (#94575)
* cleanup dead code
* add tests and rewrite publish grafanacom steps to reuse
* add pkg/build tests; don't upload CDN assets on grafana releases
2024-10-15 09:27:13 -05:00

73 lines
1.7 KiB
Go

package gcom
import (
"fmt"
"net/url"
"path"
"strings"
"github.com/grafana/grafana/pkg/build/versions"
)
func PackageName(grafana, distro, arch, version, ext string, musl bool, raspberryPi bool) string {
v := versions.ParseSemver(version)
if raspberryPi {
grafana += "-rpi"
}
versionString := strings.Join([]string{v.Major, v.Minor, v.Patch}, ".")
fmt.Println("Version string:", versionString)
if distro == "deb" {
if v.BuildMetadata != "" {
versionString += "+" + strings.ReplaceAll(v.BuildMetadata, "-", "~")
}
if v.Prerelease != "" {
versionString += "~" + v.Prerelease
}
return strings.Join([]string{grafana, versionString, arch}, "_") + "." + ext
}
if distro == "rhel" {
if v.BuildMetadata != "" {
versionString += "+" + strings.ReplaceAll(v.BuildMetadata, "-", "~")
}
if v.Prerelease != "" {
versionString += "~" + v.Prerelease
}
versionString += "-1"
// Notable difference between our deb naming and our RPM naming: the file ends with `.arch.ext`, not
// `_arch.ext`.
return strings.Join([]string{grafana, versionString}, "-") + "." + arch + "." + ext
}
if v.Prerelease != "" {
versionString += "-" + v.Prerelease
}
if v.BuildMetadata != "" {
versionString += "+" + v.BuildMetadata
}
if musl {
arch += "-musl"
}
// grafana-enterprise-1.2.3+example-01.linux-amd64.tar.gz
return fmt.Sprintf("%s-%s.%s-%s.%s", grafana, versionString, distro, arch, ext)
}
func GetURL(baseURL *url.URL, version, grafana, distro, arch, ext string, musl, raspberryPi bool) *url.URL {
packageName := PackageName(grafana, distro, arch, version, ext, musl, raspberryPi)
return &url.URL{
Host: baseURL.Host,
Scheme: baseURL.Scheme,
Path: path.Join(baseURL.Path, packageName),
}
}