Documentation
¶
Index ¶
- Constants
- Variables
- func GetContainerBuildOptions(ctx *cli.Context) (*config.ContainerBuildOptions, error)
- func GetImageInstructions(ctx *cli.Context) (*config.ImageNewInstructions, error)
- func NewLogWriter(name string) *chanWriter
- func OnCommand(xc *app.ExecutionContext, gparams *commands.GenericParams, targetRef string, ...)
- func RegisterCommand()
Constants ¶
View Source
const ( Name = "build" Usage = "Analyzes, profiles and optimizes your container image auto-generating Seccomp and AppArmor security profiles" Alias = "b" )
View Source
const ( FlagDeleteFatImage = "delete-generated-fat-image" FlagShowBuildLogs = "show-blogs" FlagPathPerms = "path-perms" FlagPathPermsFile = "path-perms-file" FlagPreservePath = "preserve-path" FlagPreservePathFile = "preserve-path-file" FlagIncludePath = "include-path" FlagIncludePathFile = "include-path-file" FlagIncludeBin = "include-bin" FlagIncludeBinFile = "include-bin-file" FlagIncludeExe = "include-exe" FlagIncludeExeFile = "include-exe-file" FlagIncludeShell = "include-shell" FlagIncludeCertAll = "include-cert-all" FlagIncludeCertBundles = "include-cert-bundles-only" FlagIncludeCertDirs = "include-cert-dirs" FlagIncludeCertPKAll = "include-cert-pk-all" FlagIncludeCertPKDirs = "include-cert-pk-dirs" FlagIncludeNew = "include-new" FlagKeepTmpArtifacts = "keep-tmp-artifacts" FlagKeepPerms = "keep-perms" //Flags to edit (modify, add and remove) image metadata FlagNewEntrypoint = "new-entrypoint" FlagNewCmd = "new-cmd" FlagNewLabel = "new-label" FlagNewVolume = "new-volume" FlagNewExpose = "new-expose" FlagNewWorkdir = "new-workdir" FlagNewEnv = "new-env" FlagRemoveVolume = "remove-volume" FlagRemoveExpose = "remove-expose" FlagRemoveEnv = "remove-env" FlagRemoveLabel = "remove-label" FlagTag = "tag" FlagImageOverrides = "image-overrides" //Flags to build fat images from Dockerfile FlagTagFat = "tag-fat" FlagBuildFromDockerfile = "dockerfile" FlagDockerfileContext = "dockerfile-context" FlagCBOAddHost = "cbo-add-host" FlagCBOBuildArg = "cbo-build-arg" FlagCBOLabel = "cbo-label" FlagCBOTarget = "cbo-target" FlagCBONetwork = "cbo-network" FlagCBOCacheFrom = "cbo-cache-from" )
Build command flag names
View Source
const ( FlagDeleteFatImageUsage = "Delete generated fat image requires --dockerfile flag" FlagShowBuildLogsUsage = "Show image build logs" FlagPathPermsUsage = "Set path permissions in optimized image" FlagPathPermsFileUsage = "File with path permissions to set" FlagPreservePathUsage = "" /* 128-byte string literal not displayed */ FlagPreservePathFileUsage = "" /* 146-byte string literal not displayed */ FlagIncludePathUsage = "Keep path from original image" FlagIncludePathFileUsage = "File with paths to keep from original image" FlagIncludeBinUsage = "Keep binary from original image (executable or shared object using its absolute path)" FlagIncludeExeUsage = "Keep executable from original image (by executable name)" FlagIncludeShellUsage = "Keep basic shell functionality" FlagIncludeCertAllUsage = "Keep all discovered cert files" FlagIncludeCertBundlesUsage = "Keep only cert bundles" FlagIncludeCertDirsUsage = "Keep known cert directories and all files in them" FlagIncludeCertPKAllUsage = "Keep all discovered cert private keys" FlagIncludeCertPKDirsUsage = "Keep known cert private key directories and all files in them" FlagIncludeNewUsage = "Keep new files created by target during dynamic analysis" FlagKeepTmpArtifactsUsage = "Keep temporary artifacts when command is done" FlagKeepPermsUsage = "Keep artifact permissions as-is" FlagNewEntrypointUsage = "New ENTRYPOINT instruction for the optimized image" FlagNewCmdUsage = "New CMD instruction for the optimized image" FlagNewVolumeUsage = "New VOLUME instructions for the optimized image" FlagNewLabelUsage = "New LABEL instructions for the optimized image" FlagNewExposeUsage = "New EXPOSE instructions for the optimized image" FlagNewWorkdirUsage = "New WORKDIR instruction for the optimized image" FlagNewEnvUsage = "New ENV instructions for the optimized image" FlagRemoveExposeUsage = "Remove EXPOSE instructions for the optimized image" FlagRemoveEnvUsage = "Remove ENV instructions for the optimized image" FlagRemoveLabelUsage = "Remove LABEL instructions for the optimized image" FlagRemoveVolumeUsage = "Remove VOLUME instructions for the optimized image" FlagTagUsage = "Custom tags for the generated image" FlagImageOverridesUsage = "" /* 171-byte string literal not displayed */ FlagIncludeBinFileUsage = "File with shared binary file names to include from image" FlagIncludeExeFileUsage = "File with executable file names to include from image" FlagTagFatUsage = "Custom tag for the fat image built from Dockerfile" FlagBuildFromDockerfileUsage = "The source Dockerfile name to build the fat image before it's optimized" FlagDockerfileContextUsage = "The build context directory when building source Dockerfile" FlagCBOAddHostUsage = "Add an extra host-to-IP mapping in /etc/hosts to use when building an image" FlagCBOBuildArgUsage = "Add a build-time variable" FlagCBOLabelUsage = "Add a label when building from Dockerfiles" FlagCBOTargetUsage = "Target stage to build for multi-stage Dockerfiles" FlagCBONetworkUsage = "Networking mode to use for the RUN instructions at build-time" FlagCBOCacheFromUsage = "Add an image to the build cache" )
Build command flag usage info
Variables ¶
View Source
var CLI = &cli.Command{ Name: Name, Aliases: []string{Alias}, Usage: Usage, Flags: []cli.Flag{ commands.Cflag(commands.FlagTarget), commands.Cflag(commands.FlagPull), commands.Cflag(commands.FlagDockerConfigPath), commands.Cflag(commands.FlagRegistryAccount), commands.Cflag(commands.FlagRegistrySecret), commands.Cflag(commands.FlagShowPullLogs), commands.Cflag(commands.FlagComposeFile), commands.Cflag(commands.FlagTargetComposeSvc), commands.Cflag(commands.FlagComposeSvcNoPorts), commands.Cflag(commands.FlagDepExcludeComposeSvcAll), commands.Cflag(commands.FlagDepIncludeComposeSvc), commands.Cflag(commands.FlagDepExcludeComposeSvc), commands.Cflag(commands.FlagDepIncludeComposeSvcDeps), commands.Cflag(commands.FlagDepIncludeTargetComposeSvcDeps), commands.Cflag(commands.FlagComposeNet), commands.Cflag(commands.FlagComposeEnvNoHost), commands.Cflag(commands.FlagComposeEnvFile), commands.Cflag(commands.FlagComposeProjectName), commands.Cflag(commands.FlagComposeWorkdir), commands.Cflag(commands.FlagContainerProbeComposeSvc), commands.Cflag(commands.FlagHTTPProbeOff), commands.Cflag(commands.FlagHTTPProbe), commands.Cflag(commands.FlagHTTPProbeCmd), commands.Cflag(commands.FlagHTTPProbeCmdFile), commands.Cflag(commands.FlagHTTPProbeStartWait), commands.Cflag(commands.FlagHTTPProbeRetryCount), commands.Cflag(commands.FlagHTTPProbeRetryWait), commands.Cflag(commands.FlagHTTPProbePorts), commands.Cflag(commands.FlagHTTPProbeFull), commands.Cflag(commands.FlagHTTPProbeExitOnFailure), commands.Cflag(commands.FlagHTTPProbeCrawl), commands.Cflag(commands.FlagHTTPCrawlMaxDepth), commands.Cflag(commands.FlagHTTPCrawlMaxPageCount), commands.Cflag(commands.FlagHTTPCrawlConcurrency), commands.Cflag(commands.FlagHTTPMaxConcurrentCrawlers), commands.Cflag(commands.FlagHTTPProbeAPISpec), commands.Cflag(commands.FlagHTTPProbeAPISpecFile), commands.Cflag(commands.FlagHTTPProbeExec), commands.Cflag(commands.FlagHTTPProbeExecFile), commands.Cflag(commands.FlagHTTPProbeProxyEndpoint), commands.Cflag(commands.FlagHTTPProbeProxyPort), commands.Cflag(commands.FlagPublishPort), commands.Cflag(commands.FlagPublishExposedPorts), commands.Cflag(commands.FlagRunTargetAsUser), commands.Cflag(commands.FlagShowContainerLogs), cflag(FlagShowBuildLogs), commands.Cflag(commands.FlagCopyMetaArtifacts), commands.Cflag(commands.FlagRemoveFileArtifacts), commands.Cflag(commands.FlagExec), commands.Cflag(commands.FlagExecFile), cflag(FlagTag), cflag(FlagImageOverrides), commands.Cflag(commands.FlagCRORuntime), commands.Cflag(commands.FlagCROHostConfigFile), commands.Cflag(commands.FlagCROSysctl), commands.Cflag(commands.FlagCROShmSize), commands.Cflag(commands.FlagUser), commands.Cflag(commands.FlagEntrypoint), commands.Cflag(commands.FlagCmd), commands.Cflag(commands.FlagWorkdir), commands.Cflag(commands.FlagEnv), commands.Cflag(commands.FlagLabel), commands.Cflag(commands.FlagVolume), commands.Cflag(commands.FlagLink), commands.Cflag(commands.FlagEtcHostsMap), commands.Cflag(commands.FlagContainerDNS), commands.Cflag(commands.FlagContainerDNSSearch), commands.Cflag(commands.FlagNetwork), commands.Cflag(commands.FlagHostname), commands.Cflag(commands.FlagExpose), commands.Cflag(commands.FlagMount), cflag(FlagBuildFromDockerfile), cflag(FlagDockerfileContext), cflag(FlagTagFat), cflag(FlagCBOAddHost), cflag(FlagCBOBuildArg), cflag(FlagCBOCacheFrom), cflag(FlagCBOLabel), cflag(FlagCBOTarget), cflag(FlagCBONetwork), cflag(FlagDeleteFatImage), cflag(FlagNewEntrypoint), cflag(FlagNewCmd), cflag(FlagNewExpose), cflag(FlagNewWorkdir), cflag(FlagNewEnv), cflag(FlagNewVolume), cflag(FlagNewLabel), cflag(FlagRemoveExpose), cflag(FlagRemoveEnv), cflag(FlagRemoveLabel), cflag(FlagRemoveVolume), commands.Cflag(commands.FlagExcludeMounts), commands.Cflag(commands.FlagExcludePattern), cflag(FlagPreservePath), cflag(FlagPreservePathFile), cflag(FlagIncludePath), cflag(FlagIncludePathFile), cflag(FlagIncludeBin), cflag(FlagIncludeBinFile), cflag(FlagIncludeExeFile), cflag(FlagIncludeExe), cflag(FlagIncludeShell), cflag(FlagIncludeCertAll), cflag(FlagIncludeCertBundles), cflag(FlagIncludeCertDirs), cflag(FlagIncludeCertPKAll), cflag(FlagIncludeCertPKDirs), cflag(FlagIncludeNew), cflag(FlagKeepTmpArtifacts), cflag(FlagKeepPerms), cflag(FlagPathPerms), cflag(FlagPathPermsFile), commands.Cflag(commands.FlagContinueAfter), commands.Cflag(commands.FlagUseLocalMounts), commands.Cflag(commands.FlagUseSensorVolume), commands.Cflag(commands.FlagRTAOnbuildBaseImage), commands.Cflag(commands.FlagSensorIPCEndpoint), commands.Cflag(commands.FlagSensorIPCMode), }, Action: func(ctx *cli.Context) error { xc := app.NewExecutionContext(Name) cbOpts, err := GetContainerBuildOptions(ctx) if err != nil { xc.Out.Error("param.error.container.build.options", err.Error()) xc.Out.State("exited", ovars{ "exit.code": -1, }) xc.Exit(-1) } deleteFatImage := ctx.Bool(commands.FlagDeleteFatImage) if cbOpts.Dockerfile == "" { deleteFatImage = false } composeFiles := ctx.StringSlice(commands.FlagComposeFile) targetComposeSvc := ctx.String(commands.FlagTargetComposeSvc) composeSvcNoPorts := ctx.Bool(commands.FlagComposeSvcNoPorts) depExcludeComposeSvcAll := ctx.Bool(commands.FlagDepExcludeComposeSvcAll) depIncludeComposeSvcDeps := ctx.String(commands.FlagDepIncludeComposeSvcDeps) depIncludeTargetComposeSvcDeps := ctx.Bool(commands.FlagDepIncludeTargetComposeSvcDeps) depIncludeComposeSvcs := ctx.StringSlice(commands.FlagDepIncludeComposeSvc) depExcludeComposeSvcs := ctx.StringSlice(commands.FlagDepExcludeComposeSvc) composeNets := ctx.StringSlice(commands.FlagComposeNet) composeEnvNoHost := ctx.Bool(commands.FlagComposeEnvNoHost) composeEnvVars, err := commands.ParseEnvFile(ctx.String(commands.FlagComposeEnvFile)) if err != nil { xc.Out.Error("param.error.compose.env.file", err.Error()) xc.Out.State("exited", ovars{ "exit.code": -1, }) xc.Exit(-1) } composeProjectName := ctx.String(commands.FlagComposeProjectName) composeWorkdir := ctx.String(commands.FlagComposeWorkdir) containerProbeComposeSvc := ctx.String(commands.FlagContainerProbeComposeSvc) var targetRef string if len(composeFiles) > 0 && targetComposeSvc != "" { targetRef = targetComposeSvc } else { if cbOpts.Dockerfile == "" { targetRef = ctx.String(commands.FlagTarget) if targetRef == "" { if ctx.Args().Len() < 1 { xc.Out.Error("param.target", "missing image ID/name") cli.ShowCommandHelp(ctx, Name) return nil } else { targetRef = ctx.Args().First() } } } else { targetRef = cbOpts.DockerfileContext if targetRef == "" { if ctx.Args().Len() < 1 { xc.Out.Error("param.target", "missing Dockerfile build context directory") cli.ShowCommandHelp(ctx, Name) return nil } else { targetRef = ctx.Args().First() } } } } if targetRef == "" { xc.Out.Error("param.target", "missing target - make sure to set one of the target params") cli.ShowCommandHelp(ctx, Name) return nil } gcvalues, err := commands.GlobalFlagValues(ctx) if err != nil { xc.Out.Error("param.global", err.Error()) xc.Out.State("exited", ovars{ "exit.code": -1, }) xc.Exit(-1) } crOpts, err := commands.GetContainerRunOptions(ctx) if err != nil { xc.Out.Error("param.error.container.run.options", err.Error()) xc.Out.State("exited", ovars{ "exit.code": -1, }) xc.Exit(-1) } doPull := ctx.Bool(commands.FlagPull) dockerConfigPath := ctx.String(commands.FlagDockerConfigPath) registryAccount := ctx.String(commands.FlagRegistryAccount) registrySecret := ctx.String(commands.FlagRegistrySecret) doShowPullLogs := ctx.Bool(commands.FlagShowPullLogs) doRmFileArtifacts := ctx.Bool(commands.FlagRemoveFileArtifacts) doCopyMetaArtifacts := ctx.String(commands.FlagCopyMetaArtifacts) portBindings, err := commands.ParsePortBindings(ctx.StringSlice(commands.FlagPublishPort)) if err != nil { xc.Out.Error("param.publish.port", err.Error()) xc.Out.State("exited", ovars{ "exit.code": -1, }) xc.Exit(-1) } doPublishExposedPorts := ctx.Bool(commands.FlagPublishExposedPorts) httpCrawlMaxDepth := ctx.Int(commands.FlagHTTPCrawlMaxDepth) httpCrawlMaxPageCount := ctx.Int(commands.FlagHTTPCrawlMaxPageCount) httpCrawlConcurrency := ctx.Int(commands.FlagHTTPCrawlConcurrency) httpMaxConcurrentCrawlers := ctx.Int(commands.FlagHTTPMaxConcurrentCrawlers) doHTTPProbeCrawl := ctx.Bool(commands.FlagHTTPProbeCrawl) doHTTPProbe := ctx.Bool(commands.FlagHTTPProbe) if doHTTPProbe && ctx.Bool(commands.FlagHTTPProbeOff) { doHTTPProbe = false } httpProbeCmds, err := commands.GetHTTPProbes(ctx) if err != nil { xc.Out.Error("param.http.probe", err.Error()) xc.Out.State("exited", ovars{ "exit.code": -1, }) xc.Exit(-1) } if doHTTPProbe { xc.Out.Info("param.http.probe", ovars{ "message": "using default probe", }) defaultCmd := config.HTTPProbeCmd{ Protocol: "http", Method: "GET", Resource: "/", } if doHTTPProbeCrawl { defaultCmd.Crawl = true } httpProbeCmds = append(httpProbeCmds, defaultCmd) } if len(httpProbeCmds) > 0 { doHTTPProbe = true } httpProbeStartWait := ctx.Int(commands.FlagHTTPProbeStartWait) httpProbeRetryCount := ctx.Int(commands.FlagHTTPProbeRetryCount) httpProbeRetryWait := ctx.Int(commands.FlagHTTPProbeRetryWait) httpProbePorts, err := commands.ParseHTTPProbesPorts(ctx.String(commands.FlagHTTPProbePorts)) if err != nil { xc.Out.Error("param.http.probe.ports", err.Error()) xc.Out.State("exited", ovars{ "exit.code": -1, }) xc.Exit(-1) } doHTTPProbeFull := ctx.Bool(commands.FlagHTTPProbeFull) doHTTPProbeExitOnFailure := ctx.Bool(commands.FlagHTTPProbeExitOnFailure) httpProbeAPISpecs := ctx.StringSlice(commands.FlagHTTPProbeAPISpec) if len(httpProbeAPISpecs) > 0 { doHTTPProbe = true } httpProbeAPISpecFiles, fileErrors := commands.ValidateFiles(ctx.StringSlice(commands.FlagHTTPProbeAPISpecFile)) if len(fileErrors) > 0 { var err error for k, v := range fileErrors { err = v xc.Out.Info("error", ovars{ "file": k, "error": err, }) xc.Out.Error("param.error.http.api.spec.file", err.Error()) xc.Out.State("exited", ovars{ "exit.code": -1, }) xc.Exit(-1) } return err } if len(httpProbeAPISpecFiles) > 0 { doHTTPProbe = true } httpProbeApps := ctx.StringSlice(commands.FlagHTTPProbeExec) moreProbeApps, err := commands.ParseHTTPProbeExecFile(ctx.String(commands.FlagHTTPProbeExecFile)) if err != nil { xc.Out.Error("param.http.probe.exec.file", err.Error()) xc.Out.State("exited", ovars{ "exit.code": -1, }) xc.Exit(-1) } if len(moreProbeApps) > 0 { httpProbeApps = append(httpProbeApps, moreProbeApps...) } httpProbeProxyEndpoint := ctx.String(commands.FlagHTTPProbeProxyEndpoint) httpProbeProxyPort := ctx.Int(commands.FlagHTTPProbeProxyPort) doKeepPerms := ctx.Bool(FlagKeepPerms) doRunTargetAsUser := ctx.Bool(commands.FlagRunTargetAsUser) doShowContainerLogs := ctx.Bool(commands.FlagShowContainerLogs) doShowBuildLogs := ctx.Bool(FlagShowBuildLogs) outputTags := ctx.StringSlice(FlagTag) doImageOverrides := ctx.String(FlagImageOverrides) overrides, err := commands.GetContainerOverrides(ctx) if err != nil { xc.Out.Error("param.error.image.overrides", err.Error()) xc.Out.State("exited", ovars{ "exit.code": -1, }) xc.Exit(-1) } instructions, err := GetImageInstructions(ctx) if err != nil { xc.Out.Error("param.error.image.instructions", err.Error()) xc.Out.State("exited", ovars{ "exit.code": -1, }) xc.Exit(-1) } volumeMounts, err := commands.ParseVolumeMounts(ctx.StringSlice(commands.FlagMount)) if err != nil { xc.Out.Error("param.error.mount", err.Error()) xc.Out.State("exited", ovars{ "exit.code": -1, }) xc.Exit(-1) } excludePatterns := commands.ParsePaths(ctx.StringSlice(commands.FlagExcludePattern)) preservePaths := commands.ParsePaths(ctx.StringSlice(FlagPreservePath)) morePreservePaths, err := commands.ParsePathsFile(ctx.String(FlagPreservePathFile)) if err != nil { xc.Out.Error("param.error.preserve.path.file", err.Error()) xc.Out.State("exited", ovars{ "exit.code": -1, }) xc.Exit(-1) } else { for k, v := range morePreservePaths { preservePaths[k] = v } } includePaths := commands.ParsePaths(ctx.StringSlice(FlagIncludePath)) moreIncludePaths, err := commands.ParsePathsFile(ctx.String(FlagIncludePathFile)) if err != nil { xc.Out.Error("param.error.include.path.file", err.Error()) xc.Out.State("exited", ovars{ "exit.code": -1, }) xc.Exit(-1) } else { for k, v := range moreIncludePaths { includePaths[k] = v } } pathPerms := commands.ParsePaths(ctx.StringSlice(FlagPathPerms)) morePathPerms, err := commands.ParsePathsFile(ctx.String(FlagPathPermsFile)) if err != nil { xc.Out.Error("param.error.path.perms.file", err.Error()) xc.Out.State("exited", ovars{ "exit.code": -1, }) xc.Exit(-1) } else { for k, v := range morePathPerms { pathPerms[k] = v } } includeBins := commands.ParsePaths(ctx.StringSlice(FlagIncludeBin)) moreIncludeBins, err := commands.ParsePathsFile(ctx.String(FlagIncludeBinFile)) if err != nil { xc.Out.Error("param.error.include.bin.file", err.Error()) xc.Out.State("exited", ovars{ "exit.code": -1, }) xc.Exit(-1) } else { for k, v := range moreIncludeBins { includeBins[k] = v } } includeExes := commands.ParsePaths(ctx.StringSlice(FlagIncludeExe)) moreIncludeExes, err := commands.ParsePathsFile(ctx.String(FlagIncludeExeFile)) if err != nil { xc.Out.Error("param.error.include.exe.file", err.Error()) xc.Out.State("exited", ovars{ "exit.code": -1, }) xc.Exit(-1) } else { for k, v := range moreIncludeExes { includeExes[k] = v } } doIncludeShell := ctx.Bool(FlagIncludeShell) doIncludeCertAll := ctx.Bool(FlagIncludeCertAll) doIncludeCertBundles := ctx.Bool(FlagIncludeCertBundles) doIncludeCertDirs := ctx.Bool(FlagIncludeCertDirs) doIncludeCertPKAll := ctx.Bool(FlagIncludeCertPKAll) doIncludeCertPKDirs := ctx.Bool(FlagIncludeCertPKDirs) doIncludeNew := ctx.Bool(FlagIncludeNew) doUseLocalMounts := ctx.Bool(commands.FlagUseLocalMounts) doUseSensorVolume := ctx.String(commands.FlagUseSensorVolume) doKeepTmpArtifacts := ctx.Bool(FlagKeepTmpArtifacts) doExcludeMounts := ctx.Bool(commands.FlagExcludeMounts) if doExcludeMounts { for mpath := range volumeMounts { excludePatterns[mpath] = nil mpattern := fmt.Sprintf("%s/**", mpath) excludePatterns[mpattern] = nil } } continueAfter, err := commands.GetContinueAfter(ctx) if err != nil { xc.Out.Error("param.error.continue.after", err.Error()) xc.Out.State("exited", ovars{ "exit.code": -1, }) xc.Exit(-1) } if continueAfter.Mode == config.CAMProbe && !doHTTPProbe { continueAfter.Mode = "" xc.Out.Info("exec", ovars{ "message": "changing continue-after from probe to nothing because http-probe is disabled", }) } execCmd := ctx.String(commands.FlagExec) execFile := ctx.String(commands.FlagExecFile) if strings.Contains(continueAfter.Mode, config.CAMExec) && len(execCmd) == 0 && len(execFile) == 0 { continueAfter.Mode = config.CAMEnter xc.Out.Info("exec", ovars{ "message": "changing continue-after from exec to enter because there are no exec flags", }) } if len(execCmd) != 0 && len(execFile) != 0 { xc.Out.Error("param.error.exec", "fatal: cannot use both --exec and --exec-file") xc.Out.State("exited", ovars{ "exit.code": -1, }) xc.Exit(-1) } var execFileCmd []byte if len(execFile) > 0 { execFileCmd, err = ioutil.ReadFile(execFile) errutil.FailOn(err) if !strings.Contains(continueAfter.Mode, config.CAMExec) { if continueAfter.Mode == "" { continueAfter.Mode = config.CAMExec } else { continueAfter.Mode = fmt.Sprintf("%s&%s", continueAfter.Mode, config.CAMExec) } xc.Out.Info("exec", ovars{ "message": fmt.Sprintf("updating continue-after mode to %s", continueAfter.Mode), }) } } else if len(execCmd) > 0 { if !strings.Contains(continueAfter.Mode, config.CAMExec) { if continueAfter.Mode == "" { continueAfter.Mode = config.CAMExec } else { continueAfter.Mode = fmt.Sprintf("%s&%s", continueAfter.Mode, config.CAMExec) } xc.Out.Info("exec", ovars{ "message": fmt.Sprintf("updating continue-after mode to %s", continueAfter.Mode), }) } } if containerProbeComposeSvc != "" { if !strings.Contains(continueAfter.Mode, config.CAMContainerProbe) { if continueAfter.Mode == "" { continueAfter.Mode = config.CAMContainerProbe } else { continueAfter.Mode = fmt.Sprintf("%s&%s", continueAfter.Mode, config.CAMContainerProbe) } xc.Out.Info("continue.after", ovars{ "message": fmt.Sprintf("updating mode to %s", continueAfter.Mode), }) } } if continueAfter.Mode == "" { continueAfter.Mode = config.CAMEnter xc.Out.Info("exec", ovars{ "message": "changing continue-after to enter", }) } commandReport := ctx.String(commands.FlagCommandReport) if commandReport == "off" { commandReport = "" } rtaOnbuildBaseImage := ctx.Bool(commands.FlagRTAOnbuildBaseImage) rtaSourcePT := ctx.Bool(commands.FlagRTASourcePT) OnCommand( xc, gcvalues, targetRef, doPull, dockerConfigPath, registryAccount, registrySecret, doShowPullLogs, composeFiles, targetComposeSvc, composeSvcNoPorts, depExcludeComposeSvcAll, depIncludeComposeSvcDeps, depIncludeTargetComposeSvcDeps, depIncludeComposeSvcs, depExcludeComposeSvcs, composeNets, composeEnvVars, composeEnvNoHost, composeWorkdir, composeProjectName, containerProbeComposeSvc, cbOpts, crOpts, outputTags, doHTTPProbe, httpProbeCmds, httpProbeStartWait, httpProbeRetryCount, httpProbeRetryWait, httpProbePorts, httpCrawlMaxDepth, httpCrawlMaxPageCount, httpCrawlConcurrency, httpMaxConcurrentCrawlers, doHTTPProbeFull, doHTTPProbeExitOnFailure, httpProbeAPISpecs, httpProbeAPISpecFiles, httpProbeApps, httpProbeProxyEndpoint, httpProbeProxyPort, portBindings, doPublishExposedPorts, doRmFileArtifacts, doCopyMetaArtifacts, doRunTargetAsUser, doShowContainerLogs, doShowBuildLogs, commands.ParseImageOverrides(doImageOverrides), overrides, instructions, ctx.StringSlice(commands.FlagLink), ctx.StringSlice(commands.FlagEtcHostsMap), ctx.StringSlice(commands.FlagContainerDNS), ctx.StringSlice(commands.FlagContainerDNSSearch), volumeMounts, doKeepPerms, pathPerms, excludePatterns, preservePaths, includePaths, includeBins, includeExes, doIncludeShell, doIncludeCertAll, doIncludeCertBundles, doIncludeCertDirs, doIncludeCertPKAll, doIncludeCertPKDirs, doIncludeNew, doUseLocalMounts, doUseSensorVolume, doKeepTmpArtifacts, continueAfter, execCmd, string(execFileCmd), deleteFatImage, rtaOnbuildBaseImage, rtaSourcePT, ctx.String(commands.FlagSensorIPCEndpoint), ctx.String(commands.FlagSensorIPCMode), ctx.String(commands.FlagLogLevel), ctx.String(commands.FlagLogFormat)) return nil }, }
View Source
var CommandFlagSuggestions = &commands.FlagSuggestions{ Names: []prompt.Suggest{ {Text: commands.FullFlagName(commands.FlagTarget), Description: commands.FlagTargetUsage}, {Text: commands.FullFlagName(commands.FlagComposeFile), Description: commands.FlagComposeFileUsage}, {Text: commands.FullFlagName(commands.FlagTargetComposeSvc), Description: commands.FlagTargetComposeSvcUsage}, {Text: commands.FullFlagName(commands.FlagDepIncludeComposeSvc), Description: commands.FlagDepIncludeComposeSvcUsage}, {Text: commands.FullFlagName(commands.FlagDepExcludeComposeSvc), Description: commands.FlagDepExcludeComposeSvcUsage}, {Text: commands.FullFlagName(commands.FlagDepIncludeComposeSvcDeps), Description: commands.FlagDepIncludeComposeSvcDepsUsage}, {Text: commands.FullFlagName(commands.FlagComposeNet), Description: commands.FlagComposeNetUsage}, {Text: commands.FullFlagName(commands.FlagDepIncludeTargetComposeSvcDeps), Description: commands.FlagDepIncludeTargetComposeSvcDepsUsage}, {Text: commands.FullFlagName(commands.FlagComposeEnvNoHost), Description: commands.FlagComposeEnvNoHostUsage}, {Text: commands.FullFlagName(commands.FlagComposeEnvFile), Description: commands.FlagComposeEnvFileUsage}, {Text: commands.FullFlagName(commands.FlagComposeProjectName), Description: commands.FlagComposeProjectNameUsage}, {Text: commands.FullFlagName(commands.FlagComposeWorkdir), Description: commands.FlagComposeWorkdirUsage}, {Text: commands.FullFlagName(commands.FlagContainerProbeComposeSvc), Description: commands.FlagContainerProbeComposeSvcUsage}, {Text: commands.FullFlagName(commands.FlagPull), Description: commands.FlagPullUsage}, {Text: commands.FullFlagName(commands.FlagShowPullLogs), Description: commands.FlagShowPullLogsUsage}, {Text: commands.FullFlagName(commands.FlagRegistryAccount), Description: commands.FlagRegistryAccountUsage}, {Text: commands.FullFlagName(commands.FlagRegistrySecret), Description: commands.FlagRegistrySecretUsage}, {Text: commands.FullFlagName(commands.FlagDockerConfigPath), Description: commands.FlagDockerConfigPathUsage}, {Text: commands.FullFlagName(FlagShowBuildLogs), Description: FlagShowBuildLogsUsage}, {Text: commands.FullFlagName(commands.FlagShowContainerLogs), Description: commands.FlagShowContainerLogsUsage}, {Text: commands.FullFlagName(commands.FlagCRORuntime), Description: commands.FlagCRORuntimeUsage}, {Text: commands.FullFlagName(commands.FlagCROHostConfigFile), Description: commands.FlagCROHostConfigFileUsage}, {Text: commands.FullFlagName(commands.FlagCROSysctl), Description: commands.FlagCROSysctlUsage}, {Text: commands.FullFlagName(commands.FlagCROShmSize), Description: commands.FlagCROShmSizeUsage}, {Text: commands.FullFlagName(commands.FlagHTTPProbeOff), Description: commands.FlagHTTPProbeOffUsage}, {Text: commands.FullFlagName(commands.FlagHTTPProbe), Description: commands.FlagHTTPProbeUsage}, {Text: commands.FullFlagName(commands.FlagHTTPProbeCmd), Description: commands.FlagHTTPProbeCmdUsage}, {Text: commands.FullFlagName(commands.FlagHTTPProbeCmdFile), Description: commands.FlagHTTPProbeCmdFileUsage}, {Text: commands.FullFlagName(commands.FlagHTTPProbeStartWait), Description: commands.FlagHTTPProbeStartWaitUsage}, {Text: commands.FullFlagName(commands.FlagHTTPProbeRetryCount), Description: commands.FlagHTTPProbeRetryCountUsage}, {Text: commands.FullFlagName(commands.FlagHTTPProbeRetryWait), Description: commands.FlagHTTPProbeRetryWaitUsage}, {Text: commands.FullFlagName(commands.FlagHTTPProbePorts), Description: commands.FlagHTTPProbePortsUsage}, {Text: commands.FullFlagName(commands.FlagHTTPProbeFull), Description: commands.FlagHTTPProbeFullUsage}, {Text: commands.FullFlagName(commands.FlagHTTPProbeExitOnFailure), Description: commands.FlagHTTPProbeExitOnFailureUsage}, {Text: commands.FullFlagName(commands.FlagHTTPProbeCrawl), Description: commands.FlagHTTPProbeCrawlUsage}, {Text: commands.FullFlagName(commands.FlagHTTPCrawlMaxDepth), Description: commands.FlagHTTPCrawlMaxDepthUsage}, {Text: commands.FullFlagName(commands.FlagHTTPCrawlMaxPageCount), Description: commands.FlagHTTPCrawlMaxPageCountUsage}, {Text: commands.FullFlagName(commands.FlagHTTPCrawlConcurrency), Description: commands.FlagHTTPCrawlConcurrencyUsage}, {Text: commands.FullFlagName(commands.FlagHTTPMaxConcurrentCrawlers), Description: commands.FlagHTTPMaxConcurrentCrawlersUsage}, {Text: commands.FullFlagName(commands.FlagHTTPProbeAPISpec), Description: commands.FlagHTTPProbeAPISpecUsage}, {Text: commands.FullFlagName(commands.FlagHTTPProbeAPISpecFile), Description: commands.FlagHTTPProbeAPISpecFileUsage}, {Text: commands.FullFlagName(commands.FlagHTTPProbeExec), Description: commands.FlagHTTPProbeExecUsage}, {Text: commands.FullFlagName(commands.FlagHTTPProbeExecFile), Description: commands.FlagHTTPProbeExecFileUsage}, {Text: commands.FullFlagName(commands.FlagPublishPort), Description: commands.FlagPublishPortUsage}, {Text: commands.FullFlagName(commands.FlagPublishExposedPorts), Description: commands.FlagPublishExposedPortsUsage}, {Text: commands.FullFlagName(FlagKeepPerms), Description: FlagKeepPermsUsage}, {Text: commands.FullFlagName(commands.FlagRunTargetAsUser), Description: commands.FlagRunTargetAsUserUsage}, {Text: commands.FullFlagName(commands.FlagCopyMetaArtifacts), Description: commands.FlagCopyMetaArtifactsUsage}, {Text: commands.FullFlagName(commands.FlagRemoveFileArtifacts), Description: commands.FlagRemoveFileArtifactsUsage}, {Text: commands.FullFlagName(FlagTag), Description: FlagTagUsage}, {Text: commands.FullFlagName(FlagImageOverrides), Description: FlagImageOverridesUsage}, {Text: commands.FullFlagName(commands.FlagUser), Description: commands.FlagUserUsage}, {Text: commands.FullFlagName(commands.FlagEntrypoint), Description: commands.FlagEntrypointUsage}, {Text: commands.FullFlagName(commands.FlagCmd), Description: commands.FlagCmdUsage}, {Text: commands.FullFlagName(commands.FlagWorkdir), Description: commands.FlagWorkdirUsage}, {Text: commands.FullFlagName(commands.FlagEnv), Description: commands.FlagEnvUsage}, {Text: commands.FullFlagName(commands.FlagLabel), Description: commands.FlagLabelUsage}, {Text: commands.FullFlagName(commands.FlagVolume), Description: commands.FlagVolumeUsage}, {Text: commands.FullFlagName(commands.FlagLink), Description: commands.FlagLinkUsage}, {Text: commands.FullFlagName(commands.FlagEtcHostsMap), Description: commands.FlagEtcHostsMapUsage}, {Text: commands.FullFlagName(commands.FlagContainerDNS), Description: commands.FlagContainerDNSUsage}, {Text: commands.FullFlagName(commands.FlagContainerDNSSearch), Description: commands.FlagContainerDNSSearchUsage}, {Text: commands.FullFlagName(commands.FlagNetwork), Description: commands.FlagNetworkUsage}, {Text: commands.FullFlagName(commands.FlagHostname), Description: commands.FlagHostnameUsage}, {Text: commands.FullFlagName(commands.FlagExpose), Description: commands.FlagExposeUsage}, {Text: commands.FullFlagName(FlagNewEntrypoint), Description: FlagNewEntrypointUsage}, {Text: commands.FullFlagName(FlagNewCmd), Description: FlagNewCmdUsage}, {Text: commands.FullFlagName(FlagNewExpose), Description: FlagNewExposeUsage}, {Text: commands.FullFlagName(FlagNewWorkdir), Description: FlagNewWorkdirUsage}, {Text: commands.FullFlagName(FlagNewEnv), Description: FlagNewEnvUsage}, {Text: commands.FullFlagName(FlagNewVolume), Description: FlagNewVolumeUsage}, {Text: commands.FullFlagName(FlagNewLabel), Description: FlagNewLabelUsage}, {Text: commands.FullFlagName(FlagRemoveExpose), Description: FlagRemoveExposeUsage}, {Text: commands.FullFlagName(FlagRemoveEnv), Description: FlagRemoveEnvUsage}, {Text: commands.FullFlagName(FlagRemoveLabel), Description: FlagRemoveLabelUsage}, {Text: commands.FullFlagName(FlagRemoveVolume), Description: FlagRemoveVolumeUsage}, {Text: commands.FullFlagName(commands.FlagExcludeMounts), Description: commands.FlagExcludeMountsUsage}, {Text: commands.FullFlagName(commands.FlagExcludePattern), Description: commands.FlagExcludePatternUsage}, {Text: commands.FullFlagName(FlagPathPerms), Description: FlagPathPermsUsage}, {Text: commands.FullFlagName(FlagPathPermsFile), Description: FlagPathPermsFileUsage}, {Text: commands.FullFlagName(FlagPreservePath), Description: FlagPreservePathUsage}, {Text: commands.FullFlagName(FlagPreservePathFile), Description: FlagPreservePathFileUsage}, {Text: commands.FullFlagName(FlagIncludePath), Description: FlagIncludePathUsage}, {Text: commands.FullFlagName(FlagIncludePathFile), Description: FlagIncludePathFileUsage}, {Text: commands.FullFlagName(FlagIncludeBin), Description: FlagIncludeBinUsage}, {Text: commands.FullFlagName(FlagIncludeBinFile), Description: FlagIncludeBinFileUsage}, {Text: commands.FullFlagName(FlagIncludeExe), Description: FlagIncludeExeUsage}, {Text: commands.FullFlagName(FlagIncludeExeFile), Description: FlagIncludeExeFileUsage}, {Text: commands.FullFlagName(FlagIncludeShell), Description: FlagIncludeShellUsage}, {Text: commands.FullFlagName(FlagIncludeCertAll), Description: FlagIncludeCertAllUsage}, {Text: commands.FullFlagName(FlagIncludeCertBundles), Description: FlagIncludeCertBundlesUsage}, {Text: commands.FullFlagName(FlagIncludeCertDirs), Description: FlagIncludeCertDirsUsage}, {Text: commands.FullFlagName(FlagIncludeCertPKAll), Description: FlagIncludeCertPKAllUsage}, {Text: commands.FullFlagName(FlagIncludeCertPKDirs), Description: FlagIncludeCertPKDirsUsage}, {Text: commands.FullFlagName(FlagIncludeNew), Description: FlagIncludeNewUsage}, {Text: commands.FullFlagName(commands.FlagMount), Description: commands.FlagMountUsage}, {Text: commands.FullFlagName(commands.FlagContinueAfter), Description: commands.FlagContinueAfterUsage}, {Text: commands.FullFlagName(commands.FlagUseLocalMounts), Description: commands.FlagUseLocalMountsUsage}, {Text: commands.FullFlagName(commands.FlagUseSensorVolume), Description: commands.FlagUseSensorVolumeUsage}, {Text: commands.FullFlagName(FlagKeepTmpArtifacts), Description: FlagKeepTmpArtifactsUsage}, {Text: commands.FullFlagName(FlagBuildFromDockerfile), Description: FlagBuildFromDockerfileUsage}, {Text: commands.FullFlagName(FlagDockerfileContext), Description: FlagDockerfileContextUsage}, {Text: commands.FullFlagName(FlagTagFat), Description: FlagTagFatUsage}, {Text: commands.FullFlagName(FlagCBOAddHost), Description: FlagCBOAddHostUsage}, {Text: commands.FullFlagName(FlagCBOBuildArg), Description: FlagCBOBuildArgUsage}, {Text: commands.FullFlagName(FlagCBOLabel), Description: FlagCBOLabelUsage}, {Text: commands.FullFlagName(FlagCBOTarget), Description: FlagCBOTargetUsage}, {Text: commands.FullFlagName(FlagCBONetwork), Description: FlagCBONetworkUsage}, {Text: commands.FullFlagName(FlagCBOCacheFrom), Description: FlagCBOCacheFromUsage}, {Text: commands.FullFlagName(commands.FlagDeleteFatImage), Description: commands.FlagDeleteFatImageUsage}, {Text: commands.FullFlagName(commands.FlagRTAOnbuildBaseImage), Description: commands.FlagRTAOnbuildBaseImageUsage}, {Text: commands.FullFlagName(commands.FlagRTASourcePT), Description: commands.FlagRTASourcePTUsage}, {Text: commands.FullFlagName(commands.FlagSensorIPCMode), Description: commands.FlagSensorIPCModeUsage}, {Text: commands.FullFlagName(commands.FlagSensorIPCEndpoint), Description: commands.FlagSensorIPCEndpointUsage}, }, Values: map[string]commands.CompleteValue{ commands.FullFlagName(commands.FlagPull): commands.CompleteBool, commands.FullFlagName(commands.FlagShowPullLogs): commands.CompleteBool, commands.FullFlagName(commands.FlagDockerConfigPath): commands.CompleteFile, commands.FullFlagName(commands.FlagTarget): commands.CompleteTarget, commands.FullFlagName(commands.FlagComposeFile): commands.CompleteFile, commands.FullFlagName(commands.FlagDepIncludeTargetComposeSvcDeps): commands.CompleteBool, commands.FullFlagName(commands.FlagComposeEnvNoHost): commands.CompleteBool, commands.FullFlagName(commands.FlagComposeEnvFile): commands.CompleteFile, commands.FullFlagName(commands.FlagComposeWorkdir): commands.CompleteFile, commands.FullFlagName(FlagShowBuildLogs): commands.CompleteBool, commands.FullFlagName(commands.FlagShowContainerLogs): commands.CompleteBool, commands.FullFlagName(commands.FlagPublishExposedPorts): commands.CompleteBool, commands.FullFlagName(commands.FlagHTTPProbeOff): commands.CompleteBool, commands.FullFlagName(commands.FlagHTTPProbe): commands.CompleteTBool, commands.FullFlagName(commands.FlagHTTPProbeCmdFile): commands.CompleteFile, commands.FullFlagName(commands.FlagHTTPProbeExecFile): commands.CompleteFile, commands.FullFlagName(commands.FlagHTTPProbeFull): commands.CompleteBool, commands.FullFlagName(commands.FlagHTTPProbeExitOnFailure): commands.CompleteBool, commands.FullFlagName(commands.FlagHTTPProbeCrawl): commands.CompleteTBool, commands.FullFlagName(commands.FlagHTTPProbeAPISpecFile): commands.CompleteFile, commands.FullFlagName(FlagKeepPerms): commands.CompleteTBool, commands.FullFlagName(commands.FlagRunTargetAsUser): commands.CompleteTBool, commands.FullFlagName(commands.FlagRemoveFileArtifacts): commands.CompleteBool, commands.FullFlagName(commands.FlagNetwork): commands.CompleteNetwork, commands.FullFlagName(commands.FlagExcludeMounts): commands.CompleteTBool, commands.FullFlagName(FlagPathPermsFile): commands.CompleteFile, commands.FullFlagName(FlagPreservePathFile): commands.CompleteFile, commands.FullFlagName(FlagIncludePathFile): commands.CompleteFile, commands.FullFlagName(FlagIncludeBinFile): commands.CompleteFile, commands.FullFlagName(FlagIncludeExeFile): commands.CompleteFile, commands.FullFlagName(FlagIncludeShell): commands.CompleteBool, commands.FullFlagName(FlagIncludeCertAll): commands.CompleteBool, commands.FullFlagName(FlagIncludeCertBundles): commands.CompleteBool, commands.FullFlagName(FlagIncludeCertDirs): commands.CompleteBool, commands.FullFlagName(FlagIncludeCertPKAll): commands.CompleteBool, commands.FullFlagName(FlagIncludeCertPKDirs): commands.CompleteBool, commands.FullFlagName(FlagIncludeNew): commands.CompleteBool, commands.FullFlagName(commands.FlagContinueAfter): commands.CompleteContinueAfter, commands.FullFlagName(commands.FlagUseLocalMounts): commands.CompleteBool, commands.FullFlagName(commands.FlagUseSensorVolume): commands.CompleteVolume, commands.FullFlagName(FlagKeepTmpArtifacts): commands.CompleteBool, commands.FullFlagName(commands.FlagCROHostConfigFile): commands.CompleteFile, commands.FullFlagName(FlagDockerfileContext): commands.CompleteFile, commands.FullFlagName(FlagDeleteFatImage): commands.CompleteBool, commands.FullFlagName(commands.FlagRTAOnbuildBaseImage): commands.CompleteBool, commands.FullFlagName(commands.FlagRTASourcePT): commands.CompleteBool, commands.FullFlagName(commands.FlagSensorIPCMode): commands.CompleteIPCMode, }, }
View Source
var CommandSuggestion = prompt.Suggest{ Text: Name, Description: Usage, }
View Source
var Flags = map[string]cli.Flag{ FlagShowBuildLogs: &cli.BoolFlag{ Name: FlagShowBuildLogs, Usage: FlagShowBuildLogsUsage, EnvVars: []string{"DSLIM_SHOW_BLOGS"}, }, FlagPathPerms: &cli.StringSliceFlag{ Name: FlagPathPerms, Value: cli.NewStringSlice(), Usage: FlagPathPermsUsage, EnvVars: []string{"DSLIM_PATH_PERMS"}, }, FlagPathPermsFile: &cli.StringFlag{ Name: FlagPathPermsFile, Value: "", Usage: FlagPathPermsFileUsage, EnvVars: []string{"DSLIM_PATH_PERMS_FILE"}, }, FlagPreservePath: &cli.StringSliceFlag{ Name: FlagPreservePath, Value: cli.NewStringSlice(), Usage: FlagPreservePathUsage, EnvVars: []string{"DSLIM_PRESERVE_PATH"}, }, FlagPreservePathFile: &cli.StringFlag{ Name: FlagPreservePathFile, Value: "", Usage: FlagPreservePathFileUsage, EnvVars: []string{"DSLIM_PRESERVE_PATH_FILE"}, }, FlagIncludePath: &cli.StringSliceFlag{ Name: FlagIncludePath, Value: cli.NewStringSlice(), Usage: FlagIncludePathUsage, EnvVars: []string{"DSLIM_INCLUDE_PATH"}, }, FlagIncludePathFile: &cli.StringFlag{ Name: FlagIncludePathFile, Value: "", Usage: FlagIncludePathFileUsage, EnvVars: []string{"DSLIM_INCLUDE_PATH_FILE"}, }, FlagIncludeBin: &cli.StringSliceFlag{ Name: FlagIncludeBin, Value: cli.NewStringSlice(), Usage: FlagIncludeBinUsage, EnvVars: []string{"DSLIM_INCLUDE_BIN"}, }, FlagIncludeExe: &cli.StringSliceFlag{ Name: FlagIncludeExe, Value: cli.NewStringSlice(), Usage: FlagIncludeExeUsage, EnvVars: []string{"DSLIM_INCLUDE_EXE"}, }, FlagIncludeShell: &cli.BoolFlag{ Name: FlagIncludeShell, Usage: FlagIncludeShellUsage, EnvVars: []string{"DSLIM_INCLUDE_SHELL"}, }, FlagIncludeCertAll: &cli.BoolFlag{ Name: FlagIncludeCertAll, Value: true, Usage: FlagIncludeCertAllUsage, EnvVars: []string{"DSLIM_INCLUDE_CERT_ALL"}, }, FlagIncludeCertBundles: &cli.BoolFlag{ Name: FlagIncludeCertBundles, Usage: FlagIncludeCertBundlesUsage, EnvVars: []string{"DSLIM_INCLUDE_CERT_BUNDLES"}, }, FlagIncludeCertDirs: &cli.BoolFlag{ Name: FlagIncludeCertDirs, Usage: FlagIncludeCertDirsUsage, EnvVars: []string{"DSLIM_INCLUDE_CERT_DIRS"}, }, FlagIncludeCertPKAll: &cli.BoolFlag{ Name: FlagIncludeCertPKAll, Usage: FlagIncludeCertPKAllUsage, EnvVars: []string{"DSLIM_INCLUDE_CERT_PK_ALL"}, }, FlagIncludeCertPKDirs: &cli.BoolFlag{ Name: FlagIncludeCertPKDirs, Usage: FlagIncludeCertPKDirsUsage, EnvVars: []string{"DSLIM_INCLUDE_CERT_PK_DIRS"}, }, FlagIncludeNew: &cli.BoolFlag{ Name: FlagIncludeNew, Value: true, Usage: FlagIncludeNewUsage, EnvVars: []string{"DSLIM_INCLUDE_NEW"}, }, FlagKeepTmpArtifacts: &cli.BoolFlag{ Name: FlagKeepTmpArtifacts, Usage: FlagKeepTmpArtifactsUsage, EnvVars: []string{"DSLIM_KEEP_TMP_ARTIFACTS"}, }, FlagKeepPerms: &cli.BoolFlag{ Name: FlagKeepPerms, Value: true, Usage: FlagKeepPermsUsage, EnvVars: []string{"DSLIM_KEEP_PERMS"}, }, FlagNewEntrypoint: &cli.StringFlag{ Name: FlagNewEntrypoint, Value: "", Usage: FlagNewEntrypointUsage, EnvVars: []string{"DSLIM_NEW_ENTRYPOINT"}, }, FlagNewCmd: &cli.StringFlag{ Name: FlagNewCmd, Value: "", Usage: FlagNewCmdUsage, EnvVars: []string{"DSLIM_NEW_CMD"}, }, FlagNewExpose: &cli.StringSliceFlag{ Name: FlagNewExpose, Value: cli.NewStringSlice(), Usage: FlagNewExposeUsage, EnvVars: []string{"DSLIM_NEW_EXPOSE"}, }, FlagNewWorkdir: &cli.StringFlag{ Name: FlagNewWorkdir, Value: "", Usage: FlagNewWorkdirUsage, EnvVars: []string{"DSLIM_NEW_WORKDIR"}, }, FlagNewEnv: &cli.StringSliceFlag{ Name: FlagNewEnv, Value: cli.NewStringSlice(), Usage: FlagNewEnvUsage, EnvVars: []string{"DSLIM_NEW_ENV"}, }, FlagNewVolume: &cli.StringSliceFlag{ Name: FlagNewVolume, Value: cli.NewStringSlice(), Usage: FlagNewVolumeUsage, EnvVars: []string{"DSLIM_NEW_VOLUME"}, }, FlagNewLabel: &cli.StringSliceFlag{ Name: FlagNewLabel, Value: cli.NewStringSlice(), Usage: FlagNewLabelUsage, EnvVars: []string{"DSLIM_NEW_LABEL"}, }, FlagTag: &cli.StringSliceFlag{ Name: FlagTag, Value: cli.NewStringSlice(), Usage: FlagTagUsage, EnvVars: []string{"DSLIM_TARGET_TAG"}, }, FlagImageOverrides: &cli.StringFlag{ Name: FlagImageOverrides, Value: "", Usage: FlagImageOverridesUsage, EnvVars: []string{"DSLIM_TARGET_OVERRIDES"}, }, FlagBuildFromDockerfile: &cli.StringFlag{ Name: FlagBuildFromDockerfile, Value: "", Usage: FlagBuildFromDockerfileUsage, EnvVars: []string{"DSLIM_BUILD_DOCKERFILE"}, }, FlagDockerfileContext: &cli.StringFlag{ Name: FlagDockerfileContext, Value: "", Usage: FlagDockerfileContextUsage, EnvVars: []string{"DSLIM_BUILD_DOCKERFILE_CTX"}, }, FlagTagFat: &cli.StringFlag{ Name: FlagTagFat, Value: "", Usage: FlagTagFatUsage, EnvVars: []string{"DSLIM_TARGET_TAG_FAT"}, }, FlagCBOAddHost: &cli.StringSliceFlag{ Name: FlagCBOAddHost, Value: cli.NewStringSlice(), Usage: FlagCBOAddHostUsage, EnvVars: []string{"DSLIM_CBO_ADD_HOST"}, }, FlagCBOBuildArg: &cli.StringSliceFlag{ Name: FlagCBOBuildArg, Value: cli.NewStringSlice(), Usage: FlagCBOBuildArgUsage, EnvVars: []string{"DSLIM_CBO_BUILD_ARG"}, }, FlagCBOCacheFrom: &cli.StringSliceFlag{ Name: FlagCBOCacheFrom, Value: cli.NewStringSlice(), Usage: FlagCBOCacheFromUsage, EnvVars: []string{"DSLIM_CBO_CACHE_FROM"}, }, FlagCBOLabel: &cli.StringSliceFlag{ Name: FlagCBOLabel, Value: cli.NewStringSlice(), Usage: FlagCBOLabelUsage, EnvVars: []string{"DSLIM_CBO_LABEL"}, }, FlagCBOTarget: &cli.StringFlag{ Name: FlagCBOTarget, Value: "", Usage: FlagCBOTargetUsage, EnvVars: []string{"DSLIM_CBO_TARGET"}, }, FlagCBONetwork: &cli.StringFlag{ Name: FlagCBONetwork, Value: "", Usage: FlagCBONetworkUsage, EnvVars: []string{"DSLIM_CBO_NETWORK"}, }, FlagDeleteFatImage: &cli.BoolFlag{ Name: FlagDeleteFatImage, Usage: FlagDeleteFatImageUsage, EnvVars: []string{"DSLIM_DELETE_FAT"}, }, FlagRemoveExpose: &cli.StringSliceFlag{ Name: FlagRemoveExpose, Value: cli.NewStringSlice(), Usage: FlagRemoveExposeUsage, EnvVars: []string{"DSLIM_RM_EXPOSE"}, }, FlagRemoveEnv: &cli.StringSliceFlag{ Name: FlagRemoveEnv, Value: cli.NewStringSlice(), Usage: FlagRemoveEnvUsage, EnvVars: []string{"DSLIM_RM_ENV"}, }, FlagRemoveLabel: &cli.StringSliceFlag{ Name: FlagRemoveLabel, Value: cli.NewStringSlice(), Usage: FlagRemoveLabelUsage, EnvVars: []string{"DSLIM_RM_LABEL"}, }, FlagRemoveVolume: &cli.StringSliceFlag{ Name: FlagRemoveVolume, Value: cli.NewStringSlice(), Usage: FlagRemoveVolumeUsage, EnvVars: []string{"DSLIM_RM_VOLUME"}, }, FlagIncludeBinFile: &cli.StringFlag{ Name: FlagIncludeBinFile, Value: "", Usage: FlagIncludeBinFileUsage, EnvVars: []string{"DSLIM_INCLUDE_BIN_FILE"}, }, FlagIncludeExeFile: &cli.StringFlag{ Name: FlagIncludeExeFile, Value: "", Usage: FlagIncludeExeFileUsage, EnvVars: []string{"DSLIM_INCLUDE_EXE_FILE"}, }, }
Functions ¶
func GetContainerBuildOptions ¶
func GetContainerBuildOptions(ctx *cli.Context) (*config.ContainerBuildOptions, error)
func GetImageInstructions ¶
func GetImageInstructions(ctx *cli.Context) (*config.ImageNewInstructions, error)
func NewLogWriter ¶
func NewLogWriter(name string) *chanWriter
func OnCommand ¶
func OnCommand( xc *app.ExecutionContext, gparams *commands.GenericParams, targetRef string, doPull bool, dockerConfigPath string, registryAccount string, registrySecret string, doShowPullLogs bool, composeFiles []string, targetComposeSvc string, composeSvcNoPorts bool, depExcludeComposeSvcAll bool, depIncludeComposeSvcDeps string, depIncludeTargetComposeSvcDeps bool, depIncludeComposeSvcs []string, depExcludeComposeSvcs []string, composeNets []string, composeEnvVars []string, composeEnvNoHost bool, composeWorkdir string, composeProjectName string, containerProbeComposeSvc string, cbOpts *config.ContainerBuildOptions, crOpts *config.ContainerRunOptions, outputTags []string, doHTTPProbe bool, httpProbeCmds []config.HTTPProbeCmd, httpProbeStartWait int, httpProbeRetryCount int, httpProbeRetryWait int, httpProbePorts []uint16, httpCrawlMaxDepth int, httpCrawlMaxPageCount int, httpCrawlConcurrency int, httpMaxConcurrentCrawlers int, doHTTPProbeFull bool, doHTTPProbeExitOnFailure bool, httpProbeAPISpecs []string, httpProbeAPISpecFiles []string, httpProbeApps []string, httpProbeProxyEndpoint string, httpProbeProxyPort int, portBindings map[dockerapi.Port][]dockerapi.PortBinding, doPublishExposedPorts bool, doRmFileArtifacts bool, copyMetaArtifactsLocation string, doRunTargetAsUser bool, doShowContainerLogs bool, doShowBuildLogs bool, imageOverrideSelectors map[string]bool, overrides *config.ContainerOverrides, instructions *config.ImageNewInstructions, links []string, etcHostsMaps []string, dnsServers []string, dnsSearchDomains []string, explicitVolumeMounts map[string]config.VolumeMount, doKeepPerms bool, pathPerms map[string]*fsutil.AccessInfo, excludePatterns map[string]*fsutil.AccessInfo, preservePaths map[string]*fsutil.AccessInfo, includePaths map[string]*fsutil.AccessInfo, includeBins map[string]*fsutil.AccessInfo, includeExes map[string]*fsutil.AccessInfo, doIncludeShell bool, doIncludeCertAll bool, doIncludeCertBundles bool, doIncludeCertDirs bool, doIncludeCertPKAll bool, doIncludeCertPKDirs bool, doIncludeNew bool, doUseLocalMounts bool, doUseSensorVolume string, doKeepTmpArtifacts bool, continueAfter *config.ContinueAfter, execCmd string, execFileCmd string, deleteFatImage bool, rtaOnbuildBaseImage bool, rtaSourcePT bool, sensorIPCEndpoint string, sensorIPCMode string, logLevel string, logFormat string)
OnCommand implements the 'build' docker-slim command
func RegisterCommand ¶
func RegisterCommand()
Types ¶
This section is empty.
Click to show internal directories.
Click to hide internal directories.