aboutsummaryrefslogtreecommitdiffstats
path: root/internal
diff options
context:
space:
mode:
authorbojie <bojie@dexon.org>2018-12-28 13:15:06 +0800
committerWei-Ning Huang <w@dexon.org>2019-04-09 21:32:55 +0800
commit9ca2a528ef0f3819b4921a33a3a2110d291707e0 (patch)
tree5520bb35b6de0ee1844f52f53a55c7b716955f49 /internal
parentfe239cd01509d340d3450e0275f60f0536ec5455 (diff)
downloaddexon-9ca2a528ef0f3819b4921a33a3a2110d291707e0.tar
dexon-9ca2a528ef0f3819b4921a33a3a2110d291707e0.tar.gz
dexon-9ca2a528ef0f3819b4921a33a3a2110d291707e0.tar.bz2
dexon-9ca2a528ef0f3819b4921a33a3a2110d291707e0.tar.lz
dexon-9ca2a528ef0f3819b4921a33a3a2110d291707e0.tar.xz
dexon-9ca2a528ef0f3819b4921a33a3a2110d291707e0.tar.zst
dexon-9ca2a528ef0f3819b4921a33a3a2110d291707e0.zip
app: use gcp storage instead of azure for builds (#81)
* vendor: add dependencies for using GCP storage * app: use gcp storage instead of azure for builds
Diffstat (limited to 'internal')
-rw-r--r--internal/build/gcp.go82
1 files changed, 82 insertions, 0 deletions
diff --git a/internal/build/gcp.go b/internal/build/gcp.go
new file mode 100644
index 000000000..3c312a341
--- /dev/null
+++ b/internal/build/gcp.go
@@ -0,0 +1,82 @@
+package build
+
+import (
+ "io"
+ "os"
+
+ "cloud.google.com/go/storage"
+ "golang.org/x/net/context"
+ "google.golang.org/api/iterator"
+ "google.golang.org/api/option"
+)
+
+type GCPOption struct {
+ CredentialPath string
+}
+
+// GCPFileUpload upload file to GCP storage
+func GCPFileUpload(path, bucket, name string, opt GCPOption) error {
+ ctx := context.Background()
+ client, err := storage.NewClient(ctx, option.WithCredentialsFile(opt.CredentialPath))
+ if err != nil {
+ return err
+ }
+
+ wc := client.Bucket(bucket).Object(name).NewWriter(ctx)
+
+ in, err := os.Open(path)
+ if err != nil {
+ return err
+ }
+ defer in.Close()
+
+ if _, err = io.Copy(wc, in); err != nil {
+ return err
+ }
+ if err := wc.Close(); err != nil {
+ return err
+ }
+
+ return nil
+}
+
+// GCPFileList list files from GCP storage
+func GCPFileList(bucket string, opt GCPOption) ([]*storage.ObjectAttrs, error) {
+ ctx := context.Background()
+ client, err := storage.NewClient(ctx, option.WithCredentialsFile(opt.CredentialPath))
+ if err != nil {
+ return nil, err
+ }
+
+ var list []*storage.ObjectAttrs
+ it := client.Bucket(bucket).Objects(ctx, nil)
+ for {
+ attrs, err := it.Next()
+ if err == iterator.Done {
+ break
+ }
+ if err != nil {
+ return nil, err
+ }
+ list = append(list, attrs)
+ }
+
+ return list, nil
+}
+
+// GCPFileDelete delete files from GCP storage
+func GCPFileDelete(bucket string, objects []*storage.ObjectAttrs, opt GCPOption) error {
+ ctx := context.Background()
+ client, err := storage.NewClient(ctx, option.WithCredentialsFile(opt.CredentialPath))
+ if err != nil {
+ return err
+ }
+
+ for _, obj := range objects {
+ if err := client.Bucket(bucket).Object(obj.Name).Delete(ctx); err != nil {
+ return err
+ }
+ }
+
+ return nil
+}