automate/020_docker-buildx.sh

129 lines
4.0 KiB
Bash

#!/usr/bin/env bash
ARCH=$(dpkg --print-architecture)
if [[ ${ARCH} == "armhf" ]]; then ARCH="arm-v7"; fi
USER="docker"
PROJECT="buildx"
LICENSE="apache2"
SECTION="admin"
HOMEPAGE="https://docs.docker.com/buildx/working-with-buildx/"
BUILD_HOME="/var/tmp/buildx_build"
#VERSION="2.1.0"
PACKAGE="docker-buildx"
VERSION=$(curl "https://api.github.com/repos/${USER}/${PROJECT}/tags?per_page=5" | jq '[ .[] | select(.name|test("v[[:digit:].]+$"))]|.[0] | .name')
DEB_VERSION=$(echo ${VERSION} | tr -d "\"" | tr -d "v") # strip the preceding 'v'
#VERSION="1.0.0"
DEBEMAIL="person@company.tld"
DEBFULLNAME="Testy McTester"
DESCRIPTION="."
LONG_DESCRIPTION=" ."
REQUIRES="docker-ce"
BUILD_DIR="/var/tmp/buildx_build"
WORKDIR="/var/tmp/buildx_build"
## Checkinstall variables - see defaults in /etc/checkinstallrc
DOC_DIR=/usr/share/doc
# make a new temporary directory for this use to avoid permission issues.
BASE_TMP_DIR=~/tmptmp/checkinstall_tmp
#-------------------------------------------------------------------------------
mkdir -p ${BUILD_DIR}
## Create and populate the install scripts and documentation for checkinstall
cat > ${BUILD_DIR}/description-pak << EOF
Docker Buildx is a CLI plugin that extends the docker command with the full support of the features provided by Moby BuildKit builder toolkit. It provides the same user experience as docker build with many new features like creating scoped builder instances and building against multiple nodes concurrently.
EOF
# | preinstall-pak | Run BEFORE the package is INSTALLED |
cat > ${BUILD_DIR}/preinstall-pak << EOF
#!/usr/bin/env bash
EOF
# | postinstall-pak | Run AFTER the package is INSTALLED |
cat > ${BUILD_DIR}/postinstall-pak << EOF
#!/usr/bin/env bash
EOF
# | preremove-pak | Run BEFORE the package is REMOVED |
cat > ${BUILD_DIR}/preremove-pak << EOF
#!/usr/bin/env bash
EOF
# | postremove-pak | Run AFTER the package is REMOVED
cat > ${BUILD_DIR}/postremove-pak << EOF
#!/usr/bin/env bash
EOF
## Make the doc-pak directory for README, INSTALL, COPYING, Changelog, TODO, CREDITS
mkdir -p ${BUILD_DIR}/doc-pak
#cp README INSTALL COPYING Changelog TODO CREDITS doc-pak
cat > ${BUILD_DIR}/doc-pak/README << 'EOF'
Docker CLI plugin for extended build capabilities with BuildKit
buildx is Tech Preview
TL;DR
Familiar UI from docker build
Full BuildKit capabilities with container driver
Multiple builder instance support
Multi-node builds for cross-platform images
Compose build support
WIP: High-level build constructs (bake)
In-container driver support (both Docker and Kubernetes)
see: http://github.com/docker/buildx
EOF
cat > ${BUILD_DIR}/checkinstall_it.sh << FOE
## Checkinstall variables - see defaults in /etc/checkinstallrc
DOC_DIR=/usr/share/doc
# make a new temporary directory for this use to avoid permission issues.
BASE_TMP_DIR=~/tmptmp/checkinstall_tmp
mkdir -p '${BASE_TMP_DIR}'
# do your work
checkinstall -y --fstrans \
--pkgname=${PACKAGE} \
--pkgversion=${DEB_VERSION}\
--pkgrelease=${RELEASE} \
--pkgarch=${ARCH} \
--pkggroup=admin \
--pkglicense=LICENSE \
--pkgsource=${LATEST_URL} \
--maintainer=cyteen@ring-zero.co.uk \
--requires=${REQUIRES} \
--recommends=${RECOMENDS} \
--suggests=${SUGGESTS} \
-D \
bash ${BUILD_DIR}/install.sh
FOE
echo "Writing install.sh to: ${BUILD_DIR}/install.sh"
cat > ${BUILD_DIR}/install.sh << FOE
#!/usr/bin/env bash
set -e
#set -x
# buildx-${VERSION}.darwin-amd64
# buildx-${VERSION}.linux-amd64
# buildx-${VERSION}.linux-arm-v6
# buildx-${VERSION}.linux-arm-v7
# buildx-${VERSION}.linux-arm64
# buildx-${VERSION}.linux-ppc64le
# buildx-${VERSION}.linux-s390x
DEST_DIR=/root/.docker/cli-plugins
#mkdir -p ${DEST_DIR}
mkdir -p /root/.docker/cli-plugins
#wget -O ${DEST_DIR}/docker-buildx http://github.com/docker/${PROJECT}/releases/download/${VERSION}/buildx-${VERSION}.linux-${ARCH}
wget -O /root/.docker/cli-plugins/docker-buildx http://github.com/docker/${PROJECT}/releases/download/${VERSION}/buildx-${VERSION}.linux-${ARCH}
FOE
bash ${BUILD_DIR}/checkinstall_it.sh