*: big rewrite

_(this is a WIP)_

for the requirements to not be so bound to RPM only, breaking collection
of sources out into "plugins". Currently not much more sophisticated
than just iterating through bash functions that expect 3 argugments.
rootfs of the inspectee; output path for the sources collected; manifest
path.
The idea for the manifest is still loose, but how best to follow up the
plugin which collected source, to then have the rich metadata available
to attach to the individual "layers" that are produced for each source
component.

for the requirement of most contrained non-root container running this
script as non-root, we'll switch away from buildah for now. This ought
to just be skopeo copy, unpacking, inspecting, json, and skopeo copy. No
mounting, no namespacing, etc.

for the sake of writing unit tests (i.e. `bats`), break the script into
a way that it can be sourced and run the functions individually. Only
act like the whole script when run directly.

If `umoci` is available it will get used for some functions (like
unpacking), but it is not required and will be attempted with jq and
bash otherwise.

Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
This commit is contained in:
Vincent Batts 2019-08-19 17:35:25 -04:00
parent f5db5f704f
commit 56fd7c4de9
Signed by: vbatts
GPG key ID: 10937E57733F1362
2 changed files with 782 additions and 69 deletions

View file

@ -1,9 +1,21 @@
FROM quay.io/buildah/stable
RUN dnf install -y skopeo && \
dnf clean all && \
mkdir -p /output
FROM fedora
RUN dnf install -y skopeo golang jq git
RUN dnf install -y make findutils
ENV GOPATH=/usr/share/gocode
ENV GOBIN=/usr/local/bin
RUN git clone https://github.com/openSUSE/umoci $GOPATH/src/github.com/openSUSE/umoci
RUN cd $GOPATH/src/github.com/openSUSE/umoci && \
make && \
mv umoci /usr/local/bin
COPY . /usr/local/bin/
VOLUME /var/lib/container
VOLUME /output
RUN mkdir -p /output
ENV OUTPUT_DIR=/output
ENTRYPOINT ["/usr/local/bin/BuildSourceImage.sh"]
VOLUME /output
ENV SRC_DIR=/src
VOLUME /src
#ENTRYPOINT ["/usr/local/bin/BuildSourceImage.sh"]