2323package main
2424
2525import (
26+ "crypto/sha256"
27+ "encoding/hex"
2628 "flag"
2729 "fmt"
2830 "io/ioutil"
4143 ghRelease string // Full path of github-release tool
4244 ghUser string // Github account name to create release in
4345 ghRepo string // Github repository name to create release in
46+ binFolder string // Folder containing binaries
47+
48+ binaries = map [string ]string {
49+ "kube-arangodb.tgz" : "charts/kube-arangodb.tgz" ,
50+ "kube-arangodb-storage.tgz" : "charts/kube-arangodb-storage.tgz" ,
51+ }
4452)
4553
4654func init () {
@@ -49,6 +57,7 @@ func init() {
4957 flag .StringVar (& ghRelease , "github-release" , ".gobuild/bin/github-release" , "Full path of github-release tool" )
5058 flag .StringVar (& ghUser , "github-user" , "arangodb" , "Github account name to create release in" )
5159 flag .StringVar (& ghRepo , "github-repo" , "kube-arangodb" , "Github repository name to create release in" )
60+ flag .StringVar (& binFolder , "bin-folder" , "./bin" , "Folder containing binaries" )
5261}
5362
5463func main () {
@@ -65,6 +74,7 @@ func main() {
6574 })
6675 make ("patch - readme ", nil )
6776 make ("build - ghrelease ", nil )
77+ createSHA256Sums ()
6878 gitCommitAll (fmt .Sprintf ("Updated manifest to %s" , version )) // Commit manifest
6979 gitTag (version )
7080 make ("changelog ", nil )
@@ -155,6 +165,23 @@ func gitTag(version string) {
155165 }
156166}
157167
168+ func createSHA256Sums () {
169+ sums := []string {}
170+ for name , p := range binaries {
171+ blob , err := ioutil .ReadFile (filepath .Join (binFolder , p ))
172+ if err != nil {
173+ log .Fatalf ("Failed to read binary '%s': %#v\n " , name , err )
174+ }
175+ bytes := sha256 .Sum256 (blob )
176+ sha := hex .EncodeToString (bytes [:])
177+ sums = append (sums , sha + " " + name )
178+ }
179+ sumsPath := filepath .Join (binFolder , "SHA256SUMS" )
180+ if err := ioutil .WriteFile (sumsPath , []byte (strings .Join (sums , "\n " )+ "\n " ), 0644 ); err != nil {
181+ log .Fatalf ("Failed to write '%s': %#v\n " , sumsPath , err )
182+ }
183+ }
184+
158185func githubCreateRelease (version string ) {
159186 // Create draft release
160187 args := []string {
@@ -167,6 +194,26 @@ func githubCreateRelease(version string) {
167194 if err := run (ghRelease , args , nil ); err != nil {
168195 log .Fatalf ("Failed to create github release: %v\n " , err )
169196 }
197+ // Upload binaries
198+ assets := map [string ]string {
199+ "SHA256SUMS" : "SHA256SUMS" ,
200+ }
201+ for k , v := range binaries {
202+ assets [k ] = v
203+ }
204+ for name , file := range assets {
205+ args := []string {
206+ "upload" ,
207+ "--user" , ghUser ,
208+ "--repo" , ghRepo ,
209+ "--tag" , version ,
210+ "--name" , name ,
211+ "--file" , filepath .Join (binFolder , file ),
212+ }
213+ if err := run (ghRelease , args , nil ); err != nil {
214+ log .Fatalf ("Failed to upload asset '%s': %v\n " , name , err )
215+ }
216+ }
170217 // Finalize release
171218 args = []string {
172219 "edit" ,
0 commit comments