add SHA for all archs to releases.json file
parent
5fdd9a62d5
commit
2b54b45765
|
@ -0,0 +1,148 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"flag"
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
)
|
||||
|
||||
type operatingSystems struct {
|
||||
Darwin string `json:"darwin,omitempty"`
|
||||
Linux string `json:"linux,omitempty"`
|
||||
Windows string `json:"windows,omitempty"`
|
||||
}
|
||||
|
||||
type checksums struct {
|
||||
AMD64 *operatingSystems `json:"amd64,omitempty"`
|
||||
ARM *operatingSystems `json:"arm,omitempty"`
|
||||
ARM64 *operatingSystems `json:"arm64,omitempty"`
|
||||
PPC64LE *operatingSystems `json:"ppc64le,omitempty"`
|
||||
S390X *operatingSystems `json:"s390x,omitempty"`
|
||||
operatingSystems
|
||||
}
|
||||
|
||||
type release struct {
|
||||
Checksums checksums `json:"checksums"`
|
||||
Name string `json:"name"`
|
||||
}
|
||||
|
||||
type releases struct {
|
||||
Releases []release
|
||||
}
|
||||
|
||||
func (r *releases) UnmarshalJSON(p []byte) error {
|
||||
return json.Unmarshal(p, &r.Releases)
|
||||
}
|
||||
|
||||
func main() {
|
||||
releasesFile := flag.String("releases-file", "", "The path to the releases file")
|
||||
version := flag.String("version", "", "The version of minikube to create the entry for")
|
||||
flag.Parse()
|
||||
|
||||
if *releasesFile == "" || *version == "" {
|
||||
fmt.Println("All flags are required and cannot be empty")
|
||||
flag.PrintDefaults()
|
||||
return
|
||||
}
|
||||
|
||||
r, err := getReleases(*releasesFile)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
e := createBareRelease(*version)
|
||||
|
||||
shaMap := getSHAMap(&e.Checksums)
|
||||
for os, archs := range shaMap {
|
||||
for arch, sumVars := range archs {
|
||||
sha, err := getSHA(os, arch)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
for _, sumVar := range sumVars {
|
||||
*sumVar = sha
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
r.Releases = append([]release{e}, r.Releases...)
|
||||
|
||||
if err := updateJSON(*releasesFile, r); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
func getReleases(path string) (releases, error) {
|
||||
r := releases{}
|
||||
|
||||
b, err := os.ReadFile(path)
|
||||
if err != nil {
|
||||
return r, fmt.Errorf("failed to read in releases file %q: %v", path, err)
|
||||
}
|
||||
|
||||
if err := json.Unmarshal(b, &r); err != nil {
|
||||
return r, fmt.Errorf("failed to unmarshal releases file: %v", err)
|
||||
}
|
||||
|
||||
return r, nil
|
||||
}
|
||||
|
||||
func createBareRelease(name string) release {
|
||||
return release{
|
||||
Checksums: checksums{
|
||||
AMD64: &operatingSystems{},
|
||||
ARM: &operatingSystems{},
|
||||
ARM64: &operatingSystems{},
|
||||
PPC64LE: &operatingSystems{},
|
||||
S390X: &operatingSystems{},
|
||||
},
|
||||
Name: name,
|
||||
}
|
||||
}
|
||||
|
||||
func getSHAMap(c *checksums) map[string]map[string][]*string {
|
||||
return map[string]map[string][]*string{
|
||||
"darwin": {
|
||||
"amd64": {&c.AMD64.Darwin, &c.Darwin},
|
||||
"arm64": {&c.ARM64.Darwin},
|
||||
},
|
||||
"linux": {
|
||||
"amd64": {&c.AMD64.Linux, &c.Linux},
|
||||
"arm": {&c.ARM.Linux},
|
||||
"arm64": {&c.ARM64.Linux},
|
||||
"ppc64le": {&c.PPC64LE.Linux},
|
||||
"s390x": {&c.S390X.Linux},
|
||||
},
|
||||
"windows": {
|
||||
"amd64": {&c.AMD64.Windows, &c.Windows},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func getSHA(operatingSystem, arch string) (string, error) {
|
||||
if operatingSystem == "windows" {
|
||||
arch += ".exe"
|
||||
}
|
||||
//filePath := fmt.Sprintf("out/minikube-%s-%s.sha256", operatingSystem, arch)
|
||||
filePath := "out/minikube-test.sha256"
|
||||
b, err := os.ReadFile(filePath)
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("failed to read file %q: %v", filePath, err)
|
||||
}
|
||||
return string(b), nil
|
||||
}
|
||||
|
||||
func updateJSON(path string, r releases) error {
|
||||
b, err := json.MarshalIndent(r.Releases, "", " ")
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to marshal releases to JSON: %v", err)
|
||||
}
|
||||
|
||||
if err := os.WriteFile(path, b, 0644); err != nil {
|
||||
return fmt.Errorf("failed to write JSON to file: %v", err)
|
||||
}
|
||||
return nil
|
||||
}
|
|
@ -24,11 +24,12 @@
|
|||
|
||||
set -e
|
||||
|
||||
export TAGNAME=v${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_BUILD}
|
||||
./hack/jenkins/installers/check_install_golang.sh "/usr/local"
|
||||
|
||||
export DARWIN_SHA256=$(cat out/minikube-darwin-amd64.sha256)
|
||||
export LINUX_SHA256=$(cat out/minikube-linux-amd64.sha256)
|
||||
export WINDOWS_SHA256=$(cat out/minikube-windows-amd64.exe.sha256)
|
||||
# Get directory of script.
|
||||
DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
|
||||
|
||||
export TAGNAME=v${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_BUILD}
|
||||
|
||||
# Update releases.json w/ new release in gcs and github
|
||||
git config user.name "minikube-bot"
|
||||
|
@ -39,8 +40,7 @@ git checkout -b "jenkins-releases.json-${TAGNAME}"
|
|||
git status
|
||||
|
||||
if ! [[ "${VERSION_BUILD}" =~ ^[0-9]+$ ]]; then
|
||||
#Prepends the new version to the release-beta.json file
|
||||
sed -i "0,/{/s/{/{\n \"name\": \"${TAGNAME}\",\n \"checksums\": {\n \"darwin\": \"${DARWIN_SHA256}\",\n \"linux\": \"${LINUX_SHA256}\",\n \"windows\": \"${WINDOWS_SHA256}\"\n }\n },\n {"/ deploy/minikube/releases-beta.json
|
||||
go run "${DIR}/release_update_releases_json.go" --releases-file deploy/minikube/releases-beta.json --version "$TAGNAME"
|
||||
|
||||
git add -A
|
||||
git commit -m "Update releases-beta.json to include ${TAGNAME}"
|
||||
|
@ -53,8 +53,7 @@ if ! [[ "${VERSION_BUILD}" =~ ^[0-9]+$ ]]; then
|
|||
# Upload file to GCS so that minikube can see the new version
|
||||
gsutil cp deploy/minikube/releases-beta.json gs://minikube/releases-beta.json
|
||||
else
|
||||
#Prepends the new version to the release.json file
|
||||
sed -i "0,/{/s/{/{\n \"name\": \"${TAGNAME}\",\n \"checksums\": {\n \"darwin\": \"${DARWIN_SHA256}\",\n \"linux\": \"${LINUX_SHA256}\",\n \"windows\": \"${WINDOWS_SHA256}\"\n }\n },\n {"/ deploy/minikube/releases.json
|
||||
go run "${DIR}/release_update_releases_json.go" --releases-file deploy/minikube/releases.json --version "$TAGNAME"
|
||||
|
||||
#Update the front page of our documentation
|
||||
now=$(date +"%b %d, %Y")
|
||||
|
|
|
@ -34,6 +34,7 @@ func main() {
|
|||
if *dataFile == "" || *dataLast90File == "" {
|
||||
fmt.Println("All flags are required and cannot be empty")
|
||||
flag.PrintDefaults()
|
||||
return
|
||||
}
|
||||
|
||||
data, err := os.Open(*dataFile)
|
||||
|
|
Loading…
Reference in New Issue