From 48744a1342123945ca461839ffe52d9b2c467fc9 Mon Sep 17 00:00:00 2001 From: Antonin Descampe Date: Tue, 21 Jun 2016 16:19:06 +0200 Subject: [PATCH] setup automatic upload of ABI reports --- tools/travis-ci/abi-check.sh | 56 ++++++++++++++++++++++++++------- tools/travis-ci/travis_rsa.enc | Bin 0 -> 3248 bytes 2 files changed, 45 insertions(+), 11 deletions(-) create mode 100644 tools/travis-ci/travis_rsa.enc diff --git a/tools/travis-ci/abi-check.sh b/tools/travis-ci/abi-check.sh index 3eb6e18f..5bab1250 100755 --- a/tools/travis-ci/abi-check.sh +++ b/tools/travis-ci/abi-check.sh @@ -14,18 +14,24 @@ if [ "${OPJ_CI_ABI_CHECK:-}" != "1" ]; then fi OPJ_UPLOAD_ABI_REPORT=0 +OPJ_LATEST_VERSION="2.1" OPJ_LIMIT_ABI_BUILDS="-limit 2" +OPJ_REPO="https://github.com/uclouvain/openjpeg.git" +OPJ_SSH_REPO=${OPJ_REPO/https:\/\/github.com\//git@github.com:} +OPJ_UPLOAD_BRANCH="gh-pages" +OPJ_UPLOAD_DIR="abi-check" if [ "${TRAVIS_REPO_SLUG:-}" != "" ]; then if [ "$(echo "${TRAVIS_REPO_SLUG}" | sed 's/\(^.*\)\/.*/\1/')" == "uclouvain" ] && [ "${TRAVIS_PULL_REQUEST:-}" == "false" ]; then - # Upload report + # Upload updated report to gh-pages OPJ_UPLOAD_ABI_REPORT=1 # Build full report - OPJ_LIMIT_ABI_BUILDS= + #OPJ_LIMIT_ABI_BUILDS= fi fi OPJ_SOURCE_DIR=$(cd $(dirname $0)/../.. && pwd) +# INSTALL REQUIRED PACKAGES mkdir ${HOME}/abi-check cd ${HOME}/abi-check @@ -40,17 +46,25 @@ make check &> /dev/null make install &> /dev/null cd .. export PATH=${PWD}/tools/wdiff/bin:$PATH - wget -qO - https://tools.ietf.org/tools/rfcdiff/rfcdiff-1.42.tgz | tar -xz mv rfcdiff-1.42 ${PWD}/tools/rfcdiff export PATH=${PWD}/tools/rfcdiff:$PATH -wget -qO - https://github.com/lvc/installer/archive/0.4.tar.gz | tar -xz +wget -qO - https://github.com/lvc/installer/archive/0.10.tar.gz | tar -xz mkdir ${PWD}/tools/abi-tracker -make -C installer-0.4 install prefix=${PWD}/tools/abi-tracker target=abi-tracker +make -C installer-0.10 install prefix=${PWD}/tools/abi-tracker target=abi-tracker export PATH=${PWD}/tools/abi-tracker/bin:$PATH -mkdir tracker -cd tracker +# RUN THE ABI-CHECK SCRIPTS + +mkdir work +cd work + +# If upload is scheduled, clone the gh-pages branch and work from there +if [ ${OPJ_UPLOAD_ABI_REPORT} -eq 1 ]; then + git clone -b $OPJ_UPLOAD_BRANCH --single-branch $OPJ_REPO . + cd $OPJ_UPLOAD_DIR + rm -rf installed/openjpeg/current/* +fi # Let's create all we need grep -v Git ${OPJ_SOURCE_DIR}/tools/abi-tracker/openjpeg.json > ./openjpeg.json @@ -68,18 +82,38 @@ abi-tracker -build openjpeg.json EXIT_CODE=0 # Check API -abi-compliance-checker -l openjpeg -old $(find ./abi_dump/openjpeg/2.1 -name '*.dump') -new $(find ./abi_dump/openjpeg/current -name '*.dump') -header openjpeg.h -api -s || EXIT_CODE=1 +abi-compliance-checker -l openjpeg -old $(find ./abi_dump/openjpeg/$OPJ_LATEST_VERSION -name '*.dump') -new $(find ./abi_dump/openjpeg/current -name '*.dump') -header openjpeg.h -api -s || EXIT_CODE=1 # Check ABI if [ "${OPJ_LIMIT_ABI_BUILDS}" != "" ]; then - abi-compliance-checker -l openjpeg -old $(find ./abi_dump/openjpeg/2.1 -name '*.dump') -new $(find ./abi_dump/openjpeg/current -name '*.dump') -header openjpeg.h -abi -s || EXIT_CODE=1 + abi-compliance-checker -l openjpeg -old $(find ./abi_dump/openjpeg/$OPJ_LATEST_VERSION -name '*.dump') -new $(find ./abi_dump/openjpeg/current -name '*.dump') -header openjpeg.h -abi -s || EXIT_CODE=1 else echo "Disable ABI check for now, problems with symbol visibility..." fi -rm -rf src installed +rm -rf src/openjpeg/current +rm -rf build_logs if [ ${OPJ_UPLOAD_ABI_REPORT} -eq 1 ]; then - echo "TODO: Where to upload the report" + git config user.name "OpenJPEG Travis CI" + git config user.email "info@openjpeg.org" + + # Commit the "changes", i.e. the new version. + # The delta will show diffs between new and old versions. + git diff > ../diff.patch + git add . + git commit -m "Update ABI/API compatibility reports after commit ${TRAVIS_COMMIT:-}" + + # Get the deploy key by using Travis's stored variables to decrypt travis_rsa.enc + openssl aes-256-cbc -K $encrypted_99d63218f67a_key -iv $encrypted_99d63218f67a_iv -in travis_rsa.enc -out travis_rsa -d + chmod 600 travis_rsa + eval `ssh-agent -s` + ssh-add travis_rsa + + # Now that we're all set up, we can push. + git push $OPJ_SSH_REPO $OPJ_UPLOAD_BRANCH fi + +rm -rf src installed + exit $EXIT_CODE diff --git a/tools/travis-ci/travis_rsa.enc b/tools/travis-ci/travis_rsa.enc new file mode 100644 index 0000000000000000000000000000000000000000..09b00f781acad6cd4b9b4978199d7cd5d3a546de GIT binary patch literal 3248 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