branches:
only:
- master
+ - travis
- "/^release.*/"
env:
global:
- CLASSPATH=/usr/share/java/xalan-j2.jar:/usr/share/java/xercesImpl.jar:/usr/share/java/xml-resolver.jar:$(pwd)/.travis
- secure: "CyGQbyoAoFmAst01IZtu3aGGVCTRN/oo8aMZJPwnDRi9F3q/ptueFKYoQEWWEzDYzPMPAtvbDVDx5lhfyZxlm6HwyvU8Frdt+3RTkn287EiDk0fnUhZGSasLaWwZ5SxGuRq/yonc/oLfktK1e6Z9ZUAD9q0GnWncI6ZiLeJussWpRIz5W88Jaz2VJKGdiiHZbQDmCE6b5Oe9Ucu8gYAnmHbz0QbxacPm58+D7rrWVwF9haH0oDlwlMCfM1lI0/GNJVMAREGYLFJBVsieSuDunYz9kZg3ewr0wKud4spy9qUMAGt5yEAn9I+vQYqTgzWpbLAP8cOgSxsVJWbBN8JXUuoQRh1Pu78J0phDII8YouYB98o1JdkQeytrUXJmzfdRtmw/iKKp4qAKHK7v6R0KkcpDhjeiVVWrptc4vXbkpm16EFgv3/d+Gs++M5s6fag60mlth9u6IwZ/tSJbafvUqvPn977YJbua40SSzwwF9/8GP0GGDTp7SoO7oKaIVN9Gv9qMANOYIqOGA/KCyzQ3oLuhD14P5Hy2Gdfa8S4o9UZI43QWURljWniN9ycyZb53px/4WZc2adAcxcB+V64M3UHkLGU+MH7mJWJtLE1v/32fBYaBGEkTch2Ghj/oKV89+rav40ssKyol6IYjKN7uVXh3R3t4kT8jJPbDmUBhFoo="
+ - secure: "pJBf2nm1HXQAqJTZ7+CdXAjBmppD2eOw4AlvSpkHDgUilKUBYfjSy1R5TY/CQ+TmlDOV6wX5FMVEj8XV0Kn7w5gQ+7n7J+dyDr6Cg51oYIhmHW+z+5+rc1yhikDdkQxZbQ2ervR0WaF35oZTsVnC7qw4UvAz/fHbmLBbWjjfyOhOlo7yXz+HMNt53CclZjn8BrU+O7EsQZAgY4t50iQy4D1v92hev1XKcV57ITGWvla28VZR8BBK2iMvuW+OM0DzPNJsyybwrVHOwZ0XVuDq0NNexMc6n85ISuIVhEzr2OeL5tnmpH9hECMzuVvBbNE2f7xnDJkl1XADIhEzgsljKbnNLmrP8o5Lalpi6mCB2WIPX2PRt9k2d6nj3Kx7vPNcF55f822/DfGO62LNGHressDEXAUhuyyzAHvxfp8ExxHEyj5eN3as8GY3F/fGNwGpDOfy9/yKetBVWdijdmWsqKCLIYze9JaliI3mJfUu6VzFVWalGApgVNPVUPtJaWB1qay3aDNpH2LqPu82sefD0StnjJgroKHqHBBT0MNlML2xR+HLVsU3krSZcPLFn3eWsz/Zc6Rl1ZlcarKiMAPKdUS7jVJSO/G8rfH6Y5h5jP31aV3i/0WTLoBxru69Eh4hs1QPvg1j9ZBGSKjWenP9wwxKKhY5OT6wL8tr/5e2WSw="
install:
- sudo apt-get update -q
- make check
- make dist
+after_success:
+# Update CDN
+- |
+ if [ "$TRAVIS_REPO_SLUG" = "docbook/xslt10-stylesheets" -a \
+ "$TRAVIS_PULL_REQUEST" = "false" ]; then
+ export GH_TOKEN
+ .travis/publish-release.sh
+ fi
+
before_deploy:
- git config --global user.email "builds@travis-ci.com"
- git config --global user.name "Travis CI"
--- /dev/null
+#!/usr/bin/env python
+#
+# github pages allow directories to be navigated only if
+# they contain an index.html file.
+# This script traverses a directory tree starting at 'root',
+# generating 'index.html' files with file (and directory) listings,
+# unless the given directory already contains an 'index.html' file.
+
+import os
+from os.path import *
+import sys
+import datetime
+
+if len(sys.argv) != 2:
+ print('Usage: {} <root-directory>'.format(sys.argv[0]))
+ sys.exit(-1)
+
+# start the traversal here...
+root = abspath(sys.argv[1])
+# ...but print direcory names based on one level up (to include 'xsl/' etc.)
+base = dirname(root)
+
+def make_index(dir, dirs, files):
+ filename = join(dir, 'index.html')
+ if exists(filename):
+ return
+ with open(filename, 'w') as output:
+ output.write("""<html><head>
+<title>Index of %s</title>
+<style>
+table {{ width: 100%; font-family: monospace;}}
+td {{ text-align: right}}
+td:first-child {{ text-align: left}}
+td:last-child {{ text-align: center}}
+</style>
+</head>
+<body><h1>{}</h1>
+<table>""".format(relpath(dir, base)))
+ output.write('<tr><th>{}</th><th>{}</th><th>{}</th></tr>'.format("Name", "Size", "Last Modified"))
+ output.write('<tr><td><a href="..">..</a>/</td><td></td><td></td></tr>')
+ for d in dirs:
+ s = os.stat(join(dir, d))
+ format = '<tr><td><a href="{}">{}</a>/</td><td></td><td>{}</td></tr>'
+ output.write(format.format(d, d, datetime.datetime.fromtimestamp(int(s.st_mtime))))
+ for f in files:
+ s = os.stat(join(dir, f))
+ if s.st_size > 1073741824:
+ size = '{} GB'.format(s.st_size / 1073741824)
+ elif s.st_size > 1048576:
+ size = '{} MB'.format(s.st_size / 1048576)
+ elif s.st_size > 1024:
+ size = '{} KB'.format(s.st_size / 1024)
+ else:
+ size = '{} '.format(s.st_size)
+ format = '<tr><td><a href="{}">{}</a></td><td>{}</td><td>{}</td></tr>'
+ output.write(format.format(f, f, size, datetime.datetime.fromtimestamp(int(s.st_mtime))))
+ output.write("""</table>
+</body>
+</html>""")
+
+def process(dir):
+ all = os.listdir(dir)
+ dirs = sorted([d for d in all if isdir(join(dir, d))])
+ files = sorted([f for f in all if isfile(join(dir, f)) if f != 'index.html'])
+ make_index(dir, dirs, files)
+ # recurse into subdirectory, skipping links (such as 'current')
+ for d in dirs:
+ if not islink(join(dir, d)):
+ process(join(dir, d))
+
+process(root)
--- /dev/null
+#!/bin/bash
+set -e # Exit with nonzero exit code if anything fails
+here=$(dirname "${BASH_SOURCE[0]}")
+# Only commits to master should trigger deployment
+# (add 'travis' for testing purposes.)
+if [ "$TRAVIS_PULL_REQUEST" != "false" ] || \
+ [ "$TRAVIS_BRANCH" != master -a \
+ "$TRAVIS_BRANCH" != travis ]; then
+ echo "Skipping deployment"
+ exit 0
+fi
+
+# Remember the SHA of the current build.
+SHA=$(git rev-parse --verify HEAD)
+
+# Clone the minimum of the CDN repo needed.
+CDN_REPO="https://$GH_TOKEN@github.com/docbook/cdn.git"
+git clone $CDN_REPO cdn --depth=1 -q
+# Clean out existing content...
+rm -rf cdn/release/xsl/snapshot
+rm -rf cdn/release/xsl-nons/snapshot
+# ...and copy the new one.
+mkdir -p cdn/release/xsl
+mkdir -p cdn/release/xsl-nons
+cp -a dist/docbook-xsl-snapshot cdn/release/xsl/snapshot
+cp -a dist/docbook-xsl-nons-snapshot cdn/release/xsl-nons/snapshot
+# We could normally make "current" symbolic links to "snapshot"
+# but github's policy doesn't allow to publish symbolic links in pages.
+rm -rf cdn/release/xsl/current
+rm -rf cdn/release/xsl-nons/current
+cp -a cdn/release/xsl/snapshot cdn/release/xsl/current
+cp -a cdn/release/xsl-nons/snapshot cdn/release/xsl-nons/current
+
+# If there are no changes, bail out.
+# (Note that this doesn't detect additions.)
+#if (cd cdn && git diff --quiet); then
+# echo "No changes to the output on this push; exiting."
+# exit 0
+#fi
+
+$here/generate_index.py cdn/release/xsl
+$here/generate_index.py cdn/release/xsl-nons
+
+# Now prepare to commit and push to the CDN
+cd cdn
+git config user.name "Travis CI"
+git config user.email "travis-ci"
+
+git add .
+git commit -m "Deploy XSL Stylesheets to GitHub Pages: ${SHA}"
+git push -q origin HEAD