зеркало из https://github.com/Azure/draft-classic.git
Merge branch 'master' into add-disable-emoji-flag
This commit is contained in:
Коммит
148ed39e5b
|
@ -4,6 +4,7 @@ import (
|
|||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"path/filepath"
|
||||
|
||||
|
@ -48,6 +49,7 @@ var (
|
|||
dockerCertPath = os.Getenv("DOCKER_CERT_PATH")
|
||||
autoConnect bool
|
||||
skipImagePush bool
|
||||
quiet bool
|
||||
)
|
||||
|
||||
type upCmd struct {
|
||||
|
@ -115,13 +117,14 @@ func newUpCmd(out io.Writer) *cobra.Command {
|
|||
|
||||
f = cmd.Flags()
|
||||
f.StringVarP(&runningEnvironment, environmentFlagName, environmentFlagShorthand, defaultDraftEnvironment(), environmentFlagUsage)
|
||||
f.BoolVar(&up.dockerClientOptions.Common.Debug, "docker-debug", false, "Enable debug mode")
|
||||
f.StringVar(&up.dockerClientOptions.Common.LogLevel, "docker-log-level", "info", `Set the logging level ("debug"|"info"|"warn"|"error"|"fatal")`)
|
||||
f.BoolVar(&up.dockerClientOptions.Common.TLS, "docker-tls", defaultDockerTLS(), "Use TLS; implied by --tlsverify")
|
||||
f.BoolVar(&up.dockerClientOptions.Common.TLSVerify, fmt.Sprintf("docker-%s", dockerflags.FlagTLSVerify), defaultDockerTLSVerify(), "Use TLS and verify the remote")
|
||||
f.StringVar(&up.dockerClientOptions.ConfigDir, "docker-config", cliconfig.Dir(), "Location of client config files")
|
||||
f.BoolVar(&up.dockerClientOptions.Common.Debug, "docker-debug", false, "enable debug mode")
|
||||
f.StringVar(&up.dockerClientOptions.Common.LogLevel, "docker-log-level", "info", `set the logging level ("debug"|"info"|"warn"|"error"|"fatal")`)
|
||||
f.BoolVar(&up.dockerClientOptions.Common.TLS, "docker-tls", defaultDockerTLS(), "use TLS; implied by --tlsverify")
|
||||
f.BoolVar(&up.dockerClientOptions.Common.TLSVerify, fmt.Sprintf("docker-%s", dockerflags.FlagTLSVerify), defaultDockerTLSVerify(), "use TLS and verify the remote")
|
||||
f.StringVar(&up.dockerClientOptions.ConfigDir, "docker-config", cliconfig.Dir(), "location of client config files")
|
||||
f.BoolVarP(&autoConnect, "auto-connect", "", false, "specifies if draft up should automatically connect to the application")
|
||||
f.BoolVar(&skipImagePush, "skip-image-push", false, "skip pushing image to registry")
|
||||
f.BoolVarP(&quiet, "quiet", "q", false, "only output errors")
|
||||
|
||||
up.dockerClientOptions.Common.TLSOptions = &tlsconfig.Options{
|
||||
CAFile: filepath.Join(dockerCertPath, dockerflags.DefaultCaFile),
|
||||
|
@ -241,7 +244,17 @@ func (u *upCmd) run(environment string) (err error) {
|
|||
// setup the storage engine
|
||||
bldr.Storage = configmap.NewConfigMaps(bldr.Kube.CoreV1().ConfigMaps(tillerNamespace))
|
||||
progressC := bldr.Up(ctx, buildctx)
|
||||
cmdline.Display(ctx, buildctx.Env.Name, progressC, cmdline.WithBuildID(bldr.ID), cmdline.WithDisableEmoji(disableEmoji))
|
||||
opts := []cmdline.Option{cmdline.WithBuildID(bldr.ID)}
|
||||
|
||||
if quiet {
|
||||
opts = append(opts, cmdline.WithStdout(ioutil.Discard))
|
||||
}
|
||||
|
||||
if disableEmoji {
|
||||
opts = append(opts, cmdline.WithDisableEmoji(disableEmoji))
|
||||
}
|
||||
|
||||
cmdline.Display(ctx, buildctx.Env.Name, progressC, opts...)
|
||||
|
||||
if buildctx.Env.AutoConnect || autoConnect {
|
||||
c := newConnectCmd(u.out)
|
||||
|
|
|
@ -10,7 +10,7 @@ To compile and test Draft binaries and to build Docker images, you will need:
|
|||
- a [Kubernetes][] cluster. We recommend [minikube][].
|
||||
- [docker][]
|
||||
- [git][]
|
||||
- [helm][], using the same version as recommended in the [installation guide][install].
|
||||
- [helm][], see the [quickstart guide][quickstart] for installing helm
|
||||
- [Go][] 1.8 or later, with support for compiling to `linux/amd64`
|
||||
|
||||
In most cases, install the prerequisite according to its instructions. See the next section
|
||||
|
@ -85,10 +85,10 @@ $ make clean
|
|||
|
||||
|
||||
[docker]: https://www.docker.com/
|
||||
[install]: ../install.md
|
||||
[quickstart]: ../quickstart.md#install-and-configure-helm
|
||||
[git]: https://git-scm.com/
|
||||
[go]: https://golang.org/
|
||||
[helm]: https://github.com/kubernetes/helm
|
||||
[helm]: https://github.com/helm/helm
|
||||
[Homebrew]: https://brew.sh/
|
||||
[Kubernetes]: https://github.com/kubernetes/kubernetes
|
||||
[minikube]: https://github.com/kubernetes/minikube
|
||||
|
|
|
@ -40,6 +40,8 @@ const (
|
|||
PullSecretName = "draft-pullsecret"
|
||||
// DefaultServiceAccountName is the name of the default service account draft will modify with the imagepullsecret
|
||||
DefaultServiceAccountName = "default"
|
||||
// DefaultDockerfile represents the default name of the Dockerfile if not specified in draft.toml
|
||||
DefaultDockerfile = "Dockerfile"
|
||||
)
|
||||
|
||||
// Builder contains information about the build environment
|
||||
|
@ -264,6 +266,9 @@ func loadValues(ctx *Context) error {
|
|||
}
|
||||
|
||||
func archiveSrc(ctx *Context) error {
|
||||
if ctx.Env.Dockerfile == "" {
|
||||
ctx.Env.Dockerfile = DefaultDockerfile
|
||||
}
|
||||
|
||||
dockerfilePath := filepath.Join(ctx.AppDir, ctx.Env.Dockerfile)
|
||||
contextDir, relDockerfile, err := build.GetContextFromLocalDir(ctx.AppDir, dockerfilePath)
|
||||
|
|
|
@ -86,8 +86,9 @@ func Display(ctx context.Context, app string, summaries <-chan *builder.Summary,
|
|||
)
|
||||
ongoing := make(map[string]chan builder.SummaryStatusCode)
|
||||
var (
|
||||
wg sync.WaitGroup
|
||||
id string
|
||||
wg sync.WaitGroup
|
||||
id string
|
||||
failed bool
|
||||
)
|
||||
defer func() {
|
||||
for _, c := range ongoing {
|
||||
|
@ -95,7 +96,14 @@ func Display(ctx context.Context, app string, summaries <-chan *builder.Summary,
|
|||
}
|
||||
cli.Stop()
|
||||
wg.Wait()
|
||||
fmt.Fprintf(cli.opts.stdout, "%s `%s`\n", blue("Inspect the logs with"), yellow("draft logs ", id))
|
||||
|
||||
logText := fmt.Sprintf("%s `%s`\n", blue("Inspect the logs with"), yellow("draft logs ", id))
|
||||
|
||||
if failed {
|
||||
fmt.Fprintf(cli.opts.stderr, logText)
|
||||
} else {
|
||||
fmt.Fprintf(cli.opts.stdout, logText)
|
||||
}
|
||||
}()
|
||||
for {
|
||||
select {
|
||||
|
@ -106,6 +114,9 @@ func Display(ctx context.Context, app string, summaries <-chan *builder.Summary,
|
|||
if id == "" {
|
||||
id = summary.BuildID
|
||||
}
|
||||
if summary.StatusCode == builder.SummaryFailure {
|
||||
failed = true
|
||||
}
|
||||
if ch, ok := ongoing[summary.StageDesc]; !ok {
|
||||
ch = make(chan builder.SummaryStatusCode, 1)
|
||||
ongoing[summary.StageDesc] = ch
|
||||
|
@ -126,10 +137,21 @@ func Display(ctx context.Context, app string, summaries <-chan *builder.Summary,
|
|||
|
||||
func progress(cli *cmdline, app, desc string, codes <-chan builder.SummaryStatusCode) {
|
||||
start := time.Now()
|
||||
done := make(chan string, 1)
|
||||
done := make(chan builder.SummaryStatusCode, 1)
|
||||
go func() {
|
||||
defer close(done)
|
||||
for code := range codes {
|
||||
if code == builder.SummarySuccess || code == builder.SummaryFailure {
|
||||
done <- code
|
||||
}
|
||||
}
|
||||
}()
|
||||
m := fmt.Sprintf("%s: %s", cyan(app), yellow(desc))
|
||||
s := `-\|/-`
|
||||
i := 0
|
||||
for {
|
||||
select {
|
||||
case code := <-done:
|
||||
switch code {
|
||||
case builder.SummarySuccess:
|
||||
done <- fmt.Sprintf("%s: %s (%.4fs)\n", cyan(app), passStr(desc, cli.opts.disableEmoji), time.Since(start).Seconds())
|
||||
|
@ -138,17 +160,6 @@ func progress(cli *cmdline, app, desc string, codes <-chan builder.SummaryStatus
|
|||
done <- fmt.Sprintf("%s: %s (%.4fs)\n", cyan(app), failStr(desc, cli.opts.disableEmoji), time.Since(start).Seconds())
|
||||
return
|
||||
}
|
||||
}
|
||||
done <- "\n"
|
||||
}()
|
||||
m := fmt.Sprintf("%s: %s", cyan(app), yellow(desc))
|
||||
s := `-\|/-`
|
||||
i := 0
|
||||
for {
|
||||
select {
|
||||
case msg := <-done:
|
||||
fmt.Fprintf(cli.opts.stdout, "\r%s", msg)
|
||||
return
|
||||
default:
|
||||
fmt.Fprintf(cli.opts.stdout, "\r%s %c", m, s[i%len(s)])
|
||||
time.Sleep(50 * time.Millisecond)
|
||||
|
|
Загрузка…
Ссылка в новой задаче