-
Notifications
You must be signed in to change notification settings - Fork 4
/
app.go
70 lines (68 loc) · 1.83 KB
/
app.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package pkg
import (
"encoding/json"
"fmt"
"github.com/fanux/sealbuild/pkg/utils"
"github.com/wonderivan/logger"
"io/ioutil"
"os"
)
func app() {
config := utils.VarsConfig
//生成的文件名称
fileName := config.AppName + config.AppVersion + ".tar.gz"
logger.Warn("app:%s", fileName)
imagesData, _ := ioutil.ReadFile(config.AppImages)
logger.Debug("\njson:%s", string(imagesData))
var images []string
//注意数组转换需要加 &
_ = json.Unmarshal(imagesData, &images)
for _, v := range images {
if v != "" {
utils.DockerPull(v)
}
}
//生成文件
tmpImageName := fmt.Sprintf("/tmp/images_%s.tar", config.AppName+config.AppVersion)
utils.DockerSave(tmpImageName, images)
tmpAppDirName := fmt.Sprintf("/tmp/%s", config.AppName)
_ = os.RemoveAll(tmpAppDirName)
err := os.Mkdir(tmpAppDirName, 0755)
defer func() {
if r := recover(); r != nil {
logger.Error("[globals]创建目录失败: /tmp/"+config.AppName+config.AppVersion, err)
os.Exit(1)
}
}()
if err != nil {
panic(1)
}
_ = os.Rename(tmpImageName, tmpAppDirName+"/images.tar")
//config.json
var shell string
if utils.VarsConfig.AppKustomize {
shell = "kubectl apply -k manifests"
} else {
shell = "kubectl apply -f manifests"
}
writeFile(tmpAppDirName+"/config.json", templateContent("app", shell))
//manifests
_ = os.Mkdir(tmpAppDirName+"/manifests", 0755)
_ = utils.CopyDir(config.AppManifests, tmpAppDirName+"/manifests")
//tar
tmpAppDir, _ := os.Open(tmpAppDirName)
var tarFiles []*os.File
tarFiles = append(tarFiles, tmpAppDir)
logger.Info("[globals]开始创建压缩包。")
err = utils.Compress(tarFiles, config.Path+"/"+fileName)
defer func() {
if r := recover(); r != nil {
logger.Error("[globals]创建tar失败: ", err)
os.Exit(1)
}
}()
if err != nil {
panic(1)
}
logger.Info("[globals]创建压缩包成功。")
}