mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
build: publisher updated to support more architectures and OSs.
This commit is contained in:
parent
803694f41b
commit
3933cb6bf6
@ -18,8 +18,15 @@ import (
|
|||||||
var apiUrl = flag.String("apiUrl", "https://grafana.com/api", "api url")
|
var apiUrl = flag.String("apiUrl", "https://grafana.com/api", "api url")
|
||||||
var apiKey = flag.String("apiKey", "", "api key")
|
var apiKey = flag.String("apiKey", "", "api key")
|
||||||
var version = ""
|
var version = ""
|
||||||
var versionRe = regexp.MustCompile(`grafana-(.*)\.(linux|windows)`)
|
var versionRe = regexp.MustCompile(`grafana-(.*)(\.|_)(arm64|armv7|darwin|linux|windows|x86_64)`)
|
||||||
|
var debVersionRe = regexp.MustCompile(`grafana_(.*)_(arm64|armv7|amd64)\.deb`)
|
||||||
var builds = []build{}
|
var builds = []build{}
|
||||||
|
var architectureMapping = map[string]string{
|
||||||
|
"amd64":"amd64",
|
||||||
|
"armv7":"armv7",
|
||||||
|
"arm64":"arm64",
|
||||||
|
"x86_64":"amd64",
|
||||||
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
@ -60,17 +67,54 @@ func main() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func packageWalker(path string, f os.FileInfo, err error) error {
|
func mapPackage(path string, name string, shaBytes []byte) (build, error) {
|
||||||
if f.Name() == "dist" || strings.Contains(f.Name(), "sha256") || strings.Contains(f.Name(), "latest") {
|
log.Printf("Finding package file %s", name)
|
||||||
return nil
|
result := versionRe.FindSubmatch([]byte(name))
|
||||||
}
|
debResult := debVersionRe.FindSubmatch([]byte(name))
|
||||||
|
|
||||||
log.Printf("Finding package file %s", f.Name())
|
|
||||||
result := versionRe.FindSubmatch([]byte(f.Name()))
|
|
||||||
|
|
||||||
if len(result) > 0 {
|
if len(result) > 0 {
|
||||||
version = string(result[1])
|
version = string(result[1])
|
||||||
log.Printf("Version detected: %v", version)
|
log.Printf("Version detected: %v", version)
|
||||||
|
} else if (len(debResult) > 0) {
|
||||||
|
version = string(debResult[1])
|
||||||
|
}
|
||||||
|
|
||||||
|
os := ""
|
||||||
|
if strings.Contains(name, "linux") {
|
||||||
|
os = "linux"
|
||||||
|
}
|
||||||
|
if strings.HasSuffix(name, "windows-amd64.zip") {
|
||||||
|
os = "win"
|
||||||
|
}
|
||||||
|
if strings.HasSuffix(name, "darwin-amd64.tar.gz") {
|
||||||
|
os = "darwin"
|
||||||
|
}
|
||||||
|
if strings.HasSuffix(name, ".rpm") {
|
||||||
|
os = "rhel"
|
||||||
|
}
|
||||||
|
if strings.HasSuffix(name, ".deb") {
|
||||||
|
os = "deb"
|
||||||
|
}
|
||||||
|
|
||||||
|
arch := ""
|
||||||
|
for archListed, archReal := range architectureMapping {
|
||||||
|
if strings.Contains(name, archListed) {
|
||||||
|
arch = archReal
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return build{
|
||||||
|
Os: os,
|
||||||
|
Arch: arch,
|
||||||
|
Url: "https://s3-us-west-2.amazonaws.com/grafana-releases/master/" + name,
|
||||||
|
Sha256: string(shaBytes),
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func packageWalker(path string, f os.FileInfo, err error) error {
|
||||||
|
if f.Name() == "dist" || strings.Contains(f.Name(), "sha256") || strings.Contains(f.Name(), "latest") {
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
shaBytes, err := ioutil.ReadFile(path + ".sha256")
|
shaBytes, err := ioutil.ReadFile(path + ".sha256")
|
||||||
@ -78,27 +122,13 @@ func packageWalker(path string, f os.FileInfo, err error) error {
|
|||||||
log.Fatalf("Failed to read sha256 file %v", err)
|
log.Fatalf("Failed to read sha256 file %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
os := ""
|
build, err := mapPackage(path, f.Name(), shaBytes)
|
||||||
if strings.Contains(f.Name(), "linux-x64.tar.gz") {
|
|
||||||
os = "linux"
|
if err != nil {
|
||||||
}
|
return err
|
||||||
if strings.HasSuffix(f.Name(), "windows-x64.zip") {
|
|
||||||
os = "win"
|
|
||||||
}
|
|
||||||
if strings.HasSuffix(f.Name(), ".rpm") {
|
|
||||||
os = "rhel"
|
|
||||||
}
|
|
||||||
if strings.HasSuffix(f.Name(), ".deb") {
|
|
||||||
os = "deb"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
builds = append(builds, build{
|
builds = append(builds, build)
|
||||||
Os: os,
|
|
||||||
Arch: "amd64",
|
|
||||||
Url: "https://s3-us-west-2.amazonaws.com/grafana-releases/master/" + f.Name(),
|
|
||||||
Sha256: string(shaBytes),
|
|
||||||
})
|
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
104
scripts/build/publish_test.go
Normal file
104
scripts/build/publish_test.go
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
type testPackage struct {
|
||||||
|
path string
|
||||||
|
version string
|
||||||
|
os string
|
||||||
|
arch string
|
||||||
|
}
|
||||||
|
|
||||||
|
var testData = []testPackage{
|
||||||
|
{
|
||||||
|
path: "grafana-5.2.0-474pre1.arm64.rpm",
|
||||||
|
version: "5.2.0-474pre1",
|
||||||
|
os: "rhel",
|
||||||
|
arch: "arm64",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "grafana-5.2.0-474pre1.armv7.rpm",
|
||||||
|
version: "5.2.0-474pre1",
|
||||||
|
os: "rhel",
|
||||||
|
arch: "armv7",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "grafana-5.2.0-474pre1.darwin-amd64.tar.gz",
|
||||||
|
version: "5.2.0-474pre1",
|
||||||
|
os: "darwin",
|
||||||
|
arch: "amd64",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "grafana-5.2.0-474pre1.linux-amd64.tar.gz",
|
||||||
|
version: "5.2.0-474pre1",
|
||||||
|
os: "linux",
|
||||||
|
arch: "amd64",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "grafana-5.2.0-474pre1.linux-arm64.tar.gz",
|
||||||
|
version: "5.2.0-474pre1",
|
||||||
|
os: "linux",
|
||||||
|
arch: "arm64",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "grafana-5.2.0-474pre1.linux-armv7.tar.gz",
|
||||||
|
version: "5.2.0-474pre1",
|
||||||
|
os: "linux",
|
||||||
|
arch: "armv7",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "grafana-5.2.0-474pre1.windows-amd64.zip",
|
||||||
|
version: "5.2.0-474pre1",
|
||||||
|
os: "win",
|
||||||
|
arch: "amd64",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "grafana-5.2.0-474pre1.x86_64.rpm",
|
||||||
|
version: "5.2.0-474pre1",
|
||||||
|
os: "rhel",
|
||||||
|
arch: "amd64",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "grafana_5.2.0-474pre1_amd64.deb",
|
||||||
|
version: "5.2.0-474pre1",
|
||||||
|
os: "deb",
|
||||||
|
arch: "amd64",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "grafana_5.2.0-474pre1_arm64.deb",
|
||||||
|
version: "5.2.0-474pre1",
|
||||||
|
os: "deb",
|
||||||
|
arch: "arm64",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "grafana_5.2.0-474pre1_armv7.deb",
|
||||||
|
version: "5.2.0-474pre1",
|
||||||
|
os: "deb",
|
||||||
|
arch: "armv7",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestFileWalker(t *testing.T) {
|
||||||
|
for _, packageInfo := range testData {
|
||||||
|
version = ""
|
||||||
|
actualPackageInfo, err := mapPackage(packageInfo.path, packageInfo.path, []byte{})
|
||||||
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
if version != packageInfo.version {
|
||||||
|
t.Errorf("Testing (%v), expected %v to be %v.", packageInfo.path, version, packageInfo.version)
|
||||||
|
}
|
||||||
|
|
||||||
|
if actualPackageInfo.Os != packageInfo.os {
|
||||||
|
t.Errorf("Testing (%v), expected %v to be %v.", packageInfo.path, actualPackageInfo.Os, packageInfo.os)
|
||||||
|
}
|
||||||
|
|
||||||
|
if actualPackageInfo.Arch != packageInfo.arch {
|
||||||
|
t.Errorf("Testing (%v), expected %v to be %v.", packageInfo.path, actualPackageInfo.Arch, packageInfo.arch)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user