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:
parent
74828c92e5
commit
516c52ad20
71
.travis.yml
71
.travis.yml
|
@ -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
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
8
.travis/cirp/check_cache.sh
Normal file
8
.travis/cirp/check_cache.sh
Normal 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
|
11
.travis/cirp/check_precondition.sh
Normal file
11
.travis/cirp/check_precondition.sh
Normal 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
10
.travis/cirp/cleanup1.sh
Executable 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
10
.travis/cirp/cleanup2.sh
Executable 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
11
.travis/cirp/cleanup3.sh
Executable 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
10
.travis/cirp/cleanup4.sh
Executable 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
17
.travis/cirp/cleanup5.sh
Executable 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
23
.travis/cirp/collect.sh
Executable 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
61
.travis/cirp/install.sh
Normal 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
32
.travis/cirp/publish.sh
Executable 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
23
.travis/cirp/store.sh
Executable 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"
|
8
.travis/cirp/update_cache.sh
Normal file
8
.travis/cirp/update_cache.sh
Normal 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
|
Loading…
Reference in New Issue
Block a user