Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 742cee1

Browse files
committedMar 5, 2019
simplify CI scripts
by separating the testing and docker image building scripts there was almost no redundany in the scripts, it is much clearer now
1 parent 03fcded commit 742cee1

File tree

9 files changed

+159
-88
lines changed

9 files changed

+159
-88
lines changed
 
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#!/usr/bin/env bash
2+
###########################################################################
3+
# before_install.sh
4+
# ---------------------
5+
# Date : March 2016
6+
# Copyright : (C) 2016 by Matthias Kuhn
7+
# Email : matthias at opengis dot ch
8+
###########################################################################
9+
# #
10+
# This program is free software; you can redistribute it and/or modify #
11+
# it under the terms of the GNU General Public License as published by #
12+
# the Free Software Foundation; either version 2 of the License, or #
13+
# (at your option) any later version. #
14+
# #
15+
###########################################################################
16+
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
#!/usr/bin/env bash
2+
###########################################################################
3+
# before_script.sh
4+
# ---------------------
5+
# Date : August 2015
6+
# Copyright : (C) 2015 by Nyall Dawson
7+
# Email : nyall dot dawson at gmail dot com
8+
###########################################################################
9+
# #
10+
# This program is free software; you can redistribute it and/or modify #
11+
# it under the terms of the GNU General Public License as published by #
12+
# the Free Software Foundation; either version 2 of the License, or #
13+
# (at your option) any later version. #
14+
# #
15+
###########################################################################
16+
17+
set -e
18+
19+
.ci/travis/scripts/echo_travis_var.sh
20+
21+
pushd .docker
22+
23+
24+
25+
echo "travis_fold:start:docker_build"
26+
echo "${bold}Docker build deps${endbold}"
27+
docker --version
28+
29+
docker pull "qgis/qgis3-build-deps:${DOCKER_TAG}" || true
30+
docker build --cache-from "qgis/qgis3-build-deps:${DOCKER_TAG}" -t "qgis/qgis3-build-deps:${DOCKER_TAG}" -f ${DOCKER_BUILD_DEPS_FILE} .
31+
32+
echo "travis_fold:end:docker_build"
33+
34+
35+
popd

‎.ci/travis/docker_image/install.sh

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#!/usr/bin/env bash
2+
###########################################################################
3+
# install.sh
4+
# ---------------------
5+
# Date : March 2016
6+
# Copyright : (C) 2016 by Matthias Kuhn
7+
# Email : matthias at opengis dot ch
8+
###########################################################################
9+
# #
10+
# This program is free software; you can redistribute it and/or modify #
11+
# it under the terms of the GNU General Public License as published by #
12+
# the Free Software Foundation; either version 2 of the License, or #
13+
# (at your option) any later version. #
14+
# #
15+
###########################################################################
16+

‎.ci/travis/docker_image/script.sh

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
#!/usr/bin/env bash
2+
###########################################################################
3+
# script.sh
4+
# ---------------------
5+
# Date : March 2016
6+
# Copyright : (C) 2016 by Matthias Kuhn
7+
# Email : matthias at opengis dot ch
8+
###########################################################################
9+
# #
10+
# This program is free software; you can redistribute it and/or modify #
11+
# it under the terms of the GNU General Public License as published by #
12+
# the Free Software Foundation; either version 2 of the License, or #
13+
# (at your option) any later version. #
14+
# #
15+
###########################################################################
16+
17+
set -e
18+
19+
mkdir -p "CCACHE_DIR_IMAGE_BUILD"
20+
21+
# copy ccache dir within QGIS source so it can be accessed from docker
22+
cp -r ${CCACHE_DIR_IMAGE_BUILD} ${TRAVIS_BUILD_DIR}/.ccache_image_build
23+
# building docker images
24+
DIR=$(git rev-parse --show-toplevel)/.docker
25+
pushd "${DIR}"
26+
echo "${bold}Building QGIS Docker image '${DOCKER_TAG}'...${endbold}"
27+
docker build --build-arg DOCKER_TAG="${DOCKER_TAG}" \
28+
--cache-from "qgis/qgis:${DOCKER_TAG}" \
29+
-t "qgis/qgis:${DOCKER_TAG}" \
30+
-f qgis.dockerfile ..
31+
echo "${bold}Pushing image to docker hub...${endbold}"
32+
docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD"
33+
docker push "qgis/qgis:${DOCKER_TAG}"
34+
echo "Copy build cache from Docker container to Travis cache directory"
35+
rm -rf "${CCACHE_DIR_IMAGE_BUILD:?}/"*
36+
container_id=$(docker images -q "qgis/qgis:${DOCKER_TAG}")
37+
docker cp ${container_id}:/usr/src/QGIS/.ccache_image_build ${CCACHE_DIR_IMAGE_BUILD}
38+
popd
39+
echo "Trigger build of PyQGIS Documentation"
40+
body='{
41+
"request": {
42+
"branch":"master",
43+
"message": "Trigger PyQGIS doc build after release of new Docker image as __DOCKER_TAG__",
44+
"config": {
45+
"merge_mode": "deep_merge",
46+
"matrix": {
47+
"include": {
48+
"env": ["QGIS_VERSION_BRANCH=__QGIS_VERSION_BRANCH__"]
49+
}
50+
}
51+
}
52+
}
53+
}'
54+
body=$(sed "s/__QGIS_VERSION_BRANCH__/${TRAVIS_BRANCH}/; s/__DOCKER_TAG__/${DOCKER_TAG}/" <<< $body)
55+
curl -s -X POST -H "Content-Type: application/json" -H "Accept: application/json" \
56+
-H "Travis-API-Version: 3" -H "Authorization: token $TRAVIS_TOKEN" -d "$body" \
57+
https://api.travis-ci.org/repo/qgis%2Fpyqgis/requests

