mirror of
https://github.com/bensuperpc/dockcross.git
synced 2024-12-23 00:54:26 +01:00
abc164e7c6
To workaround, CircleCI limitation [1]: "Please note that since we do not support parallel deployment, specifying ‘parallel:true’ in the deployment phase will cause an error." This commit moves the deployment step as the last action of the test step. Doing so will ensure, every container will take care of pushing images it was responsible to build. [1] https://circleci.com/docs/parallel-manual-setup/#simple-example
99 lines
3.1 KiB
YAML
99 lines
3.1 KiB
YAML
|
|
env:
|
|
- IMAGE=android-arm
|
|
- IMAGE=browser-asmjs
|
|
- IMAGE=linux-arm64
|
|
- IMAGE=linux-armv5
|
|
- IMAGE=linux-armv6
|
|
- IMAGE=linux-armv7
|
|
- IMAGE=linux-ppc64le
|
|
- IMAGE=linux-x64
|
|
- IMAGE=linux-x86
|
|
- IMAGE=manylinux-x64
|
|
- IMAGE=manylinux-x86
|
|
- IMAGE=windows-x64
|
|
- IMAGE=windows-x86
|
|
command:
|
|
- |
|
|
if [[ $STEP == "dependencies" ]]; then
|
|
if [[ $CIRCLE_NODE_INDEX == 0 ]]; then
|
|
if [[ ! -f ~/BASE_AVAILABLE ]]; then
|
|
|
|
if [[ -e ~/docker/base.tar ]]; then
|
|
echo "Loading base.tar from ~/docker cache"
|
|
time docker load -i ~/docker/base.tar
|
|
echo "Loading base.tar from ~/docker cache - done"
|
|
fi
|
|
|
|
echo "Pulling dockcross/base"
|
|
time docker pull dockcross/base
|
|
echo "Pulling dockcross/base - done"
|
|
|
|
time make base.test
|
|
|
|
echo "Saving debian:jessie dockcross/base into ~/docker cache"
|
|
mkdir -p ~/docker; time docker save -o ~/docker/base.tar debian:jessie dockcross/base
|
|
echo "Saving debian:jessie dockcross/base into ~/docker cache - done"
|
|
|
|
touch ~/BASE_AVAILABLE
|
|
else
|
|
echo "Base image already available"
|
|
fi
|
|
else
|
|
if [[ ! -f ~/BASE_DOWNLOADED ]]; then
|
|
echo "Waiting for node0"
|
|
while true; do
|
|
sleep 5
|
|
ssh -q node0 [[ -f ~/BASE_AVAILABLE ]]
|
|
exit_code=$?
|
|
if [[ $exit_code -eq 0 ]]; then break; elif [[ $exit_code -eq 1 ]]; then echo -n "."; else exit $exit_code;fi
|
|
done
|
|
echo "Waiting for node0 - done"
|
|
|
|
echo "Copying base image from node0"
|
|
mkdir -p ~/docker; time scp node0:~/docker/base.tar ~/docker/base.tar
|
|
echo "Copying base image from node0 - done"
|
|
|
|
touch ~/BASE_DOWNLOADED
|
|
else
|
|
echo "Base image already downloaded"
|
|
fi
|
|
fi
|
|
fi
|
|
if [[ $STEP == "test" ]]; then
|
|
if [[ -e ~/docker/$IMAGE.tar ]]; then
|
|
echo "Loading $IMAGE.tar from ~/docker cache"
|
|
time docker load -i ~/docker/$IMAGE.tar
|
|
echo "Loading $IMAGE.tar from ~/docker cache - done"
|
|
fi
|
|
|
|
echo "Pulling dockcross/$IMAGE"
|
|
time docker pull dockcross/$IMAGE
|
|
echo "Pulling dockcross/$IMAGE - done"
|
|
|
|
echo "Loading base.tar from ~/docker cache"
|
|
time docker load -i ~/docker/base.tar
|
|
echo "Loading base.tar from ~/docker cache - done"
|
|
|
|
time make $IMAGE.test
|
|
|
|
echo "Saving dockcross/$IMAGE into ~/docker cache"
|
|
mkdir -p ~/docker; time docker save dockcross/$IMAGE > ~/docker/$IMAGE.tar
|
|
echo "Saving dockcross/$IMAGE into ~/docker cache - done"
|
|
fi
|
|
if [[ $STEP == "deployment" ]] && [[ "$CIRCLE_BRANCH" == "master" ]]; then
|
|
echo "Docker login"
|
|
docker login -e $DOCKER_EMAIL -u $DOCKER_USER -p $DOCKER_PASS
|
|
echo "Docker login - done"
|
|
if [[ $CIRCLE_NODE_INDEX == 0 ]] && [[ ! -f ~/BASE_PUSHED ]]; then
|
|
echo "Pushing dockcross/base"
|
|
time docker push dockcross/base
|
|
echo "Pulling dockcross/base - done"
|
|
touch ~/BASE_PUSHED
|
|
fi
|
|
|
|
echo "Pushing dockcross/$IMAGE"
|
|
time docker push dockcross/$IMAGE
|
|
echo "Pushing dockcross/$IMAGE - done"
|
|
fi
|