Last active
September 7, 2018 13:35
-
-
Save ervinb/bae1417d6a86fb6dda869092b5fc87cc to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
set -e | |
registry_version="2" | |
local_registry_port="5000" | |
local_registry_name="localhost" | |
local_registry_url="${local_registry_name}:${local_registry_port}" | |
docker_image_name="$SEMAPHORE_REPO_SLUG" | |
base_image_name="${local_registry_url}/${docker_image_name}" | |
semaphore_build_tag="${REVISION}_${SEMAPHORE_BUILD_NUMBER}" | |
semaphore_build_image="${base_image_name}:${semaphore_build_tag}" | |
function setup-local-registry(){ | |
if ! (docker ps | grep "registry:$registry_version" &> /dev/null); then | |
echo ">> Setting up local Docker registry on port ${local_registry_port}" | |
echo "{\"insecure-registries\" : [\"$local_registry_url\"]}" | sudo tee /etc/docker/daemon.json | |
registry_cid=$(docker run -d -p $local_registry_port:$local_registry_port -v $SEMAPHORE_CACHE_DIR/registry:/var/lib/registry --restart=always --name registry-$(date +%s) registry:$registry_version) | |
echo ">> Waiting for the local registry to be accessible" | |
while true; do | |
curl http://${local_registry_url}/v2/_catalog 2>/dev/null && break | |
sleep 2 | |
done | |
fi | |
} | |
function semaphore-docker-build(){ | |
setup-local-registry | |
docker pull $base_image_name || true | |
echo $SEMAPHORE_CACHE_DIR >> .dockerignore | |
if (docker pull $base_image_name &> /dev/null); then | |
echo ">> Base image $base_image_name pulled from local registry." | |
fi | |
echo ">> Building image" | |
docker build --cache-from $base_image_name -t ${semaphore_build_image} $@ | |
echo ">> Tagging image" | |
docker tag $semaphore_build_image ${base_image_name}:latest | |
echo ">> Uploading to local Docker registry" | |
docker push $semaphore_build_image | |
docker push $base_image_name | |
echo ">> Stopping local Docker registry" | |
docker stop $registry_cid | |
echo ">> Done" | |
} | |
semaphore-docker-build "$@" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Starts a local registry and stores built images inside it.
Install the script
Usage