‎.ci/travis/linux/before_install.sh

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,3 @@
1414
# #
1515
###########################################################################
1616

17-
#pip3 install termcolor

‎.ci/travis/linux/before_script.sh

Lines changed: 5 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -19,36 +19,16 @@ set -e
1919
pushd .docker
2020

2121
DOCKER_DEPS_PUSH=$( [[ $TRAVIS_REPO_SLUG =~ qgis/QGIS ]] && [[ "${TRAVIS_EVENT_TYPE}" != "pull_request" ]] && echo "true" || echo "false" )
22-
DOCKER_DEPS_IMAGE_REBUILD=$( [[ $TRAVIS_COMMIT_MESSAGE =~ '[docker] update dependencies' ]] && echo "true" || echo "false" )
23-
24-
echo "travis_fold:start:travis_env"
25-
echo "${bold}Travis environment variables${endbold}"
26-
echo "TRAVIS_BRANCH: $TRAVIS_BRANCH"
27-
echo "TRAVIS_EVENT_TYPE: $TRAVIS_EVENT_TYPE"
28-
echo "DOCKER_TAG: $DOCKER_TAG"
29-
echo "TRAVIS_COMMIT_MESSAGE: $TRAVIS_COMMIT_MESSAGE"
30-
echo "DOCKER_DEPS_PUSH: $DOCKER_DEPS_PUSH"
31-
echo "DOCKER_DEPS_IMAGE_REBUILD: $DOCKER_DEPS_IMAGE_REBUILD"
32-
echo "DOCKER_BUILD_QGIS_IMAGE: $DOCKER_BUILD_QGIS_IMAGE"
33-
echo "DOCKER_BUILD_DEPS_FILE: $DOCKER_BUILD_DEPS_FILE"
34-
echo "TRAVIS_TIMESTAMP: $TRAVIS_TIMESTAMP"
35-
echo "travis_fold:end:travis_env"
3622

23+
.ci/travis/scripts/echo_travis_var.sh
3724

3825
echo "travis_fold:start:docker_build"
3926
echo "${bold}Docker build deps${endbold}"
4027
docker --version
41-
if [[ $DOCKER_BUILD_QGIS_IMAGE =~ false ]]; then
42-
docker-compose --version
43-
docker-compose -f ${TRAVIS_BUILD_DIR}/.docker/docker-compose.travis.yml config
44-
fi
45-
46-
if [[ $DOCKER_DEPS_IMAGE_REBUILD =~ true ]]; then
47-
docker build --no-cache -t "qgis/qgis3-build-deps:${DOCKER_TAG}" -f ${DOCKER_BUILD_DEPS_FILE} .
48-
else
49-
docker pull "qgis/qgis3-build-deps:${DOCKER_TAG}" || true
50-
docker build --cache-from "qgis/qgis3-build-deps:${DOCKER_TAG}" -t "qgis/qgis3-build-deps:${DOCKER_TAG}" -f ${DOCKER_BUILD_DEPS_FILE} .
51-
fi
28+
docker-compose --version
29+
docker-compose -f ${TRAVIS_BUILD_DIR}/.docker/docker-compose.travis.yml config
30+
docker pull "qgis/qgis3-build-deps:${DOCKER_TAG}" || true
31+
docker build --cache-from "qgis/qgis3-build-deps:${DOCKER_TAG}" -t "qgis/qgis3-build-deps:${DOCKER_TAG}" -f ${DOCKER_BUILD_DEPS_FILE} .
5232
echo "travis_fold:end:docker_build"
5333

