cleancode: delete patches no longer usefull

Signed-off-by: DCCooper <1866858@gmail.com>
This commit is contained in:
DCCooper 2020-11-18 16:21:47 +08:00
parent da40954c3a
commit 3b80d7492e
9 changed files with 6 additions and 498 deletions

View File

@ -1 +1 @@
0.9.4-4
0.9.4-5

View File

@ -1 +1 @@
d603403d4e1ccc132f932b8e3e4d0a3d9898303b
3959113b332bcbc4025c199faa385a18c1df4d30

View File

@ -2,7 +2,7 @@
Name: isula-build
Version: 0.9.4
Release: 4
Release: 5
Summary: A tool to build container images
License: Mulan PSL V2
URL: https://gitee.com/openeuler/isula-build
@ -81,6 +81,9 @@ fi
/usr/share/bash-completion/completions/isula-build
%changelog
* Wed Nov 18 2020 lixiang <lixiang172@huawei.com> - 0.9.4-5
- Delete patches no longer usefull
* Tue Nov 17 2020 lixiang <lixiang172@huawei.com> - 0.9.4-4
- Fix unsuitable filemode for isula-build(er)

View File

@ -1,26 +0,0 @@
From 3703d88fbb74b216d8aaa2237d18c373fefa8f6e Mon Sep 17 00:00:00 2001
From: liuzekun <liuzekun@huawei.com>
Date: Fri, 21 Aug 2020 06:24:42 -0400
Subject: [PATCH] store: recover use graphLock when mount a layer
Signed-off-by: liuzekun <liuzekun@huawei.com>
---
vendor/github.com/containers/storage/store.go | 2 ++
1 file changed, 2 insertions(+)
diff --git a/vendor/github.com/containers/storage/store.go b/vendor/github.com/containers/storage/store.go
index 937bf8c..8f84412 100644
--- a/vendor/github.com/containers/storage/store.go
+++ b/vendor/github.com/containers/storage/store.go
@@ -2630,6 +2630,8 @@ func (s *store) mount(id string, options drivers.MountOpts) (string, error) {
if err != nil {
return "", err
}
+ s.graphLock.Lock()
+ defer s.graphLock.Unlock()
rlstore.Lock()
defer rlstore.Unlock()
if modified, err := rlstore.Modified(); modified || err != nil {
--
2.19.1

View File

@ -1,34 +0,0 @@
From 241e0fdd31cf5f5905ab41b2bab1d0f247274bc3 Mon Sep 17 00:00:00 2001
From: liuzekun <liuzekun@huawei.com>
Date: Wed, 2 Sep 2020 06:10:55 -0400
Subject: [PATCH] isula-build:fix goroutine leak with close tatLogger in a
defer clause
Signed-off-by: liuzekun <liuzekun@huawei.com>
---
vendor/github.com/containers/storage/layers.go | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/vendor/github.com/containers/storage/layers.go b/vendor/github.com/containers/storage/layers.go
index dc21f75..1fc25ba 100644
--- a/vendor/github.com/containers/storage/layers.go
+++ b/vendor/github.com/containers/storage/layers.go
@@ -1346,6 +1346,7 @@ func (r *layerStore) ApplyDiff(to string, diff io.Reader) (size int64, err error
if err != nil {
return -1, err
}
+ defer idLogger.Close()
options := drivers.ApplyDiffOpts{
Diff: payload,
Mappings: r.layerMappings(layer),
@@ -1356,7 +1357,6 @@ func (r *layerStore) ApplyDiff(to string, diff io.Reader) (size int64, err error
return -1, err
}
compressor.Close()
- idLogger.Close()
if err == nil {
if err := os.MkdirAll(filepath.Dir(r.tspath(layer.ID)), 0700); err != nil {
return -1, err
--
2.19.1

View File

@ -1,118 +0,0 @@
From f585c435806bbb927553b5b956274d4c80469696 Mon Sep 17 00:00:00 2001
From: Jeff Zvier <zvier20@gmail.com>
Date: Wed, 9 Sep 2020 14:30:10 +0800
Subject: [PATCH] parse all stages and mark it wheather need to commit
Signed-off-by: Jeff Zvier <zvier20@gmail.com>
---
builder/dockerfile/builder_test.go | 7 ++++---
builder/dockerfile/parser/parser.go | 9 +++++++++
builder/dockerfile/stage_builder.go | 9 ++++-----
pkg/parser/page.go | 9 +++++----
4 files changed, 22 insertions(+), 12 deletions(-)
diff --git a/builder/dockerfile/builder_test.go b/builder/dockerfile/builder_test.go
index cc1904d9..61172748 100644
--- a/builder/dockerfile/builder_test.go
+++ b/builder/dockerfile/builder_test.go
@@ -34,8 +34,8 @@ import (
"isula.org/isula-build/pkg/logger"
"isula.org/isula-build/pkg/parser"
"isula.org/isula-build/store"
- testutil "isula.org/isula-build/util"
"isula.org/isula-build/util"
+ testutil "isula.org/isula-build/util"
)
func TestParseFiles(t *testing.T) {
@@ -168,8 +168,9 @@ temp?`
Flags: map[string]string{"from": "date"},
},
},
- Begin: 9,
- End: 11,
+ Begin: 9,
+ NeedCommit: true,
+ End: 11,
},
},
Warnings: nil,
diff --git a/builder/dockerfile/parser/parser.go b/builder/dockerfile/parser/parser.go
index 3041f9ba..a5b079d8 100644
--- a/builder/dockerfile/parser/parser.go
+++ b/builder/dockerfile/parser/parser.go
@@ -188,6 +188,7 @@ func constructPages(lines []*parser.Line, onbuild bool) ([]*parser.Page, error)
}
var (
+ pageMap = make(map[string]*parser.Page)
pages = make([]*parser.Page, 0, 0)
currentPage *parser.Page
pageNum int
@@ -237,6 +238,12 @@ func constructPages(lines []*parser.Line, onbuild bool) ([]*parser.Page, error)
} else {
page.Name = strconv.Itoa(len(pages))
}
+ pageMap[page.Name] = page
+ // if the base image for current stage is from the previous stage,
+ // mark the previous stage need to commit
+ if from, ok := pageMap[line.Cells[0].Value]; ok {
+ from.NeedCommit = true
+ }
currentPage = page
}
// because a valid dockerfile is always start with 'FROM' command here, so no need
@@ -247,6 +254,8 @@ func constructPages(lines []*parser.Line, onbuild bool) ([]*parser.Page, error)
if !onbuild && len(currentPage.Lines) < minLinesPerPage {
return nil, errors.Errorf("stage %s should have at least one command", currentPage.Name)
}
+ // the last stage always need to commit
+ currentPage.NeedCommit = true
pages = append(pages, currentPage)
if len(pages) == 0 {
diff --git a/builder/dockerfile/stage_builder.go b/builder/dockerfile/stage_builder.go
index ad77ecea..32397bd7 100644
--- a/builder/dockerfile/stage_builder.go
+++ b/builder/dockerfile/stage_builder.go
@@ -209,13 +209,12 @@ func (s *stageBuilder) stageBuild(ctx context.Context) (string, error) {
}
}
- // 3. commit for new image
- s.imageID, err = s.commit(ctx)
- if err != nil {
- return "", errors.Wrapf(err, "commit image for stage %s failed", s.name)
+ // 3. commit for new image if needed
+ if s.rawStage.NeedCommit {
+ s.imageID, err = s.commit(ctx)
}
- return s.imageID, nil
+ return s.imageID, errors.Wrapf(err, "commit image for stage %s failed", s.name)
}
func prepareImage(opt *image.PrepareImageOptions) (*image.Describe, error) {
diff --git a/pkg/parser/page.go b/pkg/parser/page.go
index b7f746cd..320c9daf 100644
--- a/pkg/parser/page.go
+++ b/pkg/parser/page.go
@@ -21,10 +21,11 @@ import (
// Page is a Dockerfile stage
type Page struct {
- Lines []*Line // all lines which the page contains
- Name string // page name
- Begin int // the begin line number of the page in the physical Dockerfile
- End int // the end line number of the page in the physical Dockerfile
+ Lines []*Line // all lines which the page contains
+ Name string // page name
+ Begin int // the begin line number of the page in the physical Dockerfile
+ End int // the end line number of the page in the physical Dockerfile
+ NeedCommit bool // mark the page whether need to commit
}
func (p *Page) dump() string {
--
2.19.1

View File

@ -1,118 +0,0 @@
From a275947784ed0772b08bbd43114c5cc0a1ba8feb Mon Sep 17 00:00:00 2001
From: DCCooper <1866858@gmail.com>
Date: Tue, 15 Sep 2020 19:42:14 +0800
Subject: [PATCH] bugfix: fix build hang problem when error happened before
pipe open
Signed-off-by: DCCooper <1866858@gmail.com>
---
builder/builder.go | 2 +-
builder/dockerfile/builder.go | 3 ++-
cmd/cli/build.go | 4 +++-
daemon/build.go | 8 +++++++-
daemon/status.go | 6 ++++++
5 files changed, 19 insertions(+), 4 deletions(-)
diff --git a/builder/builder.go b/builder/builder.go
index 02c40ea7..1f650a5c 100644
--- a/builder/builder.go
+++ b/builder/builder.go
@@ -29,7 +29,7 @@ import (
// Builder is an interface for building an image
type Builder interface {
- Build() (imageID string, err error)
+ Build(chan struct{}) (imageID string, err error)
StatusChan() <-chan string
CleanResources() error
OutputPipeWrapper() *exporter.PipeWrapper
diff --git a/builder/dockerfile/builder.go b/builder/dockerfile/builder.go
index 27c688f9..fd0bd695 100644
--- a/builder/dockerfile/builder.go
+++ b/builder/dockerfile/builder.go
@@ -407,7 +407,7 @@ func getFlagsAndArgs(line *parser.Line, allowFlags map[string]bool) (map[string]
}
// Build makes the image
-func (b *Builder) Build() (string, error) {
+func (b *Builder) Build(syncChan chan struct{}) (string, error) {
var (
executeTimer = b.cliLog.StartTimer("\nTotal")
err error
@@ -446,6 +446,7 @@ func (b *Builder) Build() (string, error) {
}
}
+ close(syncChan)
// 4. export images
if err = b.export(imageID); err != nil {
return "", errors.Wrapf(err, "exporting images failed")
diff --git a/cmd/cli/build.go b/cmd/cli/build.go
index 08c591b5..5c94bedd 100644
--- a/cmd/cli/build.go
+++ b/cmd/cli/build.go
@@ -150,7 +150,9 @@ func buildCommand(c *cobra.Command, args []string) error {
logrus.Debugf("Status get failed: %v", err2)
cancel()
}
- return errors.Wrap(err2, "error runStatus")
+ // user should not pay attention on runStatus error
+ // the errors were already printed to daemon log if any
+ return nil
})
return eg.Wait()
diff --git a/daemon/build.go b/daemon/build.go
index b66a9058..6c5e0acb 100644
--- a/daemon/build.go
+++ b/daemon/build.go
@@ -59,11 +59,12 @@ func (b *Backend) Build(req *pb.BuildRequest, stream pb.Control_BuildServer) err
pipeWrapper := builder.OutputPipeWrapper()
eg, ctx := errgroup.WithContext(ctx)
+ syncPipeChan := make(chan struct{})
eg.Go(func() error {
b.syncBuildStatus(req.BuildID) <- struct{}{}
b.closeStatusChan(req.BuildID)
var berr error
- imageID, berr = builder.Build()
+ imageID, berr = builder.Build(syncPipeChan)
if berr != nil && pipeWrapper != nil {
// in case there is error during Build stage, the backend will always waiting for content write into
@@ -85,6 +86,11 @@ func (b *Backend) Build(req *pb.BuildRequest, stream pb.Control_BuildServer) err
if pipeWrapper == nil {
return nil
}
+ select {
+ case <-syncPipeChan:
+ case <-ctx.Done():
+ return nil
+ }
f, perr := exporter.PipeArchiveStream(pipeWrapper)
if perr != nil {
return perr
diff --git a/daemon/status.go b/daemon/status.go
index c08a6e77..d8b666ee 100644
--- a/daemon/status.go
+++ b/daemon/status.go
@@ -41,10 +41,16 @@ func (b *Backend) Status(req *pb.StatusRequest, stream pb.Control_StatusServer)
builder, err := b.daemon.Builder(req.BuildID)
if err != nil {
+ logrus.WithFields(logrus.Fields{
+ "BuildID": req.GetBuildID(),
+ }).Error(err)
return err
}
for value := range builder.StatusChan() {
if err := stream.Send(&pb.StatusResponse{Content: value}); err != nil {
+ logrus.WithFields(logrus.Fields{
+ "BuildID": req.GetBuildID(),
+ }).Error(err)
return err
}
}
--
2.19.1

View File

@ -1,158 +0,0 @@
From 855fb35fe16a2a5177e6978da0c896ea96621078 Mon Sep 17 00:00:00 2001
From: Lu Jingxiao <lujingxiao@huawei.com>
Date: Thu, 17 Sep 2020 08:51:39 +0800
Subject: [PATCH] isula-build: change default healthcheck timeout to 20s
Currently we have a healthcheck before GRPC requesting
from Client to Server, and the default timeout is 500ms,
which could be very sensitive to running environment.
After discussion, 20s as a default timeout value should be much
more reasonable.
Fixes: #I1VK61
Signed-off-by: Lu Jingxiao <lujingxiao@huawei.com>
---
cmd/cli/grpc_client.go | 6 +++---
cmd/cli/grpc_client_test.go | 4 ++--
cmd/cli/main.go | 2 +-
tests/lib/common.sh | 18 +++++++++---------
4 files changed, 15 insertions(+), 15 deletions(-)
diff --git a/cmd/cli/grpc_client.go b/cmd/cli/grpc_client.go
index 581e7f89..5f10fb01 100644
--- a/cmd/cli/grpc_client.go
+++ b/cmd/cli/grpc_client.go
@@ -30,9 +30,9 @@ import (
)
const (
- defaultStartTimeout = 500 * time.Millisecond
- minStartTimeout = 30 * time.Millisecond
- maxStartTimeout = 20 * time.Second
+ defaultStartTimeout = 20 * time.Second
+ minStartTimeout = 100 * time.Millisecond
+ maxStartTimeout = 120 * time.Second
defaultGrpcMaxDelay = 3 * time.Second
)
diff --git a/cmd/cli/grpc_client_test.go b/cmd/cli/grpc_client_test.go
index e1db130c..e1e14935 100644
--- a/cmd/cli/grpc_client_test.go
+++ b/cmd/cli/grpc_client_test.go
@@ -42,13 +42,13 @@ func TestGetStartTimeout(t *testing.T) {
},
{
name: "TC3 - abnormal case with larger than max start timeout",
- args: args{timeout: "21s"},
+ args: args{timeout: "121s"},
want: -1,
wantErr: true,
},
{
name: "TC4 - abnormal case with less than min start timeout",
- args: args{timeout: "19ms"},
+ args: args{timeout: "99ms"},
want: -1,
wantErr: true,
},
diff --git a/cmd/cli/main.go b/cmd/cli/main.go
index 53e7af99..18bbb965 100644
--- a/cmd/cli/main.go
+++ b/cmd/cli/main.go
@@ -95,7 +95,7 @@ func setupRootCmd(rootCmd *cobra.Command) {
rootCmd.SetFlagErrorFunc(util.FlagErrorFunc)
rootCmd.PersistentFlags().StringVar(&cliOpts.LogLevel, "log-level", "error", "Log level to be used. Either \"debug\", \"info\", \"warn\" or \"error\"")
rootCmd.PersistentFlags().BoolVarP(&cliOpts.Debug, "debug", "D", false, "Open debug mode")
- rootCmd.PersistentFlags().StringVarP(&cliOpts.Timeout, "timeout", "t", "500ms", "Timeout for connecting to daemon")
+ rootCmd.PersistentFlags().StringVarP(&cliOpts.Timeout, "timeout", "t", "", "Timeout for connecting to daemon")
rootCmd.PersistentFlags().BoolP("help", "h", false, "Print usage")
rootCmd.PersistentFlags().BoolP("version", "v", false, "Version for isula-build client")
}
diff --git a/tests/lib/common.sh b/tests/lib/common.sh
index 4d2d9141..7c4052bf 100755
--- a/tests/lib/common.sh
+++ b/tests/lib/common.sh
@@ -45,7 +45,7 @@ function start_isula_builder() {
function cleanup() {
isula-build ctr-img rm -p > /dev/null 2>&1
- kill -9 "${pidofbuilder}" > /dev/null 2>&1
+ kill -15 "${pidofbuilder}" > /dev/null 2>&1
rm -f /tmp/buildlog-*
}
@@ -54,14 +54,14 @@ function test_build_without_output() {
if ! isula-build ctr-img build --tag "$1":latest "$2" > /tmp/buildlog-client 2>&1; then
echo "FAIL"
echo "LOG DIR:/tmp/buildlog-client and /tmp/buildlog-daemon (build without output)"
- kill -9 "${pidofbuilder}"
+ kill -15 "${pidofbuilder}"
exit 1
fi
if ! isula-build ctr-img rm "$1":latest > /tmp/buildlog-client 2>&1; then
echo "FAIL"
echo "LOG DIR:/tmp/buildlog-client and /tmp/buildlog-daemon (build without output)"
- kill -9 "${pidofbuilder}"
+ kill -15 "${pidofbuilder}"
exit 1
fi
}
@@ -71,7 +71,7 @@ function test_build_with_docker_archive_output() {
if ! isula-build ctr-img build --output=docker-archive:/tmp/"$1".tar:"$1":latest "$2" > /tmp/buildlog-client 2>&1; then
echo "FAIL"
echo "LOG DIR:/tmp/buildlog-client and /tmp/buildlog-daemon (build with docker-archive output)"
- kill -9 "${pidofbuilder}"
+ kill -15 "${pidofbuilder}"
exit 1
else
rm -f /tmp/"$1".tar
@@ -80,7 +80,7 @@ function test_build_with_docker_archive_output() {
if ! isula-build ctr-img rm "$1":latest > /tmp/buildlog-client 2>&1; then
echo "FAIL"
echo "LOG DIR:/tmp/buildlog-client and /tmp/buildlog-daemon (build with docker-archive output)"
- kill -9 "${pidofbuilder}"
+ kill -15 "${pidofbuilder}"
exit 1
fi
}
@@ -95,7 +95,7 @@ function test_build_with_docker_daemon_output() {
if ! isula-build ctr-img build --output=docker-daemon:isula/"$1":latest "$2" > /tmp/buildlog-client 2>&1; then
echo "FAIL"
echo "LOG DIR:/tmp/buildlog-client and /tmp/buildlog-daemon (build with docker-daemon output)"
- kill -9 "${pidofbuilder}"
+ kill -15 "${pidofbuilder}"
exit 1
else
docker rmi isula/"$1" > /dev/null 2>&1
@@ -104,7 +104,7 @@ function test_build_with_docker_daemon_output() {
if ! isula-build ctr-img rm isula/"$1":latest > /tmp/buildlog-client 2>&1; then
echo "FAIL"
echo "LOG DIR:/tmp/buildlog-client and /tmp/buildlog-daemon (build with docker-daemon output)"
- kill -9 "${pidofbuilder}"
+ kill -15 "${pidofbuilder}"
exit 1
fi
}
@@ -119,7 +119,7 @@ function test_build_with_isulad_output() {
if ! isula-build ctr-img build --output=isulad:isula/"$1":latest "$2" > /tmp/buildlog-client 2>&1; then
echo "FAIL"
echo "LOG DIR:/tmp/buildlog-client and /tmp/buildlog-daemon (build with isulad output)"
- kill -9 "${pidofbuilder}"
+ kill -15 "${pidofbuilder}"
exit 1
else
isula rmi isula/"$1" > /dev/null 2>&1
@@ -128,7 +128,7 @@ function test_build_with_isulad_output() {
if ! isula-build ctr-img rm isula/"$1":latest > /tmp/buildlog-client 2>&1; then
echo "FAIL"
echo "LOG DIR:/tmp/buildlog-client and /tmp/buildlog-daemon (build with isulad output)"
- kill -9 "${pidofbuilder}"
+ kill -15 "${pidofbuilder}"
exit 1
fi
}
--
2.19.1

View File

@ -1,41 +0,0 @@
From 708c72d0db42096806bf7d2bdc147e6a1ffc0f19 Mon Sep 17 00:00:00 2001
From: DCCooper <1866858@gmail.com>
Date: Sat, 19 Sep 2020 10:29:56 +0800
Subject: [PATCH] isula-build: add -t shortname for --tag and remove it from
--timeout
Signed-off-by: DCCooper <1866858@gmail.com>
---
cmd/cli/build.go | 2 +-
cmd/cli/main.go | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/cmd/cli/build.go b/cmd/cli/build.go
index 5c94bedd..a0245b1d 100644
--- a/cmd/cli/build.go
+++ b/cmd/cli/build.go
@@ -114,7 +114,7 @@ func NewBuildCmd() *cobra.Command {
buildCmd.PersistentFlags().StringArrayVar(&buildOpts.buildArgs, "build-arg", []string{}, "Arguments used during build time")
buildCmd.PersistentFlags().StringArrayVar(&buildOpts.capAddList, "cap-add", []string{}, "Add Linux capabilities for RUN command")
buildCmd.PersistentFlags().StringVar(&buildOpts.imageIDFile, "iidfile", "", "Write image ID to the file")
- buildCmd.PersistentFlags().StringVarP(&buildOpts.additionalTag, "tag", "", "", "Add tag to the built image")
+ buildCmd.PersistentFlags().StringVarP(&buildOpts.additionalTag, "tag", "t", "", "Add tag to the built image")
return buildCmd
}
diff --git a/cmd/cli/main.go b/cmd/cli/main.go
index 18bbb965..47206e72 100644
--- a/cmd/cli/main.go
+++ b/cmd/cli/main.go
@@ -95,7 +95,7 @@ func setupRootCmd(rootCmd *cobra.Command) {
rootCmd.SetFlagErrorFunc(util.FlagErrorFunc)
rootCmd.PersistentFlags().StringVar(&cliOpts.LogLevel, "log-level", "error", "Log level to be used. Either \"debug\", \"info\", \"warn\" or \"error\"")
rootCmd.PersistentFlags().BoolVarP(&cliOpts.Debug, "debug", "D", false, "Open debug mode")
- rootCmd.PersistentFlags().StringVarP(&cliOpts.Timeout, "timeout", "t", "", "Timeout for connecting to daemon")
+ rootCmd.PersistentFlags().StringVar(&cliOpts.Timeout, "timeout", "", "Timeout for connecting to daemon")
rootCmd.PersistentFlags().BoolP("help", "h", false, "Print usage")
rootCmd.PersistentFlags().BoolP("version", "v", false, "Version for isula-build client")
}
--
2.19.1