forked from ko-build/ko
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add additional output formats (tarball and layout) (ko-build#134)
* Create a MultiPublisher MultiPublisher mimics io.MultiWriter in that it will publish an image to multiple publish.Interface implementations. * Add publish.{Tarball,Layout}Publisher This adds support for publishing in the tarball format and to an OCI image layout. The tarball format isn't great, yet. It only supports writing once instead of appending. * Consolidate options These were spread all over the place for no reasons. Now all the publisher related options are grouped together. * Add options for tarball/layout Adds --oci-layout-path, --tarball, and --push flags. --push=false will disable the default behavior of publishing to a registry. * go mod vendor * Add Close method to publish.Interface This allows us to defer writing to the tarball until we've collected all the images that have been published. * Fix tests
- Loading branch information
1 parent
cfd680d
commit 3c6a907
Showing
29 changed files
with
1,197 additions
and
98 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
// Copyright 2020 Google LLC All Rights Reserved. | ||
// | ||
// Licensed under the Apache License, Version 2.0 (the "License"); | ||
// you may not use this file except in compliance with the License. | ||
// You may obtain a copy of the License at | ||
// | ||
// http://www.apache.org/licenses/LICENSE-2.0 | ||
// | ||
// Unless required by applicable law or agreed to in writing, software | ||
// distributed under the License is distributed on an "AS IS" BASIS, | ||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
// See the License for the specific language governing permissions and | ||
// limitations under the License. | ||
|
||
package publish | ||
|
||
import ( | ||
"fmt" | ||
"log" | ||
|
||
"github.com/google/go-containerregistry/pkg/name" | ||
v1 "github.com/google/go-containerregistry/pkg/v1" | ||
"github.com/google/go-containerregistry/pkg/v1/empty" | ||
"github.com/google/go-containerregistry/pkg/v1/layout" | ||
) | ||
|
||
type LayoutPublisher struct { | ||
p layout.Path | ||
} | ||
|
||
// NewLayout returns a new publish.Interface that saves images to an OCI Image Layout. | ||
func NewLayout(path string) (Interface, error) { | ||
p, err := layout.FromPath(path) | ||
if err != nil { | ||
p, err = layout.Write(path, empty.Index) | ||
if err != nil { | ||
return nil, err | ||
} | ||
} | ||
return &LayoutPublisher{p}, nil | ||
} | ||
|
||
// Publish implements publish.Interface. | ||
func (l *LayoutPublisher) Publish(img v1.Image, s string) (name.Reference, error) { | ||
log.Printf("Saving %v", s) | ||
if err := l.p.AppendImage(img); err != nil { | ||
return nil, err | ||
} | ||
log.Printf("Saved %v", s) | ||
|
||
h, err := img.Digest() | ||
if err != nil { | ||
return nil, err | ||
} | ||
|
||
dig, err := name.NewDigest(fmt.Sprintf("%s@%s", l.p, h)) | ||
if err != nil { | ||
return nil, err | ||
} | ||
|
||
return dig, nil | ||
} | ||
|
||
func (l *LayoutPublisher) Close() error { | ||
return nil | ||
} |
Oops, something went wrong.