Преглед изворни кода

Merge release archive building CI from develop.

Rene Rivera пре 10 година
родитељ
комит
a672d35296
1 измењених фајлова са 240 додато и 4 уклоњено
  1. 240 4
      .travis.yml

+ 240 - 4
.travis.yml

@@ -1,8 +1,244 @@
+# Use, modification, and distribution are
+# subject to the Boost Software License, Version 1.0. (See accompanying
+# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+#
+# Copyright Rene Rivera 2015.
+
+branches:
+  only:
+    - master
+    - develop
+
+sudo: required
+
 language: c
 language: c
+
 compiler:
 compiler:
   - gcc
   - gcc
+
+git:
+  # We avoid fetching submodules so that we can set the EOL
+  # style to fetch them as needed.
+  submodules: false
+
+addons:
+  apt:
+    packages:
+      - p7zip-full
+      - docutils-common
+      - docutils-doc
+      - docbook
+      - docbook-xml
+      - docbook-xsl
+      - xsltproc
+      - doxygen
+      - dvipsk-ja
+      - texlive
+
+env:
+  global:
+    - secure: "DC12OV65iyBzELywj19yI4S8DmmBmZO8hbT3Iq0kJ4yo0aMQzzJDsVpmm2Jwk/Qf/yLyBsAhkpanScJJ9eEekmK8OZN8H9EJ1kgai58IWk0gWKKzJ0lyQH/vsYEyfxCSwqejoIdd07nQh5B/1L5Th3I2vLT2udHUPU2Np/MKgUw="
+  matrix:
+    - TRAVIS_EMPTY_JOB_WORKAROUND=true
+
+matrix:
+  exclude:
+    - env: TRAVIS_EMPTY_JOB_WORKAROUND=true
+  include:
+    # Simple integrated status tests check.
+    - env: STATUS_TESTS=true
+    
+    # Build release package for LF end-of-line style text files.
+    - env: RELEASE_BUILD=LF
+    
+    # Build release package for CRLF end-of-line style text files (i.e. for Windows).
+    - env: RELEASE_BUILD=CRLF
+
+install:
+  # Set where we will place all our build byproducts.
+  - |
+    export "BOOST_BUILD_DIR=${TRAVIS_BUILD_DIR}/../build"
+  
+  # We use RapidXML for some doc building tools.
+  - |
+    cd "${TRAVIS_BUILD_DIR}/.."
+    wget -O rapidxml.zip http://sourceforge.net/projects/rapidxml/files/latest/download
+    unzip -n -d rapidxml rapidxml.zip
+    export RAPIDXML=`ls -1d ${PWD}/rapidxml/rapidxml-*`
+  # Need docutils for building some docs.
+  - |
+    sudo pip install docutils
+
+before_script:
+  # Fail the whole script whenever any command fails
+  - |
+    set -e
+  
+  # Fetch the rest of the Boost submodules in the appropriate
+  # EOL style.
+  - |
+    if [[ "${STATUS_TESTS}" == "true" ]]; then
+      cd "${TRAVIS_BUILD_DIR}"
+      git submodule update --init --recursive
+    fi
+  - |
+    if [[ "${RELEASE_BUILD}" == "LF" ]]; then
+      cd "${TRAVIS_BUILD_DIR}"
+      git config core.eol lf
+      git config core.autocrlf false
+      git rm --cache -r .
+      git reset --quiet --hard HEAD
+      git submodule update --init --recursive
+    fi
+  - |
+    if [[ "${RELEASE_BUILD}" == "CRLF" ]]; then
+      cd "${TRAVIS_BUILD_DIR}"
+      git config core.eol crlf
+      git config core.autocrlf false
+      git rm --cache -r .
+      git reset --quiet --hard HEAD
+      git submodule update --init --recursive
+    fi
+
 script:
 script:
-  - ./bootstrap.sh
-  - ./b2 -n
-  - cd status
-  - ../b2 -n -d0
+  # Simple integrated status tests check. Currently this only
+  # veryfies that we will not get build system errors from things
+  # like missing test files.
+  - |
+    if [[ "${STATUS_TESTS}" == "true" ]]; then
+      cd "${TRAVIS_BUILD_DIR}"
+      ./bootstrap.sh
+      ./b2 -n
+      cd status
+      ../b2 -n -d0
+    fi
+  
+  # Build a packaged release. This involves building a fresh set
+  # of docs and selectively packging parts of the tree. We try and
+  # avoid creating extra files in the base tree to avoid including
+  # extra stuff in the archives. Which means that we reset the git
+  # tree state to cleanup after building.
+  
+  # Set up where we will "install" built tools.
+  - |
+    if [[ "${RELEASE_BUILD}" == "LF" || "${RELEASE_BUILD}" == "CRLF" ]]; then
+      mkdir -p "${BOOST_BUILD_DIR}/dist/bin"
+      export "PATH=${BOOST_BUILD_DIR}/dist/bin:${PATH}"
+    fi
+  
+  # Bootstrap Boost Build engine.
+  - |
+    if [[ "${RELEASE_BUILD}" == "LF" || "${RELEASE_BUILD}" == "CRLF" ]]; then
+      cd "${TRAVIS_BUILD_DIR}/tools/build"
+      ./bootstrap.sh
+      cp -p b2 "${BOOST_BUILD_DIR}/dist/bin/b2"
+      git clean -dfqx
+    fi
+  
+  # Generate include dir structure.
+  - |
+    if [[ "${RELEASE_BUILD}" == "LF" || "${RELEASE_BUILD}" == "CRLF" ]]; then
+      cd "${TRAVIS_BUILD_DIR}"
+      b2 -q -d0 headers
+    fi
+  
+  # Build doxygen_xml2qbk for building Boost Geometry docs.
+  - |
+    if [[ "${RELEASE_BUILD}" == "LF" || "${RELEASE_BUILD}" == "CRLF" ]]; then
+      cd "${TRAVIS_BUILD_DIR}/libs/geometry/doc/src/docutils/tools/doxygen_xml2qbk"
+      b2 -q -d0 --build-dir="${BOOST_BUILD_DIR}" --distdir="${BOOST_BUILD_DIR}/dist"
+      cd "${TRAVIS_BUILD_DIR}/libs/geometry"
+      git clean -dfqx
+    fi
+  
+  # Build Quickbook documentation tool.
+  - |
+    if [[ "${RELEASE_BUILD}" == "LF" || "${RELEASE_BUILD}" == "CRLF" ]]; then
+      cd "${TRAVIS_BUILD_DIR}/tools/quickbook"
+      b2 -q -d0 --build-dir="${BOOST_BUILD_DIR}" --distdir="${BOOST_BUILD_DIR}/dist"
+      git clean -dfqx
+    fi
+  
+  # Build auto-index documentation tool.
+  - |
+    if [[ "${RELEASE_BUILD}" == "LF" || "${RELEASE_BUILD}" == "CRLF" ]]; then
+      cd "${TRAVIS_BUILD_DIR}/tools/auto_index/build"
+      b2 -q -d0 --build-dir="${BOOST_BUILD_DIR}" --distdir="${BOOST_BUILD_DIR}/dist"
+      cd "${TRAVIS_BUILD_DIR}/tools/auto_index"
+      git clean -dfqx
+    fi
+  
+  # Set up build config.
+  - |
+    if [[ "${RELEASE_BUILD}" == "LF" || "${RELEASE_BUILD}" == "CRLF" ]]; then
+      echo "using quickbook : \"${BOOST_BUILD_DIR}/dist/bin/quickbook\" ;" >> "${HOME}/user-config.jam"
+      echo "using auto-index : \"${BOOST_BUILD_DIR}/dist/bin/auto_index\" ;" >> "${HOME}/user-config.jam"
+      echo "using docutils ;" >> "${HOME}/user-config.jam"
+      echo "using doxygen ;" >> "${HOME}/user-config.jam"
+    fi
+  
+  # Pre-build Boost Geometry docs.
+  - |
+    if [[ "${RELEASE_BUILD}" == "LF" || "${RELEASE_BUILD}" == "CRLF" ]]; then
+      cd "${TRAVIS_BUILD_DIR}/libs/geometry/doc"
+      python make_qbk.py --release-build
+    fi
+  
+  # Build the full docs, and all the submodule docs.
+  - |
+    if [[ "${RELEASE_BUILD}" == "LF" || "${RELEASE_BUILD}" == "CRLF" ]]; then
+      cd "${TRAVIS_BUILD_DIR}/doc"
+      (while true ; do sleep 60 && echo "[[ ALIVE? ]]" ; done ;) &
+      AWAKE_PID=$!
+      b2 -q -d0 --build-dir="${BOOST_BUILD_DIR}" --distdir="${BOOST_BUILD_DIR}/dist" --release-build --enable-index
+      kill $AWAKE_PID
+    fi
+  
+  # Make the real distribution tree from the base tree. The
+  # distribution tree is "marked" with the commit hash to be
+  # able to track a package to the commit we test.
+  - |
+    if [[ "${RELEASE_BUILD}" == "LF" || "${RELEASE_BUILD}" == "CRLF" ]]; then
+      cd "${TRAVIS_BUILD_DIR}/.."
+      wget "https://raw.githubusercontent.com/boostorg/release-tools/develop/MakeBoostDistro.py"
+      chmod +x MakeBoostDistro.py
+      export BOOST_RELEASE=boost_${TRAVIS_BRANCH}_${TRAVIS_COMMIT}
+      ./MakeBoostDistro.py "${TRAVIS_BUILD_DIR}" "${BOOST_RELEASE}"
+    fi
+  
+  # Create packages for LF style content.
+  - |
+    if [[ "${RELEASE_BUILD}" == "LF" ]]; then
+      cd "${TRAVIS_BUILD_DIR}/.."
+      tar -zcf "${BOOST_RELEASE}.tar.gz" "${BOOST_RELEASE}"
+      tar -cjf "${BOOST_RELEASE}.tar.bz2" "${BOOST_RELEASE}"
+      ls -la
+    fi
+  
+  # Create packages for CRLF style content.
+  - |
+    if [[ "${RELEASE_BUILD}" == "CRLF" ]]; then
+      cd "${TRAVIS_BUILD_DIR}/.."
+      zip -qr "${BOOST_RELEASE}.zip" "${BOOST_RELEASE}"
+      7z a -r "${BOOST_RELEASE}.7z" "${BOOST_RELEASE}" > /dev/null
+      ls -la
+    fi
+
+after_success:
+  # Publish created packages depending on the EOL style and branch.
+  # We post archives to distribution services. But currently we only
+  # post master packages as they happen less often. And we are
+  # unlikely to ever want anything else as a package for the
+  # releases.
+  - |
+    if [[ "${TRAVIS_BRANCH}" == "master" && "${RELEASE_BUILD}" == "LF" ]]; then
+      cd "${TRAVIS_BUILD_DIR}/.."
+      curl -v -T "${BOOST_RELEASE}.tar.gz" "-ugrafikrobot:${BINTRAY}" "https://api.bintray.com/content/boostorg/snapshots/${TRAVIS_BRANCH}/${TRAVIS_COMMIT}/${BOOST_RELEASE}.tar.gz?publish=1"
+      curl -v -T "${BOOST_RELEASE}.tar.bz2" "-ugrafikrobot:${BINTRAY}" "https://api.bintray.com/content/boostorg/snapshots/${TRAVIS_BRANCH}/${TRAVIS_COMMIT}/${BOOST_RELEASE}.tar.bz2?publish=1"
+    fi
+  - |
+    if [[ "${TRAVIS_BRANCH}" == "master" && "${RELEASE_BUILD}" == "CRLF" ]]; then
+      cd "${TRAVIS_BUILD_DIR}/.."
+      curl -v -T "${BOOST_RELEASE}.zip" "-ugrafikrobot:${BINTRAY}" "https://api.bintray.com/content/boostorg/snapshots/${TRAVIS_BRANCH}/${TRAVIS_COMMIT}/${BOOST_RELEASE}.zip?publish=1"
+      curl -v -T "${BOOST_RELEASE}.7z" "-ugrafikrobot:${BINTRAY}" "https://api.bintray.com/content/boostorg/snapshots/${TRAVIS_BRANCH}/${TRAVIS_COMMIT}/${BOOST_RELEASE}.7z?publish=1"
+    fi

粤ICP备19079148号