5434
echo "travis_fold:start:docker_push"

‎.ci/travis/linux/script.sh

Lines changed: 16 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -16,62 +16,21 @@
1616

1717
set -e
1818

19-
mkdir -p "CCACHE_DIR_IMAGE_BUILD"
19+
# running QGIS tests
20+
docker-compose -f ${TRAVIS_BUILD_DIR}/.docker/docker-compose.travis.yml run --rm qgis-deps
2021

21-
if [[ ${DOCKER_BUILD_QGIS_IMAGE} =~ true ]]; then
22-
# copy ccache dir within QGIS source so it can be accessed from docker
23-
cp -r ${CCACHE_DIR_IMAGE_BUILD} ${TRAVIS_BUILD_DIR}/.ccache_image_build
24-
# building docker images
25-
DIR=$(git rev-parse --show-toplevel)/.docker
26-
pushd "${DIR}"
27-
echo "${bold}Building QGIS Docker image '${DOCKER_TAG}'...${endbold}"
28-
docker build --build-arg DOCKER_TAG="${DOCKER_TAG}" \
29-
--cache-from "qgis/qgis:${DOCKER_TAG}" \
30-
-t "qgis/qgis:${DOCKER_TAG}" \
31-
-f qgis.dockerfile ..
32-
echo "${bold}Pushing image to docker hub...${endbold}"
33-
docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD"
34-
docker push "qgis/qgis:${DOCKER_TAG}"
35-
echo "Copy build cache from Docker container to Travis cache directory"
36-
rm -rf "${CCACHE_DIR_IMAGE_BUILD:?}/"*
37-
container_id=$(docker images -q "qgis/qgis:${DOCKER_TAG}")
38-
docker cp ${container_id}:/usr/src/QGIS/.ccache_image_build ${CCACHE_DIR_IMAGE_BUILD}
39-
popd
40-
echo "Trigger build of PyQGIS Documentation"
41-
body='{
42-
"request": {
43-
"branch":"master",
44-
"message": "Trigger PyQGIS doc build after release of new Docker image as __DOCKER_TAG__",
45-
"config": {
46-
"merge_mode": "deep_merge",
47-
"matrix": {
48-
"include": {
49-
"env": ["QGIS_VERSION_BRANCH=__QGIS_VERSION_BRANCH__"]
50-
}
51-
}
52-
}
53-
}
54-
}'
55-
body=$(sed "s/__QGIS_VERSION_BRANCH__/${TRAVIS_BRANCH}/; s/__DOCKER_TAG__/${DOCKER_TAG}/" <<< $body)
56-
curl -s -X POST -H "Content-Type: application/json" -H "Accept: application/json" \
57-
-H "Travis-API-Version: 3" -H "Authorization: token $TRAVIS_TOKEN" -d "$body" \
58-
https://api.travis-ci.org/repo/qgis%2Fpyqgis/requests
59-
else
60-
# running QGIS tests
61-
docker-compose -f ${TRAVIS_BUILD_DIR}/.docker/docker-compose.travis.yml run --rm qgis-deps
22+
# running tests for the python test runner
23+
docker run -d --name qgis-testing-environment -v ${TRAVIS_BUILD_DIR}/tests/src/python:/tests_directory -e DISPLAY=:99 "qgis/qgis:${DOCKER_TAG}"
24+
sleep 10 # Wait for xvfb to finish starting
25+
# Temporary workaround until docker images are built
26+
docker cp ${TRAVIS_BUILD_DIR}/.docker/qgis_resources/test_runner/qgis_testrunner.sh qgis-testing-environment:/usr/bin/qgis_testrunner.sh
27+
# Run tests in the docker
28+
# Passing cases:
29+
TEST_SCRIPT_PATH=${TRAVIS_BUILD_DIR}/.ci/travis/linux/docker_test.sh
30+
[[ $(${TEST_SCRIPT_PATH} test_testrunner.run_passing) -eq '0' ]]
31+
[[ $(${TEST_SCRIPT_PATH} test_testrunner.run_skipped_and_passing) -eq '0' ]]
32+
# Failing cases:
33+
[[ $(${TEST_SCRIPT_PATH} test_testrunner) -eq '1' ]]
34+
[[ $(${TEST_SCRIPT_PATH} test_testrunner.run_all) -eq '1' ]]
35+
[[ $(${TEST_SCRIPT_PATH} test_testrunner.run_failing) -eq '1' ]]
6236

