Skip to content
This repository has been archived by the owner on Feb 12, 2023. It is now read-only.

Commit

Permalink
feat(travis): publish nightly builds off Travis-CI
Browse files Browse the repository at this point in the history
  • Loading branch information
nurupo committed May 30, 2019
1 parent 74828c9 commit 516c52a
Show file tree
Hide file tree
Showing 14 changed files with 295 additions and 9 deletions.
71 changes: 64 additions & 7 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@ stages:
- name: "Windows Stage 3: qTox"
if: type = push AND branch = master

env:
global:
- CIRP_GITHUB_REPO_SLUG="qTox/qTox-nightly-releases"

jobs:
include:
- stage: Linux
Expand Down Expand Up @@ -82,7 +86,13 @@ jobs:
- stage: "Windows Stage 3: qTox"
os: linux
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:
- docker
cache:
Expand All @@ -91,7 +101,13 @@ jobs:
- stage: "Windows Stage 3: qTox"
os: linux
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:
- docker
cache:
Expand All @@ -100,7 +116,13 @@ jobs:
- stage: "Windows Stage 3: qTox"
os: linux
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:
- docker
cache:
Expand All @@ -109,7 +131,13 @@ jobs:
- stage: "Windows Stage 3: qTox"
os: linux
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:
- docker
cache:
Expand All @@ -126,19 +154,48 @@ jobs:
- $HOME/Library/Caches/Homebrew
before_cache:
- 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"
os: linux
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:
- docker
- stage: "macOS, AppImage and Flatpak"
os: linux
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:
- 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



Expand Down
9 changes: 7 additions & 2 deletions .travis/build-windows.sh
Original file line number Diff line number Diff line change
Expand Up @@ -135,10 +135,15 @@ then
fi

# Generate checksum files for releases
if [ "$STAGE" == "stage3" ] && [ "$BUILD_TYPE" == "release" ]
if [ "$STAGE" == "stage3" ]
then
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
fi

Expand Down
8 changes: 8 additions & 0 deletions .travis/cirp/check_cache.sh
Original file line number Diff line number Diff line change
@@ -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 changes: 11 additions & 0 deletions .travis/cirp/check_precondition.sh
Original file line number Diff line number Diff line change
@@ -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 changes: 10 additions & 0 deletions .travis/cirp/cleanup1.sh
Original file line number Diff line number Diff line change
@@ -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 changes: 10 additions & 0 deletions .travis/cirp/cleanup2.sh
Original file line number Diff line number Diff line change
@@ -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 changes: 11 additions & 0 deletions .travis/cirp/cleanup3.sh
Original file line number Diff line number Diff line change
@@ -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 changes: 10 additions & 0 deletions .travis/cirp/cleanup4.sh
Original file line number Diff line number Diff line change
@@ -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 changes: 17 additions & 0 deletions .travis/cirp/cleanup5.sh
Original file line number Diff line number Diff line change
@@ -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 changes: 23 additions & 0 deletions .travis/cirp/collect.sh
Original file line number Diff line number Diff line change
@@ -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 changes: 61 additions & 0 deletions .travis/cirp/install.sh
Original file line number Diff line number Diff line change
@@ -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 changes: 32 additions & 0 deletions .travis/cirp/publish.sh
Original file line number Diff line number Diff line change
@@ -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 changes: 23 additions & 0 deletions .travis/cirp/store.sh
Original file line number Diff line number Diff line change
@@ -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 changes: 8 additions & 0 deletions .travis/cirp/update_cache.sh
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit 516c52a

Please sign in to comment.