diff --git a/Makefile b/Makefile index 3bb0fd453..5a484d8fb 100644 --- a/Makefile +++ b/Makefile @@ -1,10 +1,24 @@ -all: pull-containers build-deps build-images +GIT_BRANCH := $(shell git rev-parse --abbrev-ref HEAD) +IMAGE_NAME = "asonix/masto-deps" -pull-containers: +masto: pull-deps images push-images + +all: pull-base deps push-deps pull-deps images push-images + +pull-base: ./container/pull-containers.sh -build-deps: - ./container/build-images.sh Dockerfile-deps ubuntu-dependencies +deps: + ./container/build-images.sh container/Dockerfile-deps $(IMAGE_NAME) -build-images: - ./container/build-images.sh Dockerfile $(git rev-parse --abbrev-ref HEAD) +push-deps: + ./container/push-containers.sh $(IMAGE_NAME) + +pull-deps: + ./container/pull-containers.sh $(IMAGE_NAME) + +images: + ./container/build-images.sh container/Dockerfile "$(GIT_BRANCH)" + +push-images: + ./container/push-containers.sh $(GIT_BRANCH) diff --git a/container/Dockerfile b/container/Dockerfile index 6b61a3c91..c1149c8d9 100644 --- a/container/Dockerfile +++ b/container/Dockerfile @@ -1,4 +1,4 @@ -FROM localhost/ubuntu-dependencies-amd64:latest as build-dep +FROM asonix/masto-deps:amd64 as build-dep # Use bash for the shell SHELL ["bash", "-c"] diff --git a/container/Dockerfile-deps b/container/Dockerfile-deps index 102521922..5090792f8 100644 --- a/container/Dockerfile-deps +++ b/container/Dockerfile-deps @@ -1,7 +1,4 @@ -FROM ubuntu:18.04 - -# Use bash for the shell -SHELL ["bash", "-c"] +FROM amd64/ubuntu:18.04 # Install Node ENV NODE_VER="12.11.1" diff --git a/container/build-images.sh b/container/build-images.sh index 1c76078b5..0501c2e6f 100755 --- a/container/build-images.sh +++ b/container/build-images.sh @@ -18,21 +18,25 @@ require_input() { require_input "$SOURCE" "Dockerfile" require_input "$TAG" "container tag" -architectures=('arm64v8' 'arm32v7' 'amd64') +ARCHITECTURES=('arm64v8' 'arm32v7' 'amd64') -for architecture in "${architectures[@]}"; do - sed "s/FROM ubuntu/FROM $architecture\/ubuntu/g" "$SOURCE" > ""$SOURCE"-$architecture" +for architecture in "${ARCHITECTURES[@]}"; do + cp "$SOURCE" "$SOURCE-$architecture" if [ "$architecture" == arm32v7 ]; then - sed -i'' 's/x64/armv7l/g' ""$SOURCE"-$architecture" # for node - sed -i'' 's/amd64/armhf/g' ""$SOURCE"-$architecture" # for tini + sed -i'' 's/:amd64/:arm32v7/g' "$SOURCE-$architecture" # source image + sed -i'' 's/FROM amd64/FROM arm32v7/g' "$SOURCE-$architecture" # source image + sed -i'' 's/x64/armv7l/g' "$SOURCE-$architecture" # for node + sed -i'' 's/amd64/armhf/g' "$SOURCE-$architecture" # for tini fi if [ "$architecture" == arm64v8 ]; then - sed -i'' 's/x64/arm64/g' ""$SOURCE"-$architecture" # for node - sed -i'' 's/amd64/arm64/g' ""$SOURCE"-$architecture" # for tini + sed -i'' 's/:amd64/:arm64v8/g' "$SOURCE-$architecture" # source image + sed -i'' 's/FROM amd64/FROM arm64v8/g' "$SOURCE-$architecture" # source image + sed -i'' 's/x64/arm64/g' "$SOURCE-$architecture" # for node + sed -i'' 's/amd64/arm64/g' "$SOURCE-$architecture" # for tini fi - buildah build-using-dockerfile -f ""$SOURCE"-$architecture" -t "$TAG-$architecture" .. + buildah build-using-dockerfile -f "$SOURCE-$architecture" -t "$TAG:$architecture" . - rm ""$SOURCE"-$architecture" + rm "$SOURCE-$architecture" done diff --git a/container/pull-containers.sh b/container/pull-containers.sh index 5d7314626..ab16e3efc 100755 --- a/container/pull-containers.sh +++ b/container/pull-containers.sh @@ -5,5 +5,9 @@ set -xe architectures=('arm64v8' 'arm32v7' 'amd64') for architecture in "${architectures[@]}"; do - podman pull "$architecture/ubuntu:18.04" + if [ "$1" == "" ]; then + podman pull "$architecture/ubuntu:18.04" + else + podman pull "$1:$architecture" + fi done diff --git a/container/push-containers.sh b/container/push-containers.sh new file mode 100755 index 000000000..37f449a7f --- /dev/null +++ b/container/push-containers.sh @@ -0,0 +1,23 @@ +#!/usr/bin/env bash + +set -xe + +TAG=$1 + +require_input() { + input=$1 + name=$2 + + if [ "$input" == "" ]; then + echo "Input, $name, required but not present" + exit 1; + fi +} + +require_input "$TAG" "container tag" + +ARCHITECTURES=('arm64v8' 'arm32v7' 'amd64') + +for arch in "${ARCHITECTURES[@]}"; do + podman push "$TAG:$arch" "docker://docker.io/asonix/masto-deps:$arch" +done