Repository navigation
Releases
umoci 0.4.0
umoci repacknow supports--refresh-bundlewhich will update the
OCI bundle's metadata (mtree and umoci-specific manifests) after packing the
image tag. This means that the bundle can be used as a base layer for
future diffs without needing to unpack the image again. openSUSE/umoci#196- Added a website, and reworked the documentation to be better structured. You
can visit the website atumo.ci. openSUSE/umoci#188 - Added support for the
user.rootlesscontainersspecification, which allows
for persistent on-disk emulation ofchown(2)inside rootless containers.
This implementation is interoperable with @AkihiroSuda'sPRoot
fork (though we do not test its interoperability at the
moment) as both tools use the same protobuf
specification. openSUSE/umoci#227 umoci unpacknow has support for opaque whiteouts (whiteouts which remove
all children of a directory in the lower layer), thoughumoci repackdoes
not currently have support for generating them. While this is technically a
spec requirement, through testing we've never encountered an actual user of
these whiteouts. openSUSE/umoci#224 openSUSE/umoci#229umoci unpackwill now use some rootless tricks inside user namespaces for
operations that are known to fail (such asmknod(2)) while other operations
will be carried out as normal (such aslchown(2)). It should be noted that
the/proc/self/uid_mapchecking we do can be tricked into not detecting
user namespaces, but you would need to be trying to break it on purpose.
openSUSE/umoci#171 openSUSE/umoci#230
- Fix a bug in our "parent directory restore" code, which is responsible for
ensuring that the mtime and other similar properties of a directory are not
modified by extraction inside said directory. The bug would manifest as
xattrs not being restored properly in certain edge-cases (which we
incidentally hit in a test-case). openSUSE/umoci#161 openSUSE/umoci#162 umoci unpackwill now "clean up" the bundle generated if an error occurs
during unpacking. Previously this didn't happen, which made cleaning up the
responsibility of the caller (which was quite difficult if you were
unprivileged). This is a breaking change, but is in the error path so it's
not critical. openSUSE/umoci#174 openSUSE/umoci#187umoci gcnow will no longer remove unknown files and directories that
aren'tflock(2)ed, thus ensuring that any possible OCI image-spec
extensions or other users of an image being operated on will no longer
break. openSUSE/umoci#198umoci unpack --rootlesswill now correctly handle regular file unpacking
when overwriting a file thatumocidoesn't have write access to. In
addition, the semantics of pre-existing hardlinks to a clobbered file are
clarified (the hard-links will not refer to the new layer's inode).
openSUSE/umoci#222 openSUSE/umoci#223
Thanks to all of the contributors that made this release possible:
- Aleksa Sarai asarai@suse.de
- Jonathan Boulle jonathanboulle@gmail.com
- Serge Hallyn serge@hallyn.com
- Tobias Klauser tklauser@distanz.ch
- Tycho Andersen tycho@tycho.ws
- W. Trevor King wking@tremily.us
Signed-off-by: Aleksa Sarai asarai@suse.de
umoci 0.3.1
-
Fix several minor bugs in
hack/release.shthat caused the release artefacts
to not match the intended style, as well as making it more generic so other
projects can use it. openSUSE/umoci#155 openSUSE/umoci#163 -
A recent configuration issue caused
go vetandgo lintto not run as part
of our CI jobs. This means that some of the information submitted as part of
CII best practices badging was not accurate. This has been corrected,
and after review we concluded that only stylistic issues were discovered by
static analysis. openSUSE/umoci#158 -
32-bit unit test builds were broken in a refactor in [0.3.0]. This has been
fixed, and we've added tests to our CI to ensure that something like this
won't go unnoticed in the future. openSUSE/umoci#157 -
umoci unpackwould not correctly preserve set{uid,gid} bits. While this
would not cause issues when building an image (as we only create a manifest
of the final extracted rootfs), it would cause issues for other users of
umoci. openSUSE/umoci#166 openSUSE/umoci#169 -
Updated to v0.4.1 of
go-mtree, which fixes several minor
bugs with manifest generation. openSUSE/umoci#176 -
umoci unpackwould not handle "weird" tar archive layers previously (it
would error out with DiffID errors). While this wouldn't cause issues for
layers generated using Go'sarchive/tarimplementation, it would cause
issues for GNU gzip and other such tools. openSUSE/umoci#178
openSUSE/umoci#179 -
umoci unpack's mapping options (--uid-mapand--gid-map) have had an
interface change, to better match theuser_namespaces(7)
interfaces. Note that this is a breaking change, but the workaround is to
switch to the trivially different (but now more consistent) format.
openSUSE/umoci#167 -
umoci unpackused to create the bundle and rootfs with world
read-and-execute permissions by default. This could potentially result in an
unsafe rootfs (containing dangerous setuid binaries for instance) being
accessible by an unprivileged user. This has been fixed by always setting the
mode of the bundle to0700, which requires a user to explicitly work around
this basic protection. This scenario was documented in our security
documentation previously, but has now been fixed. openSUSE/umoci#181
openSUSE/umoci#182
Thanks to all of the contributors that made this release possible:
- Aleksa Sarai asarai@suse.de
- Jonathan Boulle jonathanboulle@gmail.com
- Serge Hallyn serge@hallyn.com
Signed-off-by: Aleksa Sarai asarai@suse.de
umoci 0.3.0
umocinow passes all of the requirements for the CII best practices
bading program. openSUSE/umoci#134umocialso now has more extensive architecture, quick-start and
roadmap documentation. openSUSE/umoci#134umocinow supports1.0.0of the OCI image
specification and1.0.0of the OCI runtime
specification, which are the first milestone release.
Note that there are still some remaining UX issues with--imageand
other parts ofumociwhich may be subject to change in future
versions. In particular, this update of the specification now means
that images may have ambiguous tags.umociwill warn you if an
operation may have an ambiguous result, but we plan to improve this
functionality far more in the future. openSUSE/umoci#133
openSUSE/umoci#142umocialso now supports more complicated descriptor walk structures,
and also handles mutation of such structures more sanely. At the
moment, this functionality has not been used "in the wild" andumoci
doesn't have the UX to create such structures (yet) but these will be
implemented in future versions. openSUSE/umoci#145umoci repacknow supports--mask-pathto ignore changes in the
rootfs that are in a child of at least one of the provided masks when
generating new layers. openSUSE/umoci#127
- Error messages from
github.com/openSUSE/umoci/oci/cas/drivers/dir
actually make sense now. openSUSE/umoci#121 umoci unpacknow generatesconfig.jsonblobs according to the
still proposed OCI image specification conversion
document. openSUSE/umoci#120umoci repackalso now automatically addingConfig.Volumesfrom the
image configuration to the set of masked paths. This matches recently
added recommendations by the spec, but is a
backwards-incompatible change because the new default is that
Config.Volumeswill be masked. If you wish to retain the old
semantics, use--no-mask-volumes(though make sure to be aware of
the reasoning behindConfig.Volumemasking). openSUSE/umoci#127umocinow usesSecureJoinrather than a patched
version ofFollowSymlinkInScope. The two implementations are roughly
equivalent, butSecureJoinhas a nicer API and is maintained as a
separate project. openSUSE/umoci#148- Switched to using
golang.org/x/sys/unixoversyscallwhere
possible, which makes the codebase significantly cleaner.
openSUSE/umoci#141
Thanks to all of the contributors that made this release possible:
- Aleksa Sarai asarai@suse.de
- Maximilian Meister mmeister@suse.de
- Valentin Rothberg vrothberg@suse.com
Signed-off-by: Aleksa Sarai asarai@suse.de
umoci 0.2.1
hack/release.shautomates the process of generating all of the published
artefacts for releases. The new script also generates signed source code
archives. openSUSE/umoci#116umocinow outputs configurations that are compliant withv1.0.0-rc5of
the OCI runtime-spec. This means that now you can use runc
v1.0.0-rc3 withumoci(and rootless containers should work out of the box
if you use a development build of runc). openSUSE/umoci#114umoci unpackno longer adds a dummy linux.seccomp entry, and instead just
sets it to null. openSUSE/umoci#114
Signed-off-by: Aleksa Sarai asarai@suse.de
umoci 0.2.0
umocinow has some automated scripts for generated RPMs that are used in
openSUSE to automatically submit packages to OBS. openSUSE/umoci#101--clear=config.{cmd,entrypoint}is now supported. While this interface is a
bit weird (cmdandentrypointaren't treated atomically) this makes the
UX more consistent while we come up with a bettercmdandentrypointUX.
openSUSE/umoci#107- New subcommand:
umoci raw runtime-config. It generates the runtime-spec
config.json for a particular image without also unpacking the root
filesystem, allowing for users ofumocithat are regularly parsing
config.jsonwithout caring about the root filesystem to be more efficient.
However, a downside of this approach is that some image-spec fields
(Config.User) require a root filesystem in order to make sense, which is
why this command is hidden under theumoci-raw(1)subcommand (to make sure
only users that understand what they're doing use it). openSUSE/umoci#110 umoci'soci/casandoci/configlibraries have been massively refactored
and rewritten, to allow for third-parties to use the OCI libraries. The plan
is for these to eventually become part of an OCI project. openSUSE/umoci#90- The
oci/casinterface has been modifed to switch from*ispec.Descriptor
toispec.Descriptor. This is a breaking, but fairly insignificant, change.
openSUSE/umoci#89 umocinow uses an updated version ofgo-mtree, which has a complete
rewrite ofVisandUnvis. The rewrite ensures that unicode handling is
handled in a far more consistent and sane way. openSUSE/umoci#88umociused to setprocess.user.additionalGidsto the "normal value" when
unpacking an image in rootless mode, causing issues when trying to actually
run said bundle with runC. openSUSE/umoci#109
Thanks to all of the contributors that helped make this release happen:
- Aleksa Sarai asarai@suse.de
- Erik Hollensbe github@hollensbe.org
- Vincent Batts vbatts@hashbangbash.com
- Maximilian Meister mmeister@suse.de
- Antonio Murdaca runcom@redhat.com
Signed-off-by: Aleksa Sarai asarai@suse.de
umoci 0.1.0
CHANGELOG.mdhas now been added. openSUSE/umoci#76umocinow supportsv1.0.0-rc4images, which has made fairly minimal
changes to the schema (mainly related tomediaTypes). While this change
is backwards compatible (several fields were removed from the schema, but
the specification allows for "additional fields"), tools using older versions
of the specification may fail to operate on newer OCI images. There was no UX
change associated with this update.umoci tagwould fail to clobber existing tags, which was in contrast to how
the rest of the tag clobbering commands operated. This has been fixed and is
now consistent with the other commands. openSUSE/umoci#78umoci repacknow can correctly handle unicode-encoded filenames, allowing
the creation of containers that have oddly named files. This required fixes
to go-mtree (where the issue was). openSUSE/umoci#80
Signed-off-by: Aleksa Sarai asarai@suse.de
umoci 0.0.0
This is the first beta release of umoci, and it includes very few
changes from v0.0.0-rc3. However, at this point the UX is effectively
stable and umoci is properly tested. The (small) list of changes in this
release from -rc3 is:
- Static compilation now works properly. openSUSE/umoci#64
- 32-bit builds have been fixed, and now umoci works on 32-bit
architectures. openSUSE/umoci#70 - The unit tests can now be run inside the %check section of an rpmbuild
script, allowing for proper testing of packages when they are built on
openSUSE (and Fedora). openSUSE/umoci#65 - Unit tests have been massively expanded, as have the integration
tests. In addition, full coverage profiles (both unit and integration)
are generated to fully understand how much of the code is properly
tested. Currently it is at ~80%. openSUSE/umoci#68 openSUSE/umoci#69 - The logging output has been cleaned up to be much better for end-users
to read. It's also a lot less chatty now. openSUSE/umoci#73 - This project has now been moved to become an openSUSE project.
openSUSE/umoci#75
Signed-off-by: Aleksa Sarai asarai@suse.de
umoci 0.0.0~rc3
umoci has now gone a large amount of cleanup, and included the addition
of a few previously missing features. The main thing blocking a full
release is that manifest lists are still unsupported, and there are some
upstream PRs that define some of umoci's operations that need to be
merged before umoci can be considered a compliant implementation. In
addition, the logging library needs to be swapped (and the amount of
output reduced).
Here's a short list of features added:
- xattr support for both packing and unpacking was added, in particular
this code also handles the issue of security.selinux. More policy
decisions need to be added, but those are being discussed upstream.
cyphar/umoci#52 cyphar/umoci#49 - Ensure that environment variables have no duplicates. This ensures
that umoci won't duplicate environment variables in either Config.Env
or the extracted process.env. cyphar/umoci#30 - Add support for read-only CAS operations with a read-only filesystem.
Previously, attempting to open an OCI image on a read-only filesystem
would fail miserably, now you can do read-only operations without
issue. cyphar/umoci#47 - Garbage collection now also garbage collects old tmpdirs, and other
garbage from inside an image layout. cyphar/umoci#17 - Output a helpful comment about --rootless if you're getting EPERMs.
- Enable stack traces from an error if the --debug flag was applied to
umoci. This is a feature that hopefully will be added to pkg/errors
upstream. - Cleanups to vendoring of go-mtree so that it's much more
upstream-friendly.
Signed-off-by: Aleksa Sarai asarai@suse.com
umoci 0.0.0~rc2
umoci now has a stable UX, as well as proper documentation for the UX in
the form of generated man pages. Here's the full list of cool features:
- umoci v0.0.0-rc2 has support for rootless unpacking and repacking!
cyphar/umoci#26 - It also has support for regular UID and GID mapping! cyphar/umoci#26
- Symlinks and other similarly tricky unpacking problems have been
resolved. All symlink path components are resolved inside the root
filesystem of the container during unpacking. cyphar/umoci#27 - Tag modification commands (such as umoci-tag(1), umoci-rm(1),
umoci-ls(1)) have been implemented. cyphar/umoci#6 cyphar/umoci#40 - umoci-stat(1) has been implemented. Currently it only outputs history
information, but this will change in the future. It has stable JSON
output. cyphar/umoci#38 - umoci-init(1) and umoci-new(1) have been implemented, allowing for the
creation of entirely new images from scratch. cyphar/umoci#5
cyphar/umoci#42 - umoci-repack(1) and umoci-config(1) now automatically generate history
entries (since the history is actually used by tooling like skopeo). In
addition, the history mutation from umoci-config(1) has been removed
because it was just unsafe. In order for users to be able to configure
history entries' values, --history.* flags have been introduced.
cyphar/umoci# - umoci-unpack(1) now saves all of the important argument metadata
provided to it inside the generated bundle. These saved arguments are
loaded by umoci-repack(1) to make the workflow much more sane. - --image and --from arguments have been combined into skopeo-style
[:] arguments to --image. cyphar/umoci#39 - Errors encountered during generation of a delta layer now are
correctly propagated. cyphar/umoci#33 - Hardlinks are now correctly unpacked as bone-fide hardlinks.
cyphar/umoci#25 - Support for unpacking and configuring annotations (which is a
v1.0.0-rc3 feature of the OCI image specification). There's still some
work to be done upstream in making the unpacking procedure specified
but this is as good as you're going to get for a while.
cyphar/umoci#43 - umoci has full integration and unit testing. cyphar/umoci#12
- umoci now has validation integration tests to ensure that at every
stage of a test we could stop and still have a completely valid OCI
image and that every extracted bundle is a valid OCI runtime bundle.
This code is still being reworked (though much more slowly than before).
Hold off on using it anywhere until we hit the proper 0.0.0 release!
Signed-off-by: Aleksa Sarai asarai@suse.com
umoci 0.0.0~rc1
At this point, umoci implements enough functionality to be able to
extract, repack and modify OCI images. It is still missing major
functionality (such as the ability to create an entirely new image or
just create tags for images), but should be enough for a demo.
Please don't use this anywhere important. There are known security
issues with this release (which will be fixed before 0.0.0).
Signed-off-by: Aleksa Sarai asarai@suse.com