From 599714d9f2b5d0715a5cda0275fbea64d581bbc6 Mon Sep 17 00:00:00 2001 From: Chris Evich Date: Tue, 2 Apr 2019 11:38:14 -0400 Subject: Cirrus: Support special-case modes of testing Previously libpod CI was fairly straight-forward, run unit and integration tests in a standard set of 3 VMs. Off on the side was a single special case of running tests as an ordinary user. There is a desire to stop using the PAPR system to support testing inside of a container. Since having two special cases potentially invites more down the road, make provisions to handle them more gracefully. This commit introduces an environment variable: ``$SPECIALMODE``. It's value has the following meanings within the CI scripts: Mode 'none': Nothing special, business as usual (default) Mode 'rootless': Rootless testing Mode 'in_podman': Build container, run integration tests in it. This will make adding additional special-cases later easier, as well as extending the special cases in a Matrix across multiple OS's. Signed-off-by: Chris Evich --- Dockerfile.fedora | 96 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 Dockerfile.fedora (limited to 'Dockerfile.fedora') diff --git a/Dockerfile.fedora b/Dockerfile.fedora new file mode 100644 index 000000000..e38e2e056 --- /dev/null +++ b/Dockerfile.fedora @@ -0,0 +1,96 @@ +FROM registry.fedoraproject.org/fedora:28 + +RUN dnf -y install btrfs-progs-devel \ + atomic-registries \ + bzip2 \ + conmon \ + device-mapper-devel \ + findutils \ + git \ + glib2-devel \ + glibc-static \ + gnupg \ + golang \ + golang-github-cpuguy83-go-md2man \ + gpgme-devel \ + libassuan-devel \ + libseccomp-devel \ + libselinux-devel \ + containers-common \ + runc \ + make \ + ostree-devel \ + lsof \ + which\ + golang-github-cpuguy83-go-md2man \ + procps-ng \ + nmap-ncat \ + xz \ + slirp4netns \ + container-selinux \ + iptables && dnf clean all + +# Install CNI plugins +ENV CNI_COMMIT 412b6d31280682bb4fab4446f113c22ff1886554 +RUN set -x \ + && export GOPATH="$(mktemp -d)" \ + && git clone https://github.com/containernetworking/plugins.git "$GOPATH/src/github.com/containernetworking/plugins" \ + && cd "$GOPATH/src/github.com/containernetworking/plugins" \ + && git checkout -q "$CNI_COMMIT" \ + && ./build.sh \ + && mkdir -p /usr/libexec/cni \ + && cp bin/* /usr/libexec/cni \ + && rm -rf "$GOPATH" + +# Install buildah +RUN set -x \ + && export GOPATH=/go \ + && git clone https://github.com/containers/buildah "$GOPATH/src/github.com/containers/buildah" \ + && cd "$GOPATH/src/github.com/containers/buildah" \ + && make \ + && make install + +# Install ginkgo +RUN set -x \ + && export GOPATH=/go \ + && go get -u github.com/onsi/ginkgo/ginkgo \ + && install -D -m 755 "$GOPATH"/bin/ginkgo /usr/bin/ + +# Install gomega +RUN set -x \ + && export GOPATH=/go \ + && go get github.com/onsi/gomega/... + +# Install easyjson +RUN set -x \ + && export GOPATH=/go \ + && go get -u github.com/mailru/easyjson/... \ + && install -D -m 755 "$GOPATH"/bin/easyjson /usr/bin/ + +# Install conmon +ENV CRIO_COMMIT 7a283c391abb7bd25086a8ff91dbb36ebdd24466 +RUN set -x \ + && export GOPATH="$(mktemp -d)" \ + && git clone https://github.com/kubernetes-sigs/cri-o.git "$GOPATH/src/github.com/kubernetes-sigs/cri-o.git" \ + && cd "$GOPATH/src/github.com/kubernetes-sigs/cri-o.git" \ + && git fetch origin --tags \ + && git checkout -q "$CRIO_COMMIT" \ + && make \ + && make bin/conmon \ + && install -D -m 755 bin/conmon /usr/libexec/podman/conmon \ + && rm -rf "$GOPATH" + +# Install cni config +#RUN make install.cni +RUN mkdir -p /etc/cni/net.d/ +COPY cni/87-podman-bridge.conflist /etc/cni/net.d/87-podman-bridge.conflist + +# Make sure we have some policy for pulling images +RUN mkdir -p /etc/containers +COPY test/policy.json /etc/containers/policy.json +COPY test/redhat_sigstore.yaml /etc/containers/registries.d/registry.access.redhat.com.yaml + +# Install varlink stuff +RUN pip3 install varlink + +WORKDIR /go/src/github.com/containers/libpod -- cgit v1.2.3-54-g00ecf