提交 9c243a7b 编写于 作者: O openeuler-ci-bot 提交者: Gitee

!74 isula-build: return error code when rm image failed

Merge pull request !74 from jingxiaolu/rm_error_code
......@@ -36,6 +36,7 @@ func (b *Backend) Remove(req *pb.RemoveRequest, stream pb.Control_RemoveServer)
var (
rmImageIDs []string
err error
rmFailed bool
)
s := b.daemon.localStore
......@@ -50,6 +51,7 @@ func (b *Backend) Remove(req *pb.RemoveRequest, stream pb.Control_RemoveServer)
for _, imageID := range rmImageIDs {
_, img, err := image.FindImage(s, imageID)
if err != nil {
rmFailed = true
errMsg := fmt.Sprintf("Find local image %s error: %v", imageID, err.Error())
logrus.Error(errMsg)
if err = stream.Send(&pb.RemoveResponse{LayerMessage: errMsg}); err != nil {
......@@ -62,6 +64,7 @@ func (b *Backend) Remove(req *pb.RemoveRequest, stream pb.Control_RemoveServer)
if len(img.Names) > 1 {
removed, uerr := untagImage(imageID, s, img)
if uerr != nil {
rmFailed = true
errMsg := fmt.Sprintf("Untag image %s error: %v", imageID, uerr.Error())
logrus.Error(errMsg)
if err = stream.Send(&pb.RemoveResponse{LayerMessage: errMsg}); err != nil {
......@@ -83,6 +86,7 @@ func (b *Backend) Remove(req *pb.RemoveRequest, stream pb.Control_RemoveServer)
layers, err := s.DeleteImage(img.ID, true)
if err != nil {
// if delete failed, print out message and continue deleting the rest images
rmFailed = true
errMsg := fmt.Sprintf("Remove image %s failed: %v", imageID, err.Error())
logrus.Error(errMsg)
if err = stream.Send(&pb.RemoveResponse{LayerMessage: errMsg}); err != nil {
......@@ -107,6 +111,9 @@ func (b *Backend) Remove(req *pb.RemoveRequest, stream pb.Control_RemoveServer)
}
}
if rmFailed {
return errors.New("remove one or more images failed")
}
return nil
}
......
#!/bin/bash
# Copyright (c) Huawei Technologies Co., Ltd. 2020. All rights reserved.
# isula-build licensed under the Mulan PSL v2.
# You can use this software according to the terms and conditions of the Mulan PSL v2.
# You may obtain a copy of Mulan PSL v2 at:
# http://license.coscl.org.cn/MulanPSL2
# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR
# PURPOSE.
# See the Mulan PSL v2 for more details.
# Author: Jingxiao Lu
# Create: 2020-09-07
# Description: dockerfile test multi-stage-builds
nonexistent_image="foo:bar"
# rm an nonexistent image
isula-build ctr-img rm ${nonexistent_image} > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo "FAIL"
exit 1
fi
echo "PASS"
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册