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

feat(travis): publish nightly builds off Travis-CI

This commit is contained in:
Maxim Biro 2019-05-26 10:52:09 -04:00
parent 74828c92e5
commit 516c52ad20
No known key found for this signature in database
GPG Key ID: AB3AD9896472BFA4
14 changed files with 295 additions and 9 deletions

View File

@ -18,6 +18,10 @@ stages:
- name: "Windows Stage 3: qTox" - name: "Windows Stage 3: qTox"
if: type = push AND branch = master if: type = push AND branch = master
env:
global:
- CIRP_GITHUB_REPO_SLUG="qTox/qTox-nightly-releases"
jobs: jobs:
include: include:
- stage: Linux - stage: Linux
@ -82,7 +86,13 @@ jobs:
- stage: "Windows Stage 3: qTox" - stage: "Windows Stage 3: qTox"
os: linux os: linux
env: WINDOWS_BUILD_ARCH_CACHE_TRICK_VARIABLE=i686 env: WINDOWS_BUILD_ARCH_CACHE_TRICK_VARIABLE=i686
script: ./.travis/build-windows.sh i686 release /opt/build-windows/i686 stage3 script:
- ./.travis/build-windows.sh i686 release /opt/build-windows/i686 stage3
- export ARTIFACTS_DIR="$(mktemp -d)"
- cp -a ./workspace/i686/qtox/release/{setup-qtox-i686-release.exe,setup-qtox-i686-release.exe.sha256,qtox-i686-release.zip,qtox-i686-release.zip.sha256} "$ARTIFACTS_DIR"
- .travis/cirp/cleanup1.sh
- .travis/cirp/store.sh "$ARTIFACTS_DIR"
- .travis/cirp/cleanup2.sh
services: services:
- docker - docker
cache: cache:
@ -91,7 +101,13 @@ jobs:
- stage: "Windows Stage 3: qTox" - stage: "Windows Stage 3: qTox"
os: linux os: linux
env: WINDOWS_BUILD_ARCH_CACHE_TRICK_VARIABLE=x86_64 env: WINDOWS_BUILD_ARCH_CACHE_TRICK_VARIABLE=x86_64
script: ./.travis/build-windows.sh x86_64 release /opt/build-windows/x86_64 stage3 script:
- ./.travis/build-windows.sh x86_64 release /opt/build-windows/x86_64 stage3
- export ARTIFACTS_DIR="$(mktemp -d)"
- cp -a ./workspace/x86_64/qtox/release/{setup-qtox-x86_64-release.exe,setup-qtox-x86_64-release.exe.sha256,qtox-x86_64-release.zip,qtox-x86_64-release.zip.sha256} "$ARTIFACTS_DIR"
- .travis/cirp/cleanup1.sh
- .travis/cirp/store.sh "$ARTIFACTS_DIR"
- .travis/cirp/cleanup2.sh
services: services:
- docker - docker
cache: cache:
@ -100,7 +116,13 @@ jobs:
- stage: "Windows Stage 3: qTox" - stage: "Windows Stage 3: qTox"
os: linux os: linux
env: WINDOWS_BUILD_ARCH_CACHE_TRICK_VARIABLE=i686 env: WINDOWS_BUILD_ARCH_CACHE_TRICK_VARIABLE=i686
script: ./.travis/build-windows.sh i686 debug /opt/build-windows/i686 stage3 script:
- ./.travis/build-windows.sh i686 debug /opt/build-windows/i686 stage3
- export ARTIFACTS_DIR="$(mktemp -d)"
- cp -a ./workspace/i686/qtox/debug/{qtox-i686-debug.zip,qtox-i686-debug.zip.sha256} "$ARTIFACTS_DIR"
- .travis/cirp/cleanup1.sh
- .travis/cirp/store.sh "$ARTIFACTS_DIR"
- .travis/cirp/cleanup2.sh
services: services:
- docker - docker
cache: cache:
@ -109,7 +131,13 @@ jobs:
- stage: "Windows Stage 3: qTox" - stage: "Windows Stage 3: qTox"
os: linux os: linux
env: WINDOWS_BUILD_ARCH_CACHE_TRICK_VARIABLE=x86_64 env: WINDOWS_BUILD_ARCH_CACHE_TRICK_VARIABLE=x86_64
script: ./.travis/build-windows.sh x86_64 debug /opt/build-windows/x86_64 stage3 script:
- ./.travis/build-windows.sh x86_64 debug /opt/build-windows/x86_64 stage3
- export ARTIFACTS_DIR="$(mktemp -d)"
- cp -a ./workspace/x86_64/qtox/debug/{qtox-x86_64-debug.zip,qtox-x86_64-debug.zip.sha256} "$ARTIFACTS_DIR"
- .travis/cirp/cleanup1.sh
- .travis/cirp/store.sh "$ARTIFACTS_DIR"
- .travis/cirp/cleanup2.sh
services: services:
- docker - docker
cache: cache:
@ -126,19 +154,48 @@ jobs:
- $HOME/Library/Caches/Homebrew - $HOME/Library/Caches/Homebrew
before_cache: before_cache:
- brew cleanup - brew cleanup
script: "./.travis/$JOB.sh" script:
- "./.travis/$JOB.sh"
- export ARTIFACTS_DIR="$(mktemp -d)"
- cp -a ./{qTox.dmg,qTox.dmg.sha256} "$ARTIFACTS_DIR"
- .travis/cirp/cleanup1.sh
- .travis/cirp/store.sh "$ARTIFACTS_DIR"
- .travis/cirp/cleanup2.sh
- stage: "macOS, AppImage and Flatpak" - stage: "macOS, AppImage and Flatpak"
os: linux os: linux
env: JOB=APPIMAGE env: JOB=APPIMAGE
script: ./appimage/build-appimage.sh script:
- ./appimage/build-appimage.sh
- export ARTIFACTS_DIR="$(mktemp -d)"
- cp -a ./output/* "$ARTIFACTS_DIR"
- .travis/cirp/cleanup1.sh
- .travis/cirp/store.sh "$ARTIFACTS_DIR"
- .travis/cirp/cleanup2.sh
services: services:
- docker - docker
- stage: "macOS, AppImage and Flatpak" - stage: "macOS, AppImage and Flatpak"
os: linux os: linux
env: JOB=FLATPAK env: JOB=FLATPAK
script: ./flatpak/build-flatpak.sh script:
- ./flatpak/build-flatpak.sh
- export ARTIFACTS_DIR="$(mktemp -d)"
- cp -a ./output/* "$ARTIFACTS_DIR"
- .travis/cirp/cleanup1.sh
- .travis/cirp/store.sh "$ARTIFACTS_DIR"
- .travis/cirp/cleanup2.sh
services: services:
- docker - docker
- stage: "Nightly publishing"
if: type == cron
script:
- export ARTIFACTS_DIR="$(mktemp -d)"
- .travis/cirp/collect.sh "$ARTIFACTS_DIR"
- .travis/cirp/cleanup4.sh
- .travis/cirp/publish.sh "$ARTIFACTS_DIR"
- .travis/cirp/cleanup5.sh
cache:
directories:
- /opt/cirp

View File

@ -135,10 +135,15 @@ then
fi fi
# Generate checksum files for releases # Generate checksum files for releases
if [ "$STAGE" == "stage3" ] && [ "$BUILD_TYPE" == "release" ] if [ "$STAGE" == "stage3" ]
then then
readonly OUT_DIR=./workspace/"$ARCH"/qtox/"$BUILD_TYPE"/ readonly OUT_DIR=./workspace/"$ARCH"/qtox/"$BUILD_TYPE"/
readonly NAME=setup-qtox-"$ARCH"-"$BUILD_TYPE".exe if [ "$BUILD_TYPE" == "release" ]
then
NAME=setup-qtox-"$ARCH"-"$BUILD_TYPE".exe
sha256sum "$OUT_DIR""$NAME" > "$OUT_DIR""$NAME".sha256
fi
NAME=qtox-"$ARCH"-"$BUILD_TYPE".zip
sha256sum "$OUT_DIR""$NAME" > "$OUT_DIR""$NAME".sha256 sha256sum "$OUT_DIR""$NAME" > "$OUT_DIR""$NAME".sha256
fi fi

View File

@ -0,0 +1,8 @@
if [ -f "/opt/cirp/previous_runs_commit" ] && [ "$(cat /opt/cirp/previous_runs_commit)" == "$(git rev-parse HEAD)" ]
then
# No new commits in the repo
touch /opt/cirp/previous_runs_commit
git log -1
echo "No new commits in the repo"
exit 0
fi

View File

@ -0,0 +1,11 @@
if [ ! -z "$TRAVIS_EVENT_TYPE" ] && [ "$TRAVIS_EVENT_TYPE" != "cron" ]
then
echo "Skipping publishing in a non-cron build"
exit 0
fi
if [ ! -z "$TRAVIS_PULL_REQUEST" ] && [ "$TRAVIS_PULL_REQUEST" != "false" ]
then
echo "Skipping publishing in a Pull Request"
exit 0
fi

10
.travis/cirp/cleanup1.sh Executable file
View File

@ -0,0 +1,10 @@
#!/usr/bin/env bash
set -euo pipefail
. .travis/cirp/check_precondition.sh
. .travis/cirp/install.sh
ci-release-publisher cleanup_publish
ci-release-publisher cleanup_store --scope current-job previous-finished-builds \
--release complete incomplete

10
.travis/cirp/cleanup2.sh Executable file
View File

@ -0,0 +1,10 @@
#!/usr/bin/env bash
set -euo pipefail
. .travis/cirp/check_precondition.sh
. .travis/cirp/install.sh
ci-release-publisher cleanup_store --scope current-build \
--release complete \
--on-nonallowed-failure

11
.travis/cirp/cleanup3.sh Executable file
View File

@ -0,0 +1,11 @@
#!/usr/bin/env bash
set -euo pipefail
. .travis/cirp/check_precondition.sh
. .travis/cirp/install.sh
ci-release-publisher cleanup_publish
ci-release-publisher cleanup_store --scope current-build previous-finished-builds \
--release complete incomplete \
--on-nonallowed-failure

10
.travis/cirp/cleanup4.sh Executable file
View File

@ -0,0 +1,10 @@
#!/usr/bin/env bash
set -euo pipefail
. .travis/cirp/check_precondition.sh
. .travis/cirp/install.sh
ci-release-publisher cleanup_publish
ci-release-publisher cleanup_store --scope current-build previous-finished-builds \
--release complete incomplete

17
.travis/cirp/cleanup5.sh Executable file
View File

@ -0,0 +1,17 @@
#!/usr/bin/env bash
set -euo pipefail
. .travis/cirp/check_precondition.sh
if [ -z "$TRAVIS_TEST_RESULT" ] && [ "$TRAVIS_TEST_RESULT" == "0" ]
then
echo "Build has not failed, skipping cleanup"
exit 0
fi
. .travis/cirp/install.sh
ci-release-publisher cleanup_publish
ci-release-publisher cleanup_store --scope current-build previous-finished-builds \
--release complete incomplete

23
.travis/cirp/collect.sh Executable file
View File

@ -0,0 +1,23 @@
#!/usr/bin/env bash
set -euo pipefail
. .travis/cirp/check_precondition.sh
if [ ! -z "$TRAVIS_TEST_RESULT" ] && [ "$TRAVIS_TEST_RESULT" != "0" ]
then
echo "Build has failed, skipping publishing"
exit 0
fi
if [ "$#" != "1" ]
then
echo "Error: No arguments provided. Please specify a directory where to download artifacts to as the first argument."
exit 1
fi
ARTIFACTS_DIR="$1"
. .travis/cirp/install.sh
ci-release-publisher collect "$ARTIFACTS_DIR"

61
.travis/cirp/install.sh Normal file
View File

@ -0,0 +1,61 @@
# Install verifying the hash
# Get Python >=3.5
if [ "$TRAVIS_OS_NAME" == "osx" ]
then
brew update
# make sha256sum available
export PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"
brew upgrade python || true
python --version || true
python3 --version || true
pyenv versions || true
cd .
cd "$(mktemp -d)"
virtualenv env -p python3
set +u
source env/bin/activate
set -u
cd -
else
python --version || true
python3 --version || true
pyenv versions || true
pyenv global 3.6
fi
pip install --upgrade pip
check_sha256()
{
if ! ( echo "$1 $2" | sha256sum -c --status - )
then
echo "Error: sha256 of $2 doesn't match the known one."
echo "Expected: $1 $2"
echo -n "Got: "
sha256sum "$2"
exit 1
else
echo "sha256 matches the expected one: $1"
fi
}
# Don't install again if already installed.
# OSX keeps re-installing it tough, as it uses a temp per-script virtualenv.
if ! pip list --format=columns | grep '^ci-release-publisher '
then
cd .
cd "$(mktemp -d)"
VERSION="0.1.0"
FILENAME="ci_release_publisher-$VERSION-py3-none-any.whl"
HASH="384bd9e2b0dd344381c01948e567bb26151636d6fd9b70fc58ef94aeb6be9466"
pip download ci_release_publisher==$VERSION
check_sha256 "$HASH" "$FILENAME"
pip install --no-index --find-links "$PWD" "$FILENAME"
cd -
fi

32
.travis/cirp/publish.sh Executable file
View File

@ -0,0 +1,32 @@
#!/usr/bin/env bash
set -euo pipefail
. .travis/cirp/check_precondition.sh
if [ ! -z "$TRAVIS_TEST_RESULT" ] && [ "$TRAVIS_TEST_RESULT" != "0" ]
then
echo "Build has failed, skipping publishing"
exit 0
fi
if [ "$#" != "1" ]
then
echo "Error: No arguments provided. Please specify a directory containing artifacts as the first argument."
exit 1
fi
ARTIFACTS_DIR="$1"
. .travis/cirp/check_cache.sh
. .travis/cirp/install.sh
ci-release-publisher publish --latest-release \
--latest-release-prerelease \
--numbered-release \
--numbered-release-keep-count 3 \
--numbered-release-prerelease \
"$ARTIFACTS_DIR"
. .travis/cirp/update_cache.sh

23
.travis/cirp/store.sh Executable file
View File

@ -0,0 +1,23 @@
#!/usr/bin/env bash
set -euo pipefail
. .travis/cirp/check_precondition.sh
if [ ! -z "$TRAVIS_TEST_RESULT" ] && [ "$TRAVIS_TEST_RESULT" != "0" ]
then
echo "Build has failed, skipping publishing"
exit 0
fi
if [ "$#" != "1" ]
then
echo "Error: No arguments provided. Please specify a directory containing artifacts as the first argument."
exit 1
fi
ARTIFACTS_DIR="$1"
. .travis/cirp/install.sh
ci-release-publisher store "$ARTIFACTS_DIR"

View File

@ -0,0 +1,8 @@
if [ ! -z "$TRAVIS_TEST_RESULT" ] && [ "$TRAVIS_TEST_RESULT" != "0" ]
then
echo "Build has failed, skipping updating the cache"
exit 0
fi
mkdir -p /opt/cirp
git rev-parse HEAD > /opt/cirp/previous_runs_commit