63-
# running tests for the python test runner
64-
docker run -d --name qgis-testing-environment -v ${TRAVIS_BUILD_DIR}/tests/src/python:/tests_directory -e DISPLAY=:99 "qgis/qgis:${DOCKER_TAG}"
65-
sleep 10 # Wait for xvfb to finish starting
66-
# Temporary workaround until docker images are built
67-
docker cp ${TRAVIS_BUILD_DIR}/.docker/qgis_resources/test_runner/qgis_testrunner.sh qgis-testing-environment:/usr/bin/qgis_testrunner.sh
68-
# Run tests in the docker
69-
# Passing cases:
70-
TEST_SCRIPT_PATH=${TRAVIS_BUILD_DIR}/.ci/travis/linux/docker_test.sh
71-
[[ $(${TEST_SCRIPT_PATH} test_testrunner.run_passing) -eq '0' ]]
72-
[[ $(${TEST_SCRIPT_PATH} test_testrunner.run_skipped_and_passing) -eq '0' ]]
73-
# Failing cases:
74-
[[ $(${TEST_SCRIPT_PATH} test_testrunner) -eq '1' ]]
75-
[[ $(${TEST_SCRIPT_PATH} test_testrunner.run_all) -eq '1' ]]
76-
[[ $(${TEST_SCRIPT_PATH} test_testrunner.run_failing) -eq '1' ]]
77-
fi

‎.ci/travis/scripts/echo_travis_var.sh

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
#!/usr/bin/env bash
2+
3+
echo "travis_fold:start:travis_env"
4+
echo "${bold}Travis environment variables${endbold}"
5+
echo "TRAVIS_BRANCH: $TRAVIS_BRANCH"
6+
echo "TRAVIS_EVENT_TYPE: $TRAVIS_EVENT_TYPE"
7+
echo "DOCKER_TAG: $DOCKER_TAG"
8+
echo "TRAVIS_COMMIT_MESSAGE: $TRAVIS_COMMIT_MESSAGE"
9+
echo "DOCKER_DEPS_PUSH: $DOCKER_DEPS_PUSH"
10+
echo "DOCKER_BUILD_DEPS_FILE: $DOCKER_BUILD_DEPS_FILE"
11+
echo "TRAVIS_TIMESTAMP: $TRAVIS_TIMESTAMP"
12+
echo "travis_fold:end:travis_env"

‎.travis.yml

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ matrix:
4343
env:
4444
- TRAVIS_CONFIG=linux
4545
- DOCKER_TAG=$( [[ $TRAVIS_REPO_SLUG =~ qgis/QGIS ]] && echo $TRAVIS_BRANCH | sed 's/master/latest/' || echo "latest" )
46-
- DOCKER_BUILD_QGIS_IMAGE=false
4746
- DOCKER_BUILD_DEPS_FILE=qgis3-build-deps.dockerfile
4847

4948
##########################################################
@@ -104,9 +103,8 @@ matrix:
104103
if: repo = qgis/QGIS AND (tag IS PRESENT OR type = cron)
105104
services: docker
106105
env:
107-
- TRAVIS_CONFIG=linux
106+
- TRAVIS_CONFIG=docker_image
108107
- DOCKER_TAG=$( echo $TRAVIS_BRANCH | sed 's/master/latest/' )
109-
- DOCKER_BUILD_QGIS_IMAGE=true
110108
- DOCKER_BUILD_DEPS_FILE=qgis3-build-deps.dockerfile
111109

112110
##########################################################
@@ -117,9 +115,8 @@ matrix:
117115
if: repo = qgis/QGIS AND (tag IS PRESENT OR type = cron)
118116
services: docker
119117
env:
120-
- TRAVIS_CONFIG=linux
118+
- TRAVIS_CONFIG=docker_image
121119
- DOCKER_TAG="$( echo $TRAVIS_BRANCH | sed 's/master/latest/' )_cosmic"
122-
- DOCKER_BUILD_QGIS_IMAGE=true
123120
- DOCKER_BUILD_DEPS_FILE=qgis3-build-deps-cosmic.dockerfile
124121

125122

0 commit comments

Comments
 (0)
Please sign in to comment.