CI: move grafana-build into pkg/build (#105640)

* move grafana-build into pkg/build
This commit is contained in:
Kevin Minehart
2025-05-20 10:48:00 -05:00
committed by GitHub
parent 759933d3e2
commit 13f4cf162e
222 changed files with 17387 additions and 442 deletions
+34
View File
@@ -0,0 +1,34 @@
package gcom
import (
"net/url"
"github.com/grafana/grafana/pkg/build/daggerbuild/cliutil"
)
// GCOMOpts are options used when making requests to grafana.com.
type GCOMOpts struct {
URL *url.URL
DownloadURL *url.URL
ApiKey string
Beta bool
Nightly bool
}
func GCOMOptsFromFlags(c cliutil.CLIContext) (*GCOMOpts, error) {
apiUrl, err := url.Parse(c.String("api-url"))
if err != nil {
return nil, err
}
downloadUrl, err := url.Parse(c.String("download-url"))
if err != nil {
return nil, err
}
return &GCOMOpts{
URL: apiUrl,
DownloadURL: downloadUrl,
ApiKey: c.String("api-key"),
Beta: c.Bool("beta"),
Nightly: c.Bool("nightly"),
}, nil
}
+60
View File
@@ -0,0 +1,60 @@
package gcom
import (
"context"
"encoding/json"
"fmt"
"dagger.io/dagger"
)
type GCOMVersionPayload struct {
Version string `json:"version"`
ReleaseDate string `json:"releaseDate"`
Stable bool `json:"stable"`
Beta bool `json:"beta"`
Nightly bool `json:"nightly"`
WhatsNewURL string `json:"whatsNewUrl"`
ReleaseNotesURL string `json:"releaseNotesUrl"`
}
type GCOMPackagePayload struct {
OS string `json:"os"`
URL string `json:"url"`
Sha256 string `json:"sha256"`
Arch string `json:"arch"`
}
// PublishGCOMVersion publishes a version to grafana.com.
func PublishGCOMVersion(ctx context.Context, d *dagger.Client, versionPayload *GCOMVersionPayload, opts *GCOMOpts) (string, error) {
versionApiUrl := opts.URL.JoinPath("/versions")
jsonVersionPayload, err := json.Marshal(versionPayload)
if err != nil {
return "", err
}
apiKeySecret := d.SetSecret("gcom-api-key", opts.ApiKey)
return d.Container().From("alpine/curl").
WithSecretVariable("GCOM_API_KEY", apiKeySecret).
WithExec([]string{"/bin/sh", "-c", fmt.Sprintf(`curl -H "Content-Type: application/json" -H "Authorization: Bearer $GCOM_API_KEY" -d '%s' %s`, string(jsonVersionPayload), versionApiUrl.String())}).
Stdout(ctx)
}
// PublishGCOMPackage publishes a package to grafana.com.
func PublishGCOMPackage(ctx context.Context, d *dagger.Client, packagePayload *GCOMPackagePayload, opts *GCOMOpts, version string) (string, error) {
packagesApiUrl := opts.URL.JoinPath("/versions/", version, "/packages")
jsonPackagePayload, err := json.Marshal(packagePayload)
if err != nil {
return "", err
}
apiKeySecret := d.SetSecret("gcom-api-key", opts.ApiKey)
return d.Container().From("alpine/curl").
WithSecretVariable("GCOM_API_KEY", apiKeySecret).
WithExec([]string{"/bin/sh", "-c", fmt.Sprintf(`curl -H "Content-Type: application/json" -H "Authorization: Bearer $GCOM_API_KEY" -d '%s' %s`, string(jsonPackagePayload), packagesApiUrl.String())}).
Stdout(ctx)
}