mirror of
https://github.com/bensuperpc/dockcross.git
synced 2025-02-02 07:46:37 +01:00
ci: Optimize parallel build
* style: Rename TASK to STEP * do not pull base image after it was copied from node0 and loaded. It caused the current Dockerfile to be out-of-sync with the current image. * do not pull images after loading the downloaded and up-to-date base.tar. It was overwriting the base.tar downloaded and loaded. * save debian:jessie into base.tar * use "time" command to help identify long running operation * rename marker file from "BASE_READY" to "BASE_AVAILABLE" * build base image only if needed.
This commit is contained in:
parent
b5c2221288
commit
1e4de86ca6
@ -14,42 +14,45 @@ env:
|
|||||||
- IMAGE=windows-x86
|
- IMAGE=windows-x86
|
||||||
command:
|
command:
|
||||||
- |
|
- |
|
||||||
if [[ $TASK == "test" ]]; then
|
if [[ $STEP == "test" ]]; then
|
||||||
if [[ $CIRCLE_NODE_INDEX == 0 ]]; then
|
if [[ $CIRCLE_NODE_INDEX == 0 ]]; then
|
||||||
if [[ -e ~/docker/base.tar ]]; then docker load -i ~/docker/base.tar; fi
|
if [[ ! -f ~/BASE_AVAILABLE ]]; then
|
||||||
docker pull dockcross/base
|
if [[ -e ~/docker/base.tar ]]; then time docker load -i ~/docker/base.tar; fi
|
||||||
make base.test
|
time docker pull dockcross/base
|
||||||
mkdir -p ~/docker; docker save dockcross/base > ~/docker/base.tar
|
time make base.test
|
||||||
touch ~/BASE_READY
|
mkdir -p ~/docker; time docker save -o ~/docker/base.tar debian:jessie dockcross/base
|
||||||
|
touch ~/BASE_AVAILABLE
|
||||||
|
else
|
||||||
|
echo "Base image already available"
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
if [[ ! -f ~/BASE_LOADED ]]; then
|
if [[ ! -f ~/BASE_DOWNLOADED ]]; then
|
||||||
echo "Waiting for node0"
|
echo "Waiting for node0"
|
||||||
while true; do
|
while true; do
|
||||||
sleep 5
|
sleep 5
|
||||||
ssh -q node0 [[ -f ~/BASE_READY ]]
|
ssh -q node0 [[ -f ~/BASE_AVAILABLE ]]
|
||||||
exit_code=$?
|
exit_code=$?
|
||||||
if [[ $exit_code -eq 0 ]]; then break; elif [[ $exit_code -eq 1 ]]; then echo -n "."; else exit $exit_code;fi
|
if [[ $exit_code -eq 0 ]]; then break; elif [[ $exit_code -eq 1 ]]; then echo -n "."; else exit $exit_code;fi
|
||||||
done
|
done
|
||||||
echo ""
|
echo ""
|
||||||
echo "Copying base image from node0"
|
echo "Copying base image from node0"
|
||||||
mkdir -p ~/docker; scp node0:~/docker/base.tar ~/docker/base.tar
|
mkdir -p ~/docker; time scp node0:~/docker/base.tar ~/docker/base.tar
|
||||||
docker load -i ~/docker/base.tar
|
touch ~/BASE_DOWNLOADED
|
||||||
docker pull dockcross/base
|
|
||||||
touch ~/BASE_LOADED
|
|
||||||
else
|
else
|
||||||
echo "Base image already loaded"
|
echo "Base image already downloaded"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
if [[ -e ~/docker/$IMAGE.tar ]]; then docker load -i ~/docker/$IMAGE.tar; fi
|
if [[ -e ~/docker/$IMAGE.tar ]]; then time docker load -i ~/docker/$IMAGE.tar; fi
|
||||||
docker pull dockcross/$IMAGE
|
time docker pull dockcross/$IMAGE
|
||||||
make $IMAGE.test
|
time docker load -i ~/docker/base.tar
|
||||||
mkdir -p ~/docker; docker save dockcross/$IMAGE > ~/docker/$IMAGE.tar
|
time make $IMAGE.test
|
||||||
|
mkdir -p ~/docker; time docker save dockcross/$IMAGE > ~/docker/$IMAGE.tar
|
||||||
fi
|
fi
|
||||||
- |
|
- |
|
||||||
if [[ $TASK == "deploy" ]]; then
|
if [[ $STEP == "deployment" ]]; then
|
||||||
docker login -e $DOCKER_EMAIL -u $DOCKER_USER -p $DOCKER_PASS
|
docker login -e $DOCKER_EMAIL -u $DOCKER_USER -p $DOCKER_PASS
|
||||||
if [[ $CIRCLE_NODE_INDEX == 0 ]] && [[ ! -f ~/BASE_PUSHED ]]; then
|
if [[ $CIRCLE_NODE_INDEX == 0 ]] && [[ ! -f ~/BASE_PUSHED ]]; then
|
||||||
docker push dockcross/base
|
time docker push dockcross/base
|
||||||
touch ~/BASE_PUSHED
|
touch ~/BASE_PUSHED
|
||||||
fi
|
fi
|
||||||
docker push dockcross/$IMAGE
|
docker push dockcross/$IMAGE
|
||||||
|
@ -21,7 +21,7 @@ test:
|
|||||||
parallel: true
|
parallel: true
|
||||||
timeout: 3000
|
timeout: 3000
|
||||||
environment:
|
environment:
|
||||||
TASK: test
|
STEP: test
|
||||||
|
|
||||||
deployment:
|
deployment:
|
||||||
hub:
|
hub:
|
||||||
@ -30,4 +30,4 @@ deployment:
|
|||||||
- circleci-matrix:
|
- circleci-matrix:
|
||||||
parallel: true
|
parallel: true
|
||||||
environment:
|
environment:
|
||||||
TASK: deploy
|
STEP: deployment
|
||||||
|
Loading…
x
Reference in New Issue
Block a user