From 7707f75a02b9abfeaee9b86d2f656de8013557bf Mon Sep 17 00:00:00 2001 From: Mikhail Klementev Date: Sat, 1 Dec 2018 15:11:43 +0000 Subject: [PATCH] Allow to force bump docker container --- kernel.go | 43 ++++++++++++++++++++++++++++++++++++++++++- main.go | 6 +++++- 2 files changed, 47 insertions(+), 2 deletions(-) diff --git a/kernel.go b/kernel.go index bd10428..0e62e60 100644 --- a/kernel.go +++ b/kernel.go @@ -389,7 +389,7 @@ func hasKernel(ki config.KernelInfo, kcfg config.KernelConfig) bool { return false } -func kernelAutogenHandler(kcfg config.KernelConfig, workPath string) (err error) { +func kernelAutogenHandler(workPath string) (err error) { ka, err := config.ReadArtifactConfig(workPath + "/.out-of-tree.toml") if err != nil { return @@ -433,3 +433,44 @@ func kernelAutogenHandler(kcfg config.KernelConfig, workPath string) (err error) err = updateKernelsCfg() return } + +func kernelDockerRegenHandler() (err error) { + dockerImages, err := listDockerImages() + if err != nil { + return + } + + for _, d := range dockerImages { + var imagePath string + imagePath, err = dockerImagePath(config.KernelMask{ + DistroType: d.DistroType, + DistroRelease: d.DistroRelease, + }) + if err != nil { + return + } + + cmd := exec.Command("docker", "build", "-t", + d.ContainerName, imagePath) + var rawOutput []byte + rawOutput, err = cmd.CombinedOutput() + if err != nil { + log.Println("docker build:", string(rawOutput)) + return + } + + err = kickImage(d.ContainerName) + if err != nil { + log.Println("kick image", d.ContainerName, ":", err) + continue + } + + err = copyKernels(d.ContainerName) + if err != nil { + log.Println("copy kernels", d.ContainerName, ":", err) + continue + } + } + + return updateKernelsCfg() +} diff --git a/main.go b/main.go index be284ff..0927714 100644 --- a/main.go +++ b/main.go @@ -59,6 +59,8 @@ func main() { kernelListCommand := kernelCommand.Command("list", "List kernels") kernelAutogenCommand := kernelCommand.Command("autogen", "Generate kernels based on a current config") + kernelDockerRegenCommand := kernelCommand.Command("docker-regen", + "Regenerate kernels config from out_of_tree_* docker images") genCommand := app.Command("gen", "Generate .out-of-tree.toml skeleton") genModuleCommand := genCommand.Command("module", @@ -94,7 +96,9 @@ func main() { case kernelListCommand.FullCommand(): err = kernelListHandler(kcfg) case kernelAutogenCommand.FullCommand(): - err = kernelAutogenHandler(kcfg, *path) + err = kernelAutogenHandler(*path) + case kernelDockerRegenCommand.FullCommand(): + err = kernelDockerRegenHandler() case genModuleCommand.FullCommand(): err = genConfig(config.KernelModule) case genExploitCommand.FullCommand():