The open and composable observability and data visualization platform. Visualize metrics, logs, and traces from multiple sources like Prometheus, Loki, Elasticsearch, InfluxDB, Postgres and many more.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
grafana/scripts/build/release_publisher/publisher.go

313 lines
6.6 KiB

package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"log"
"net/http"
"strings"
"time"
)
type publisher struct {
apiKey string
apiURI string
product string
dryRun bool
enterprise bool
scripts/build/*: Fix golint issues Url => URL $ gometalinter --vendor --disable-all --enable=golint ./... | grep -i URL build/publish.go:18:5:warning: var apiUrl should be apiURL (golint) build/publish.go:184:2:warning: struct field WhatsNewUrl should be WhatsNewURL (golint) build/publish.go:185:2:warning: struct field ReleaseNotesUrl should be ReleaseNotesURL (golint) build/publish.go:191:2:warning: struct field Url should be URL (golint) build/release_publisher/externalrelease.go:17:53:warning: method parameter baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/externalrelease.go:17:69:warning: method parameter whatsNewUrl should be whatsNewURL (golint) build/release_publisher/externalrelease.go:17:89:warning: method parameter releaseNotesUrl should be releaseNotesURL (golint) build/release_publisher/localrelease.go:20:45:warning: method parameter baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/localrelease.go:20:61:warning: method parameter whatsNewUrl should be whatsNewURL (golint) build/release_publisher/localrelease.go:20:81:warning: method parameter releaseNotesUrl should be releaseNotesURL (golint) build/release_publisher/localrelease.go:45:41:warning: method parameter baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/localrelease.go:51:84:warning: func parameter baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/main.go:12:6:warning: var whatsNewUrl should be whatsNewURL (golint) build/release_publisher/main.go:13:6:warning: var releaseNotesUrl should be releaseNotesURL (golint) build/release_publisher/main.go:40:6:warning: var baseUrl should be baseURL (golint) build/release_publisher/main.go:94:6:warning: func createBaseUrl should be createBaseURL (golint) build/release_publisher/publisher.go:21:2:warning: struct field baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/publisher.go:26:17:warning: interface method parameter baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/publisher.go:26:33:warning: interface method parameter whatsNewUrl should be whatsNewURL (golint) build/release_publisher/publisher.go:26:53:warning: interface method parameter releaseNotesUrl should be releaseNotesURL (golint) build/release_publisher/publisher.go:29:31:warning: method parameter whatsNewUrl should be whatsNewURL (golint) build/release_publisher/publisher.go:29:51:warning: method parameter releaseNotesUrl should be releaseNotesURL (golint) build/release_publisher/publisher.go:91:24:warning: method getUrl should be getURL (golint) build/release_publisher/publisher.go:91:31:warning: method parameter baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/publisher.go:190:15:warning: func parameter baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/publisher.go:199:21:warning: method apiUrl should be apiURL (golint) build/release_publisher/publisher.go:257:2:warning: struct field WhatsNewUrl should be WhatsNewURL (golint) build/release_publisher/publisher.go:258:2:warning: struct field ReleaseNotesUrl should be ReleaseNotesURL (golint) build/release_publisher/publisher.go:264:2:warning: struct field Url should be URL (golint) build/release_publisher/publisher_test.go:10:3:warning: struct field whatsNewUrl should be whatsNewURL (golint) build/release_publisher/publisher_test.go:11:3:warning: struct field relNotesUrl should be relNotesURL (golint) build/release_publisher/publisher_test.go:17:3:warning: struct field expectedUrl should be expectedURL (golint) build/release_publisher/publisher_test.go:18:3:warning: struct field baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/publisher_test.go:109:2:warning: var whatsNewUrl should be whatsNewURL (golint) build/release_publisher/publisher_test.go:110:2:warning: var relNotesUrl should be relNotesURL (golint)
7 years ago
baseArchiveURL string
builder releaseBuilder
}
type releaseBuilder interface {
scripts/build/*: Fix golint issues Url => URL $ gometalinter --vendor --disable-all --enable=golint ./... | grep -i URL build/publish.go:18:5:warning: var apiUrl should be apiURL (golint) build/publish.go:184:2:warning: struct field WhatsNewUrl should be WhatsNewURL (golint) build/publish.go:185:2:warning: struct field ReleaseNotesUrl should be ReleaseNotesURL (golint) build/publish.go:191:2:warning: struct field Url should be URL (golint) build/release_publisher/externalrelease.go:17:53:warning: method parameter baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/externalrelease.go:17:69:warning: method parameter whatsNewUrl should be whatsNewURL (golint) build/release_publisher/externalrelease.go:17:89:warning: method parameter releaseNotesUrl should be releaseNotesURL (golint) build/release_publisher/localrelease.go:20:45:warning: method parameter baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/localrelease.go:20:61:warning: method parameter whatsNewUrl should be whatsNewURL (golint) build/release_publisher/localrelease.go:20:81:warning: method parameter releaseNotesUrl should be releaseNotesURL (golint) build/release_publisher/localrelease.go:45:41:warning: method parameter baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/localrelease.go:51:84:warning: func parameter baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/main.go:12:6:warning: var whatsNewUrl should be whatsNewURL (golint) build/release_publisher/main.go:13:6:warning: var releaseNotesUrl should be releaseNotesURL (golint) build/release_publisher/main.go:40:6:warning: var baseUrl should be baseURL (golint) build/release_publisher/main.go:94:6:warning: func createBaseUrl should be createBaseURL (golint) build/release_publisher/publisher.go:21:2:warning: struct field baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/publisher.go:26:17:warning: interface method parameter baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/publisher.go:26:33:warning: interface method parameter whatsNewUrl should be whatsNewURL (golint) build/release_publisher/publisher.go:26:53:warning: interface method parameter releaseNotesUrl should be releaseNotesURL (golint) build/release_publisher/publisher.go:29:31:warning: method parameter whatsNewUrl should be whatsNewURL (golint) build/release_publisher/publisher.go:29:51:warning: method parameter releaseNotesUrl should be releaseNotesURL (golint) build/release_publisher/publisher.go:91:24:warning: method getUrl should be getURL (golint) build/release_publisher/publisher.go:91:31:warning: method parameter baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/publisher.go:190:15:warning: func parameter baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/publisher.go:199:21:warning: method apiUrl should be apiURL (golint) build/release_publisher/publisher.go:257:2:warning: struct field WhatsNewUrl should be WhatsNewURL (golint) build/release_publisher/publisher.go:258:2:warning: struct field ReleaseNotesUrl should be ReleaseNotesURL (golint) build/release_publisher/publisher.go:264:2:warning: struct field Url should be URL (golint) build/release_publisher/publisher_test.go:10:3:warning: struct field whatsNewUrl should be whatsNewURL (golint) build/release_publisher/publisher_test.go:11:3:warning: struct field relNotesUrl should be relNotesURL (golint) build/release_publisher/publisher_test.go:17:3:warning: struct field expectedUrl should be expectedURL (golint) build/release_publisher/publisher_test.go:18:3:warning: struct field baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/publisher_test.go:109:2:warning: var whatsNewUrl should be whatsNewURL (golint) build/release_publisher/publisher_test.go:110:2:warning: var relNotesUrl should be relNotesURL (golint)
7 years ago
prepareRelease(baseArchiveURL, whatsNewURL string, releaseNotesURL string, nightly bool) (*release, error)
}
scripts/build/*: Fix golint issues Url => URL $ gometalinter --vendor --disable-all --enable=golint ./... | grep -i URL build/publish.go:18:5:warning: var apiUrl should be apiURL (golint) build/publish.go:184:2:warning: struct field WhatsNewUrl should be WhatsNewURL (golint) build/publish.go:185:2:warning: struct field ReleaseNotesUrl should be ReleaseNotesURL (golint) build/publish.go:191:2:warning: struct field Url should be URL (golint) build/release_publisher/externalrelease.go:17:53:warning: method parameter baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/externalrelease.go:17:69:warning: method parameter whatsNewUrl should be whatsNewURL (golint) build/release_publisher/externalrelease.go:17:89:warning: method parameter releaseNotesUrl should be releaseNotesURL (golint) build/release_publisher/localrelease.go:20:45:warning: method parameter baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/localrelease.go:20:61:warning: method parameter whatsNewUrl should be whatsNewURL (golint) build/release_publisher/localrelease.go:20:81:warning: method parameter releaseNotesUrl should be releaseNotesURL (golint) build/release_publisher/localrelease.go:45:41:warning: method parameter baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/localrelease.go:51:84:warning: func parameter baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/main.go:12:6:warning: var whatsNewUrl should be whatsNewURL (golint) build/release_publisher/main.go:13:6:warning: var releaseNotesUrl should be releaseNotesURL (golint) build/release_publisher/main.go:40:6:warning: var baseUrl should be baseURL (golint) build/release_publisher/main.go:94:6:warning: func createBaseUrl should be createBaseURL (golint) build/release_publisher/publisher.go:21:2:warning: struct field baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/publisher.go:26:17:warning: interface method parameter baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/publisher.go:26:33:warning: interface method parameter whatsNewUrl should be whatsNewURL (golint) build/release_publisher/publisher.go:26:53:warning: interface method parameter releaseNotesUrl should be releaseNotesURL (golint) build/release_publisher/publisher.go:29:31:warning: method parameter whatsNewUrl should be whatsNewURL (golint) build/release_publisher/publisher.go:29:51:warning: method parameter releaseNotesUrl should be releaseNotesURL (golint) build/release_publisher/publisher.go:91:24:warning: method getUrl should be getURL (golint) build/release_publisher/publisher.go:91:31:warning: method parameter baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/publisher.go:190:15:warning: func parameter baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/publisher.go:199:21:warning: method apiUrl should be apiURL (golint) build/release_publisher/publisher.go:257:2:warning: struct field WhatsNewUrl should be WhatsNewURL (golint) build/release_publisher/publisher.go:258:2:warning: struct field ReleaseNotesUrl should be ReleaseNotesURL (golint) build/release_publisher/publisher.go:264:2:warning: struct field Url should be URL (golint) build/release_publisher/publisher_test.go:10:3:warning: struct field whatsNewUrl should be whatsNewURL (golint) build/release_publisher/publisher_test.go:11:3:warning: struct field relNotesUrl should be relNotesURL (golint) build/release_publisher/publisher_test.go:17:3:warning: struct field expectedUrl should be expectedURL (golint) build/release_publisher/publisher_test.go:18:3:warning: struct field baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/publisher_test.go:109:2:warning: var whatsNewUrl should be whatsNewURL (golint) build/release_publisher/publisher_test.go:110:2:warning: var relNotesUrl should be relNotesURL (golint)
7 years ago
func (p *publisher) doRelease(whatsNewURL string, releaseNotesURL string, nightly bool) error {
currentRelease, err := p.builder.prepareRelease(p.baseArchiveURL, whatsNewURL, releaseNotesURL, nightly)
if err != nil {
return err
}
if err := p.postRelease(currentRelease); err != nil {
return err
}
return nil
}
func (p *publisher) postRelease(r *release) error {
err := p.postRequest("/versions", r, fmt.Sprintf("Create Release %s", r.Version))
if err != nil {
return err
}
err = p.postRequest("/versions/"+r.Version, r, fmt.Sprintf("Update Release %s", r.Version))
if err != nil {
return err
}
for _, b := range r.Builds {
err = p.postRequest(fmt.Sprintf("/versions/%s/packages", r.Version), b, fmt.Sprintf("Create Build %s %s", b.Os, b.Arch))
if err != nil {
return err
}
err = p.postRequest(fmt.Sprintf("/versions/%s/packages/%s/%s", r.Version, b.Arch, b.Os), b, fmt.Sprintf("Update Build %s %s", b.Os, b.Arch))
if err != nil {
return err
}
}
return nil
}
type releaseType int
const (
// STABLE is a release type constant
STABLE releaseType = iota + 1
// BETA is a release type constant
BETA
// NIGHTLY is a release type constant
NIGHTLY
)
func (rt releaseType) beta() bool {
return rt == BETA
}
func (rt releaseType) stable() bool {
return rt == STABLE
}
func (rt releaseType) nightly() bool {
return rt == NIGHTLY
}
type buildArtifact struct {
os string
arch string
urlPostfix string
packagePostfix string
}
func (t buildArtifact) getURL(baseArchiveURL, version string, releaseType releaseType) string {
prefix := "-"
rev := ""
if t.os == "deb" {
prefix = "_"
}
if t.os == "rhel" {
rev = "-1"
}
verComponents := strings.Split(version, "-")
if len(verComponents) > 2 {
panic(fmt.Sprintf("Version string contains more than one hyphen: %q", version))
}
switch t.os {
case "deb", "rhel":
if len(verComponents) > 1 {
// With Debian and RPM packages, it's customary to prefix any pre-release component with a ~, since this
// is considered of lower lexical value than the empty character, and this way pre-release versions are
// considered to be of a lower version than the final version (which lacks this suffix).
version = fmt.Sprintf("%s~%s", verComponents[0], verComponents[1])
}
}
url := fmt.Sprintf("%s%s%s%s%s%s", baseArchiveURL, t.packagePostfix, prefix, version, rev, t.urlPostfix)
return url
}
var completeBuildArtifactConfigurations = []buildArtifact{
{
os: "deb",
arch: "arm64",
urlPostfix: "_arm64.deb",
},
{
os: "rhel",
arch: "arm64",
urlPostfix: ".aarch64.rpm",
},
{
os: "linux",
arch: "arm64",
urlPostfix: ".linux-arm64.tar.gz",
},
{
os: "deb",
arch: "armv7",
urlPostfix: "_armhf.deb",
},
{
os: "deb",
arch: "armv6",
packagePostfix: "-rpi",
urlPostfix: "_armhf.deb",
},
{
os: "rhel",
arch: "armv7",
urlPostfix: ".armhfp.rpm",
},
{
os: "linux",
arch: "armv6",
urlPostfix: ".linux-armv6.tar.gz",
},
{
os: "linux",
arch: "armv7",
urlPostfix: ".linux-armv7.tar.gz",
},
{
os: "darwin",
arch: "amd64",
urlPostfix: ".darwin-amd64.tar.gz",
},
{
os: "deb",
arch: "amd64",
urlPostfix: "_amd64.deb",
},
{
os: "rhel",
arch: "amd64",
urlPostfix: ".x86_64.rpm",
},
{
os: "linux",
arch: "amd64",
urlPostfix: ".linux-amd64.tar.gz",
},
{
os: "win",
arch: "amd64",
urlPostfix: ".windows-amd64.zip",
},
{
os: "win-installer",
arch: "amd64",
urlPostfix: ".windows-amd64.msi",
},
}
type artifactFilter struct {
os string
arch string
}
type filterType string
const (
Add filterType = "add"
Remove filterType = "remove"
)
func filterBuildArtifacts(filterFrom []buildArtifact, ft filterType, filters []artifactFilter) ([]buildArtifact, error) {
var artifacts []buildArtifact
for _, a := range filterFrom {
matched := false
var match buildArtifact
for _, f := range filters {
if f.os == a.os && f.arch == a.arch {
match = a
matched = true
break
}
}
if matched && ft == Add {
artifacts = append(artifacts, match)
} else if !matched && ft == Remove {
artifacts = append(artifacts, a)
}
}
return artifacts, nil
}
func newBuild(url string, ba buildArtifact, sha256 string) build {
return build{
Os: ba.os,
URL: url,
Sha256: sha256,
Arch: ba.arch,
}
}
scripts/build/*: Fix golint issues Url => URL $ gometalinter --vendor --disable-all --enable=golint ./... | grep -i URL build/publish.go:18:5:warning: var apiUrl should be apiURL (golint) build/publish.go:184:2:warning: struct field WhatsNewUrl should be WhatsNewURL (golint) build/publish.go:185:2:warning: struct field ReleaseNotesUrl should be ReleaseNotesURL (golint) build/publish.go:191:2:warning: struct field Url should be URL (golint) build/release_publisher/externalrelease.go:17:53:warning: method parameter baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/externalrelease.go:17:69:warning: method parameter whatsNewUrl should be whatsNewURL (golint) build/release_publisher/externalrelease.go:17:89:warning: method parameter releaseNotesUrl should be releaseNotesURL (golint) build/release_publisher/localrelease.go:20:45:warning: method parameter baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/localrelease.go:20:61:warning: method parameter whatsNewUrl should be whatsNewURL (golint) build/release_publisher/localrelease.go:20:81:warning: method parameter releaseNotesUrl should be releaseNotesURL (golint) build/release_publisher/localrelease.go:45:41:warning: method parameter baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/localrelease.go:51:84:warning: func parameter baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/main.go:12:6:warning: var whatsNewUrl should be whatsNewURL (golint) build/release_publisher/main.go:13:6:warning: var releaseNotesUrl should be releaseNotesURL (golint) build/release_publisher/main.go:40:6:warning: var baseUrl should be baseURL (golint) build/release_publisher/main.go:94:6:warning: func createBaseUrl should be createBaseURL (golint) build/release_publisher/publisher.go:21:2:warning: struct field baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/publisher.go:26:17:warning: interface method parameter baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/publisher.go:26:33:warning: interface method parameter whatsNewUrl should be whatsNewURL (golint) build/release_publisher/publisher.go:26:53:warning: interface method parameter releaseNotesUrl should be releaseNotesURL (golint) build/release_publisher/publisher.go:29:31:warning: method parameter whatsNewUrl should be whatsNewURL (golint) build/release_publisher/publisher.go:29:51:warning: method parameter releaseNotesUrl should be releaseNotesURL (golint) build/release_publisher/publisher.go:91:24:warning: method getUrl should be getURL (golint) build/release_publisher/publisher.go:91:31:warning: method parameter baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/publisher.go:190:15:warning: func parameter baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/publisher.go:199:21:warning: method apiUrl should be apiURL (golint) build/release_publisher/publisher.go:257:2:warning: struct field WhatsNewUrl should be WhatsNewURL (golint) build/release_publisher/publisher.go:258:2:warning: struct field ReleaseNotesUrl should be ReleaseNotesURL (golint) build/release_publisher/publisher.go:264:2:warning: struct field Url should be URL (golint) build/release_publisher/publisher_test.go:10:3:warning: struct field whatsNewUrl should be whatsNewURL (golint) build/release_publisher/publisher_test.go:11:3:warning: struct field relNotesUrl should be relNotesURL (golint) build/release_publisher/publisher_test.go:17:3:warning: struct field expectedUrl should be expectedURL (golint) build/release_publisher/publisher_test.go:18:3:warning: struct field baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/publisher_test.go:109:2:warning: var whatsNewUrl should be whatsNewURL (golint) build/release_publisher/publisher_test.go:110:2:warning: var relNotesUrl should be relNotesURL (golint)
7 years ago
func (p *publisher) apiURL(url string) string {
return fmt.Sprintf("%s/%s%s", p.apiURI, p.product, url)
}
func (p *publisher) postRequest(url string, obj any, desc string) error {
jsonBytes, err := json.Marshal(obj)
if err != nil {
return err
}
if p.dryRun {
log.Printf("POST to %s:\n", p.apiURL(url))
log.Println(string(jsonBytes))
return nil
}
scripts/build/*: Fix golint issues Url => URL $ gometalinter --vendor --disable-all --enable=golint ./... | grep -i URL build/publish.go:18:5:warning: var apiUrl should be apiURL (golint) build/publish.go:184:2:warning: struct field WhatsNewUrl should be WhatsNewURL (golint) build/publish.go:185:2:warning: struct field ReleaseNotesUrl should be ReleaseNotesURL (golint) build/publish.go:191:2:warning: struct field Url should be URL (golint) build/release_publisher/externalrelease.go:17:53:warning: method parameter baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/externalrelease.go:17:69:warning: method parameter whatsNewUrl should be whatsNewURL (golint) build/release_publisher/externalrelease.go:17:89:warning: method parameter releaseNotesUrl should be releaseNotesURL (golint) build/release_publisher/localrelease.go:20:45:warning: method parameter baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/localrelease.go:20:61:warning: method parameter whatsNewUrl should be whatsNewURL (golint) build/release_publisher/localrelease.go:20:81:warning: method parameter releaseNotesUrl should be releaseNotesURL (golint) build/release_publisher/localrelease.go:45:41:warning: method parameter baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/localrelease.go:51:84:warning: func parameter baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/main.go:12:6:warning: var whatsNewUrl should be whatsNewURL (golint) build/release_publisher/main.go:13:6:warning: var releaseNotesUrl should be releaseNotesURL (golint) build/release_publisher/main.go:40:6:warning: var baseUrl should be baseURL (golint) build/release_publisher/main.go:94:6:warning: func createBaseUrl should be createBaseURL (golint) build/release_publisher/publisher.go:21:2:warning: struct field baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/publisher.go:26:17:warning: interface method parameter baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/publisher.go:26:33:warning: interface method parameter whatsNewUrl should be whatsNewURL (golint) build/release_publisher/publisher.go:26:53:warning: interface method parameter releaseNotesUrl should be releaseNotesURL (golint) build/release_publisher/publisher.go:29:31:warning: method parameter whatsNewUrl should be whatsNewURL (golint) build/release_publisher/publisher.go:29:51:warning: method parameter releaseNotesUrl should be releaseNotesURL (golint) build/release_publisher/publisher.go:91:24:warning: method getUrl should be getURL (golint) build/release_publisher/publisher.go:91:31:warning: method parameter baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/publisher.go:190:15:warning: func parameter baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/publisher.go:199:21:warning: method apiUrl should be apiURL (golint) build/release_publisher/publisher.go:257:2:warning: struct field WhatsNewUrl should be WhatsNewURL (golint) build/release_publisher/publisher.go:258:2:warning: struct field ReleaseNotesUrl should be ReleaseNotesURL (golint) build/release_publisher/publisher.go:264:2:warning: struct field Url should be URL (golint) build/release_publisher/publisher_test.go:10:3:warning: struct field whatsNewUrl should be whatsNewURL (golint) build/release_publisher/publisher_test.go:11:3:warning: struct field relNotesUrl should be relNotesURL (golint) build/release_publisher/publisher_test.go:17:3:warning: struct field expectedUrl should be expectedURL (golint) build/release_publisher/publisher_test.go:18:3:warning: struct field baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/publisher_test.go:109:2:warning: var whatsNewUrl should be whatsNewURL (golint) build/release_publisher/publisher_test.go:110:2:warning: var relNotesUrl should be relNotesURL (golint)
7 years ago
req, err := http.NewRequest(http.MethodPost, p.apiURL(url), bytes.NewReader(jsonBytes))
if err != nil {
return err
}
req.Header.Add("Authorization", "Bearer "+p.apiKey)
req.Header.Add("Content-Type", "application/json")
res, err := http.DefaultClient.Do(req)
if err != nil {
return err
}
if res.StatusCode == http.StatusOK {
log.Printf("Action: %s \t OK", desc)
return nil
}
if res.Body != nil {
defer res.Body.Close()
body, err := io.ReadAll(res.Body)
if err != nil {
return err
}
if strings.Contains(string(body), "already exists") || strings.Contains(string(body), "Nothing to update") {
log.Printf("Action: %s \t Already exists", desc)
} else {
log.Printf("Action: %s \t Failed - Status: %v", desc, res.Status)
log.Printf("Resp: %s", body)
log.Fatalf("Quitting")
}
}
return nil
}
type release struct {
Version string `json:"version"`
ReleaseDate time.Time `json:"releaseDate"`
Stable bool `json:"stable"`
Beta bool `json:"beta"`
Nightly bool `json:"nightly"`
scripts/build/*: Fix golint issues Url => URL $ gometalinter --vendor --disable-all --enable=golint ./... | grep -i URL build/publish.go:18:5:warning: var apiUrl should be apiURL (golint) build/publish.go:184:2:warning: struct field WhatsNewUrl should be WhatsNewURL (golint) build/publish.go:185:2:warning: struct field ReleaseNotesUrl should be ReleaseNotesURL (golint) build/publish.go:191:2:warning: struct field Url should be URL (golint) build/release_publisher/externalrelease.go:17:53:warning: method parameter baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/externalrelease.go:17:69:warning: method parameter whatsNewUrl should be whatsNewURL (golint) build/release_publisher/externalrelease.go:17:89:warning: method parameter releaseNotesUrl should be releaseNotesURL (golint) build/release_publisher/localrelease.go:20:45:warning: method parameter baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/localrelease.go:20:61:warning: method parameter whatsNewUrl should be whatsNewURL (golint) build/release_publisher/localrelease.go:20:81:warning: method parameter releaseNotesUrl should be releaseNotesURL (golint) build/release_publisher/localrelease.go:45:41:warning: method parameter baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/localrelease.go:51:84:warning: func parameter baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/main.go:12:6:warning: var whatsNewUrl should be whatsNewURL (golint) build/release_publisher/main.go:13:6:warning: var releaseNotesUrl should be releaseNotesURL (golint) build/release_publisher/main.go:40:6:warning: var baseUrl should be baseURL (golint) build/release_publisher/main.go:94:6:warning: func createBaseUrl should be createBaseURL (golint) build/release_publisher/publisher.go:21:2:warning: struct field baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/publisher.go:26:17:warning: interface method parameter baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/publisher.go:26:33:warning: interface method parameter whatsNewUrl should be whatsNewURL (golint) build/release_publisher/publisher.go:26:53:warning: interface method parameter releaseNotesUrl should be releaseNotesURL (golint) build/release_publisher/publisher.go:29:31:warning: method parameter whatsNewUrl should be whatsNewURL (golint) build/release_publisher/publisher.go:29:51:warning: method parameter releaseNotesUrl should be releaseNotesURL (golint) build/release_publisher/publisher.go:91:24:warning: method getUrl should be getURL (golint) build/release_publisher/publisher.go:91:31:warning: method parameter baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/publisher.go:190:15:warning: func parameter baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/publisher.go:199:21:warning: method apiUrl should be apiURL (golint) build/release_publisher/publisher.go:257:2:warning: struct field WhatsNewUrl should be WhatsNewURL (golint) build/release_publisher/publisher.go:258:2:warning: struct field ReleaseNotesUrl should be ReleaseNotesURL (golint) build/release_publisher/publisher.go:264:2:warning: struct field Url should be URL (golint) build/release_publisher/publisher_test.go:10:3:warning: struct field whatsNewUrl should be whatsNewURL (golint) build/release_publisher/publisher_test.go:11:3:warning: struct field relNotesUrl should be relNotesURL (golint) build/release_publisher/publisher_test.go:17:3:warning: struct field expectedUrl should be expectedURL (golint) build/release_publisher/publisher_test.go:18:3:warning: struct field baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/publisher_test.go:109:2:warning: var whatsNewUrl should be whatsNewURL (golint) build/release_publisher/publisher_test.go:110:2:warning: var relNotesUrl should be relNotesURL (golint)
7 years ago
WhatsNewURL string `json:"whatsNewUrl"`
ReleaseNotesURL string `json:"releaseNotesUrl"`
Builds []build `json:"-"`
}
type build struct {
Os string `json:"os"`
scripts/build/*: Fix golint issues Url => URL $ gometalinter --vendor --disable-all --enable=golint ./... | grep -i URL build/publish.go:18:5:warning: var apiUrl should be apiURL (golint) build/publish.go:184:2:warning: struct field WhatsNewUrl should be WhatsNewURL (golint) build/publish.go:185:2:warning: struct field ReleaseNotesUrl should be ReleaseNotesURL (golint) build/publish.go:191:2:warning: struct field Url should be URL (golint) build/release_publisher/externalrelease.go:17:53:warning: method parameter baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/externalrelease.go:17:69:warning: method parameter whatsNewUrl should be whatsNewURL (golint) build/release_publisher/externalrelease.go:17:89:warning: method parameter releaseNotesUrl should be releaseNotesURL (golint) build/release_publisher/localrelease.go:20:45:warning: method parameter baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/localrelease.go:20:61:warning: method parameter whatsNewUrl should be whatsNewURL (golint) build/release_publisher/localrelease.go:20:81:warning: method parameter releaseNotesUrl should be releaseNotesURL (golint) build/release_publisher/localrelease.go:45:41:warning: method parameter baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/localrelease.go:51:84:warning: func parameter baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/main.go:12:6:warning: var whatsNewUrl should be whatsNewURL (golint) build/release_publisher/main.go:13:6:warning: var releaseNotesUrl should be releaseNotesURL (golint) build/release_publisher/main.go:40:6:warning: var baseUrl should be baseURL (golint) build/release_publisher/main.go:94:6:warning: func createBaseUrl should be createBaseURL (golint) build/release_publisher/publisher.go:21:2:warning: struct field baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/publisher.go:26:17:warning: interface method parameter baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/publisher.go:26:33:warning: interface method parameter whatsNewUrl should be whatsNewURL (golint) build/release_publisher/publisher.go:26:53:warning: interface method parameter releaseNotesUrl should be releaseNotesURL (golint) build/release_publisher/publisher.go:29:31:warning: method parameter whatsNewUrl should be whatsNewURL (golint) build/release_publisher/publisher.go:29:51:warning: method parameter releaseNotesUrl should be releaseNotesURL (golint) build/release_publisher/publisher.go:91:24:warning: method getUrl should be getURL (golint) build/release_publisher/publisher.go:91:31:warning: method parameter baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/publisher.go:190:15:warning: func parameter baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/publisher.go:199:21:warning: method apiUrl should be apiURL (golint) build/release_publisher/publisher.go:257:2:warning: struct field WhatsNewUrl should be WhatsNewURL (golint) build/release_publisher/publisher.go:258:2:warning: struct field ReleaseNotesUrl should be ReleaseNotesURL (golint) build/release_publisher/publisher.go:264:2:warning: struct field Url should be URL (golint) build/release_publisher/publisher_test.go:10:3:warning: struct field whatsNewUrl should be whatsNewURL (golint) build/release_publisher/publisher_test.go:11:3:warning: struct field relNotesUrl should be relNotesURL (golint) build/release_publisher/publisher_test.go:17:3:warning: struct field expectedUrl should be expectedURL (golint) build/release_publisher/publisher_test.go:18:3:warning: struct field baseArchiveUrl should be baseArchiveURL (golint) build/release_publisher/publisher_test.go:109:2:warning: var whatsNewUrl should be whatsNewURL (golint) build/release_publisher/publisher_test.go:110:2:warning: var relNotesUrl should be relNotesURL (golint)
7 years ago
URL string `json:"url"`
Sha256 string `json:"sha256"`
Arch string `json:"arch"`
}