diff --git a/.gitignore b/.gitignore index 470ec9a..275a4b6 100644 --- a/.gitignore +++ b/.gitignore @@ -15,6 +15,7 @@ /bin/__test__library__ /bin/dub-test-library /bin/libdub.a +/bin/dub-* # Ignore files or directories created by the test suite. /test/custom-source-main-bug487/custom-source-main-bug487 @@ -35,3 +36,6 @@ # Ignore coverage files cov/ + +# Ignore auto-generated docs +/docs diff --git a/.travis.yml b/.travis.yml index 6f83041..ade06c4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,9 +2,20 @@ dist: trusty sudo: false -matrix: +addons: + apt: + packages: + - libevent-dev + +script: + - ./travis-ci.sh + +jobs: + allow_failures: + - d: gdc include: - - d: dmd-2.078.0 + - stage: test + d: dmd-2.078.0 env: [FRONTEND=2.078] - d: dmd-2.077.1 env: [FRONTEND=2.077, COVERAGE=true] @@ -46,15 +57,61 @@ env: [FRONTEND=2.068] - d: gdc-4.8.5 env: [FRONTEND=2.068] - - allow_failures: - - d: gdc - -addons: - apt: - packages: - - libevent-dev - -script: - - deactivate # deactivate host compiler - - ./travis-ci.sh + - stage: deploy + d: ldc + os: osx + script: echo "Deploying to GitHub releases ..." && ./release.sh + deploy: + - provider: releases + file_glob: true + file: bin/dub-*.tar.gz + skip_cleanup: true + api_key: $GH_REPO_TOKEN + on: + branch: master + tags: true + - d: ldc + script: echo "Deploying to GitHub releases ..." && ./release.sh + env: [ARCH=32] + addons: + apt: + packages: + - g++-multilib + - libcurl4-openssl-dev:i386 + deploy: + - provider: releases + file_glob: true + file: bin/dub-*.tar.gz + skip_cleanup: true + api_key: $GH_REPO_TOKEN + on: + branch: master + tags: true + - d: ldc + script: echo "Deploying to GitHub releases ..." && ./release.sh + deploy: + - provider: releases + file_glob: true + file: bin/dub-*.tar.gz + skip_cleanup: true + api_key: $GH_REPO_TOKEN + on: + branch: master + tags: true + - stage: update-latest + script: echo "Deploying to GitHub pages ..." && mkdir -p docs && git describe --abbrev=0 --tags > docs/LATEST + deploy: + - provider: pages + skip_cleanup: true + local_dir: docs + github_token: $GH_REPO_TOKEN + on: + branch: master + tags: true +stages: + - name: test + if: type = pull_request or (type = push and branch = master) + - name: deploy + if: type = push and tag =~ ^v + - name: update-latest + if: type = push and tag =~ ^v diff --git a/release.sh b/release.sh new file mode 100755 index 0000000..e889a30 --- /dev/null +++ b/release.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +set -v -e -o pipefail + +VERSION=$(git describe --abbrev=0 --tags) +ARCH="${ARCH:-64}" + +unameOut="$(uname -s)" +case "$unameOut" in + Linux*) OS=linux; ;; + Darwin*) OS=osx; ;; + *) echo "Unknown OS: $unameOut"; exit 1 +esac + +case "$ARCH" in + 64) ARCH_SUFFIX="x86_64";; + 32) ARCH_SUFFIX="x86";; + *) echo "Unknown ARCH: $ARCH"; exit 1 +esac + +archiveName="dub-$VERSION-$OS-$ARCH_SUFFIX.tar.gz" + +echo "Building $archiveName" +DFLAGS="-release -m$ARCH" DMD="$(command -v $DMD)" ./build.sh +tar cvfz "bin/$archiveName" -C bin dub