mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-23 00:02:38 -05:00
96 lines
3.7 KiB
Bash
Executable File
96 lines
3.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
###########################################################################
|
|
# before_install.sh
|
|
# ---------------------
|
|
# Date : March 2019
|
|
# Copyright : (C) 2019 by Denis Rouzaud
|
|
# Email : denis@opengis.ch
|
|
###########################################################################
|
|
# #
|
|
# This program is free software; you can redistribute it and/or modify #
|
|
# it under the terms of the GNU General Public License as published by #
|
|
# the Free Software Foundation; either version 2 of the License, or #
|
|
# (at your option) any later version. #
|
|
# #
|
|
###########################################################################
|
|
|
|
|
|
set -e
|
|
|
|
# test if ccache dir exists (coming from Travis cache)
|
|
[[ -d ${CCACHE_DIR} ]] && echo "cache directory (${CCACHE_DIR}) exists" || mkdir -p "${CCACHE_DIR}"
|
|
|
|
# copy ccache dir within QGIS source so it can be accessed from docker
|
|
cp -r ${CCACHE_DIR}/. ${TRAVIS_BUILD_DIR}/.ccache_image_build
|
|
|
|
echo "Cache directory size: "$(du -h --max-depth=0 ${TRAVIS_BUILD_DIR}/.ccache_image_build)
|
|
|
|
# calculate timeouts
|
|
CURRENT_TIME=$(date +%s)
|
|
TIMEOUT=$((( TRAVIS_AVAILABLE_TIME - TRAVIS_UPLOAD_TIME ) * 60 - CURRENT_TIME + TRAVIS_TIMESTAMP))
|
|
#TIMEOUT=$(( TIMEOUT < 300 ? 300 : TIMEOUT ))
|
|
echo "Timeout: ${TIMEOUT}s"
|
|
|
|
# building docker images
|
|
pushd "${TRAVIS_BUILD_DIR}/.docker"
|
|
echo "${bold}Building QGIS Docker image '${DOCKER_TAG}'...${endbold}"
|
|
DOCKER_BUILD_ARGS="--build-arg DOCKER_TAG=${DOCKER_TAG} \
|
|
--build-arg BUILD_TIMEOUT=${TIMEOUT} \
|
|
--build-arg CC --build-arg CXX"
|
|
docker build ${DOCKER_BUILD_ARGS} \
|
|
--cache-from "qgis/qgis:${DOCKER_TAG}" \
|
|
-t "qgis/qgis:BUILDER" \
|
|
-f qgis.dockerfile ..
|
|
|
|
docker run --name qgis_container qgis/qgis:BUILDER /bin/true
|
|
|
|
echo "Copy build cache from Docker container to Travis cache directory"
|
|
rm -rf "${CCACHE_DIR:?}/"*
|
|
mkdir -p ${CCACHE_DIR}
|
|
docker cp qgis_container:/QGIS/.ccache_image_build/. ${CCACHE_DIR}
|
|
|
|
docker cp qgis_container:/QGIS/build_exit_value ${HOME}/build_exit_value
|
|
|
|
if [[ $(cat ${HOME}/build_exit_value) == "TIMEOUT" ]]; then
|
|
echo "Build timeout, not pushing image or triggering PyQGIS docs"
|
|
exit 1
|
|
else
|
|
echo "${bold}Finalize image…${endbold}"
|
|
# enable experimental features in Docker to squash
|
|
echo '{ "experimental": true}' | sudo tee /etc/docker/daemon.json
|
|
sudo service docker restart
|
|
docker build ${DOCKER_BUILD_ARGS} \
|
|
--cache-from "qgis/qgis:BUILDER" \
|
|
--squash \
|
|
-t "qgis/qgis:${DOCKER_TAG}" \
|
|
-f qgis.dockerfile ..
|
|
|
|
echo "${bold}Pushing image to docker hub…${endbold}"
|
|
docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD"
|
|
docker push "qgis/qgis:${DOCKER_TAG}"
|
|
|
|
echo "Trigger build of PyQGIS Documentation…"
|
|
if [[ ${TRIGGER_PYQGIS_DOC} =~ ^TRUE$ ]]; then
|
|
body='{
|
|
"request": {
|
|
"branch":"master",
|
|
"message": "Trigger PyQGIS doc after release of __DOCKER_TAG__",
|
|
"config": {
|
|
"merge_mode": "deep_merge",
|
|
"matrix": {
|
|
"include": {
|
|
"env": ["QGIS_VERSION_BRANCH=__QGIS_VERSION_BRANCH__"]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}'
|
|
body=$(sed "s/__QGIS_VERSION_BRANCH__/${TRAVIS_BRANCH}/; s/__DOCKER_TAG__/${DOCKER_TAG}/" <<< $body)
|
|
curl -s -X POST -H "Content-Type: application/json" -H "Accept: application/json" \
|
|
-H "Travis-API-Version: 3" -H "Authorization: token $TRAVIS_TOKEN" -d "$body" \
|
|
https://api.travis-ci.org/repo/qgis%2Fpyqgis/requests
|
|
else
|
|
echo "skipped from configuration"
|
|
fi
|
|
fi
|