]> git.puffer.fish Git - mirror/frr.git/commitdiff
docker/alpine: Update buildscript to keep the docker image around 4030/head
authorChristian Franke <chris@opensourcerouting.org>
Wed, 27 Mar 2019 12:29:04 +0000 (13:29 +0100)
committerChristian Franke <chris@opensourcerouting.org>
Wed, 27 Mar 2019 14:39:54 +0000 (15:39 +0100)
Don't delete the Alpine docker image after the build.

Also, extract the packages from the build stage, so that we can
remove them from the final image.

.dockerignore
docker/alpine/Dockerfile
docker/alpine/build.sh

index f2fc34583d3e482edd93929b2d7864e41fec56cd..d613e18dfc0ae1e810854a5396fccab3b5c08aa0 100644 (file)
@@ -5,3 +5,4 @@
 **/*.lo
 **/*.so
 **/.libs
+docker/alpine/pkgs
index 80ddb30d5be0559d126720e7a1bbb436db053c5f..815983a3940a195b03a04aadc1e7ef61795c8aac 100644 (file)
@@ -1,6 +1,5 @@
 # This stage builds a dist tarball from the source
 FROM alpine:edge as source-builder
-ARG commit
 
 RUN mkdir -p /src/alpine
 COPY alpine/APKBUILD.in /src/alpine
@@ -13,11 +12,12 @@ RUN source /src/alpine/APKBUILD.in \
                gzip
 
 COPY . /src
+ARG PKGVER
 RUN cd /src \
        && ./bootstrap.sh \
        && ./configure \
                --enable-numeric-version \
-               --with-pkg-extra-version=_git$commit \
+               --with-pkg-extra-version="_git$PKGVER" \
        && make dist
 
 # This stage builds an apk from the dist tarball
@@ -52,6 +52,7 @@ RUN echo 'http://dl-cdn.alpinelinux.org/alpine/edge/testing' >> /etc/apk/reposit
                tini \
        && apk add \
                --no-cache \
-               --allow-untrusted /pkgs/apk/*/*.apk
+               --allow-untrusted /pkgs/apk/*/*.apk \
+       && rm -rf /pkgs
 COPY docker/alpine/docker-start /usr/lib/frr/docker-start
 ENTRYPOINT [ "/sbin/tini", "--", "/usr/lib/frr/docker-start" ]
index 5a79ebcdcbe70e4c2a9ef0238462821a6b250dad..22a36877c039d1f0f4301d86a05704b1845b0690 100755 (executable)
@@ -1,17 +1,30 @@
 #!/bin/sh
 
 set -e
-set -v
 set -x
 
 ##
-# commit must be converted to decimal
+# Package version needs to be decimal
 ##
-c=`git rev-parse --short=10 HEAD`
-commit=`printf '%u\n' 0x$c`
-docker build -f docker/alpine/Dockerfile \
-       --build-arg commit=$commit -t frr:alpine-$c .
-id=`docker create frr:alpine-$c`
-docker cp ${id}:/pkgs/ docker/alpine
-docker rm $id
-docker rmi frr:alpine-$c
+GITREV="$(git rev-parse --short=10 HEAD)"
+PKGVER="$(printf '%u\n' 0x$GITREV)"
+
+docker build \
+       --pull \
+       --file=docker/alpine/Dockerfile \
+       --build-arg="PKGVER=$PKGVER" \
+       --tag="frr:alpine-builder-$GITREV" \
+       --target=alpine-builder \
+       .
+
+CONTAINER_ID="$(docker create "frr:alpine-builder-$GITREV")"
+docker cp "${CONTAINER_ID}:/pkgs/" docker/alpine
+docker rm "${CONTAINER_ID}"
+
+docker build \
+       --file=docker/alpine/Dockerfile \
+       --build-arg="PKGVER=$PKGVER" \
+       --tag="frr:alpine-$GITREV" \
+       .
+
+docker rmi "frr:alpine-builder-$GITREV"