mirror of
https://github.com/linuxkit/linuxkit.git
synced 2025-07-19 09:16:29 +00:00
Merge pull request #2589 from ijc/linuxkit-pkg-release
linuxkit pkg: Support --release option to pkg push.
This commit is contained in:
commit
2eb5dfffaa
@ -20,6 +20,7 @@ func pkgPush(args []string) {
|
||||
}
|
||||
|
||||
force := flags.Bool("force", false, "Force rebuild")
|
||||
release := flags.String("release", "", "Release the given version")
|
||||
|
||||
p, err := pkglib.NewFromCLI(flags, args...)
|
||||
if err != nil {
|
||||
@ -34,7 +35,9 @@ func pkgPush(args []string) {
|
||||
if *force {
|
||||
opts = append(opts, pkglib.WithBuildForce())
|
||||
}
|
||||
|
||||
if *release != "" {
|
||||
opts = append(opts, pkglib.WithRelease(*release))
|
||||
}
|
||||
if err := p.Build(opts...); err != nil {
|
||||
fmt.Fprintf(os.Stderr, "%v\n", err)
|
||||
os.Exit(1)
|
||||
|
@ -7,8 +7,9 @@ import (
|
||||
)
|
||||
|
||||
type buildOpts struct {
|
||||
force bool
|
||||
push bool
|
||||
force bool
|
||||
push bool
|
||||
release string
|
||||
}
|
||||
|
||||
// BuildOpt allows callers to specify options to Build
|
||||
@ -30,6 +31,14 @@ func WithBuildPush() BuildOpt {
|
||||
}
|
||||
}
|
||||
|
||||
// WithRelease releases as the given version after push
|
||||
func WithRelease(r string) BuildOpt {
|
||||
return func(bo *buildOpts) error {
|
||||
bo.release = r
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
// Build builds the package
|
||||
func (p Pkg) Build(bos ...BuildOpt) error {
|
||||
var bo buildOpts
|
||||
@ -61,9 +70,16 @@ func (p Pkg) Build(bos ...BuildOpt) error {
|
||||
return fmt.Errorf("Unknown arch %q", arch)
|
||||
}
|
||||
|
||||
release, err := gitCommitTag("HEAD")
|
||||
if err != nil {
|
||||
return err
|
||||
if bo.release == "" {
|
||||
r, err := gitCommitTag("HEAD")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
bo.release = r
|
||||
}
|
||||
|
||||
if bo.release != "" && !bo.push {
|
||||
return fmt.Errorf("Cannot release %q if not pushing", bo.release)
|
||||
}
|
||||
|
||||
d := newDockerRunner(p.trust, p.cache)
|
||||
@ -119,12 +135,12 @@ func (p Pkg) Build(bos ...BuildOpt) error {
|
||||
return err
|
||||
}
|
||||
|
||||
if release == "" {
|
||||
if bo.release == "" {
|
||||
fmt.Printf("Build and push complete, not releasing, all done.\n")
|
||||
return nil
|
||||
}
|
||||
|
||||
relTag, err := p.ReleaseTag(release)
|
||||
relTag, err := p.ReleaseTag(bo.release)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@ -137,7 +153,7 @@ func (p Pkg) Build(bos ...BuildOpt) error {
|
||||
return err
|
||||
}
|
||||
|
||||
fmt.Printf("Build, push and release complete, all done.\n")
|
||||
fmt.Printf("Build, push and release of %q complete, all done.\n", bo.release)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user