1
0
mirror of https://github.com/qTox/qTox.git synced 2024-03-22 14:00:36 +08:00

chore(build): parallelize travis and separate out doc build/deploy

This commit takes the existing travis task list and attempts to split
it into multiple jobs for the sake of efficiency. Also properly
separates out the build/deploy of documentation.
This commit is contained in:
initramfs 2016-08-11 03:34:27 +08:00
parent 51eae5bf34
commit e124bd85b6
No known key found for this signature in database
GPG Key ID: 78B8BDF87E9EF0AF
7 changed files with 109 additions and 48 deletions

View File

@ -1,11 +1,20 @@
sudo: required
dist: trusty
language: cpp
os:
- linux
- osx
script:
- bash ./.travis/travis.sh
matrix:
fast_finish: true
include:
- os: linux
env: JOB=verify-commit-format
- os: linux
env: JOB=build-docs
- os: linux
env: JOB=build-ubuntu-14-04
- os: osx
env: JOB=build-osx
script: "./.travis/$JOB.sh"
deploy:
provider: releases
@ -19,4 +28,4 @@ deploy:
skip_cleanup: true
after_success:
- test $TRAVIS_PULL_REQUEST == "false" && test $TRAVIS_BRANCH == "master" && bash ./.travis/build-docs.sh
- test $TRAVIS_PULL_REQUEST == "false" && test $TRAVIS_BRANCH == "master" && bash ./.travis/deploy-docs.sh

24
.travis/build-docs.sh Normal file → Executable file
View File

@ -15,38 +15,22 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# Fail out on error
set -eu -o pipefail
# Obtain doxygen
sudo apt-get install doxygen
CONFIG_FILE="doxygen.conf"
CONFIG_FILE_TMP="$CONFIG_FILE.tmp.autogen"
GIT_DESC=$(git describe --tags 2> /dev/null)
GIT_CHASH=$(git rev-parse HEAD)
# Create temporary config file
cp "$CONFIG_FILE" "$CONFIG_FILE_TMP"
# Append git version to doxygen version string
echo "PROJECT_NUMBER = \"Version: $GIT_DESC | Commit: $GIT_CHASH\"" >> "$CONFIG_FILE_TMP"
echo "PROJECT_NUMBER = \"Version: $GIT_DESC | Commit: $GIT_CHASH\"" >> "$CONFIG_FILE"
# Generate documentation
echo "Generating documentation..."
echo
doxygen "$CONFIG_FILE_TMP"
rm "$CONFIG_FILE_TMP"
# Push generated doxygen to GitHub pages
cd ./doc/html/
git init
git config user.name "Travis CI"
git config user.email "qTox@users.noreply.github.com"
git add .
git commit -m "Deploy to GH pages from commit: $GIT_CHASH"
echo "Pushing to GH pages..."
git push --force --quiet "https://${GH_TOKEN}@github.com/qTox/doxygen.git" master:gh-pages &> /dev/null
doxygen "$CONFIG_FILE"

25
.travis/build-osx.sh Executable file
View File

@ -0,0 +1,25 @@
#!/bin/bash
#
# Copyright © 2016 by The qTox Project
#
# This program is libre 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 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# Fail out on error
set -e -o pipefail
# Build OSX
bash ./osx/qTox-Mac-Deployer-ULTIMATE.sh -i
bash ./osx/qTox-Mac-Deployer-ULTIMATE.sh -b
bash ./osx/qTox-Mac-Deployer-ULTIMATE.sh -d
# The following line can randomly fail due to travis emitting the error:
# "hdiutil: create failed - Resource busy"
bash ./osx/qTox-Mac-Deployer-ULTIMATE.sh -dmg

43
.travis/deploy-docs.sh Executable file
View File

@ -0,0 +1,43 @@
#!/bin/bash
#
# Copyright © 2016 by The qTox Project
#
# This program is libre 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 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# Fail out on error
set -eu -o pipefail
DOCS_FOLDER="./doc/html"
# Ensure docs exists
if [ ! -d "$DOCS_FOLDER" ]
then
exit 1
fi
# Obtain git commit hash from HEAD
GIT_CHASH=$(git rev-parse HEAD)
# Push generated doxygen to GitHub pages
cd "$DOCS_FOLDER"
git --quiet init
git config user.name "Travis CI"
git config user.email "qTox@users.noreply.github.com"
git add .
git commit --quiet -m "Deploy to GH pages from commit: $GIT_CHASH"
echo "Pushing to GH pages..."
git push --force --quiet "https://${GH_TOKEN}@github.com/qTox/doxygen.git" master:gh-pages &> /dev/null

View File

@ -1,22 +0,0 @@
#!/bin/bash
#
# Script that runs all the necessary tests on travis.
#
# Exits as soon as there's a failure in test.
set -e
if [[ "$TRAVIS_OS_NAME" == "linux" ]]
then
# osx cannot into extended regexp for grep, thus verify only on Linux
bash ./verify-commit-messages.sh "$TRAVIS_COMMIT_RANGE"
bash ./.travis/build-ubuntu_14_04.sh
elif [[ "$TRAVIS_OS_NAME" == "osx" ]]
then
bash ./osx/qTox-Mac-Deployer-ULTIMATE.sh -i
bash ./osx/qTox-Mac-Deployer-ULTIMATE.sh -b
bash ./osx/qTox-Mac-Deployer-ULTIMATE.sh -d
# The following line can randomly fail due to travis emitting the error:
# "hdiutil: create failed - Resource busy"
bash ./osx/qTox-Mac-Deployer-ULTIMATE.sh -dmg
fi

22
.travis/verify-commit-format.sh Executable file
View File

@ -0,0 +1,22 @@
#!/bin/bash
#
# Copyright © 2016 by The qTox Project
#
# This program is libre 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 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# Fail out on error
set -eu -o pipefail
# Verify commit messages
bash ./verify-commit-messages.sh "$TRAVIS_COMMIT_RANGE"