#!/bin/bash # ---------------------------------------------------------- # Automatically push back the generated JavaDocs to gh-pages # ---------------------------------------------------------- # based on https://gist.github.com/willprice/e07efd73fb7f13f917ea # specify the common address for the repository targetRepo=github.com/ReactiveX/RxJava.git # ======================================================================= # get the current build tag if any buildTag="$BUILD_TAG" echo -e "Build tag: '$buildTag'" if [ "$buildTag" == "" ]; then buildTag="snapshot" else buildTag="${buildTag:1}" fi echo -e "JavaDocs pushback for tag: $buildTag" # check if the token is actually there if [ "$JAVADOCS_TOKEN" == "" ]; then echo -e "No access to GitHub, skipping JavaDocs pushback." exit 0 fi # prepare the git information git config --global user.email "akarnokd+ci@gmail.com" git config --global user.name "akarnokd+ci" # setup the remote echo -e "Adding the target repository to git" git remote add origin-pages https://${JAVADOCS_TOKEN}@${targetRepo} > /dev/null 2>&1 # stash changes due to chmod echo -e "Stashing any local non-ignored changes" git stash # get the gh-pages echo -e "Update branches and checking out gh-pages" git fetch --all git branch -a git checkout -b gh-pages origin-pages/gh-pages # releases should update 2 extra locations if [ "$buildTag" != "snapshot" ]; then # for releases, add a new directory with the new version # and carefully replace the others # !!!!!!!!!!!!!!!!!!!!!!!!!!!!! # enable once 4.x is mainstream # vvvvvvvvvvvvvvvvvvvvvvvvvvvvv # 1.) main javadoc # ---------------- # remove the io subdir #echo -e "Removing javadoc/io" #rm -r javadoc/io # remove the html files #echo -e "Removing javadoc/*.html" #rm javadoc/*.html # copy the new doc #echo -e "Copying to javadoc/" #yes | cp -rf ./build/docs/javadoc/ . # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ # enable once 4.x is mainstream # !!!!!!!!!!!!!!!!!!!!!!!!!!!!! # 2.) 4.x javadoc # remove the io subdir echo -e "Removing 4.x/javadoc/io" rm -r 4.x/javadoc/io # remove the html files echo -e "Removing 4.x/javadoc/*.html" rm 4.x/javadoc/*.html # copy the new doc echo -e "Copying to 4.x/javadoc/" yes | cp -rf ./build/docs/javadoc/ 4.x/ fi # 3.) create a version/snapshot specific copy of the docs # clear the existing tag echo -e "Removing to 4.x/javadoc/${buildTag}" rm -r 4.x/javadoc/${buildTag} # create the directory if it doesn't exist mkdir -p 4.x/javadoc # copy the new doc echo -e "Copying to 4.x/javadoc/${buildTag}" yes | cp -rf ./build/docs/javadoc/ 4.x/javadoc/${buildTag}/ # stage all changed and new files echo -e "Staging new files" git add *.html git add *.css git add *.js git add *package-list* # remove tracked but deleted files echo -e "Removing deleted files" git add -u # commit all echo -e "commit CI build: $CI_BUILD_NUMBER for $buildTag" git commit --message "CI build: $CI_BUILD_NUMBER for $buildTag" # debug file list #find -name "*.html" # push it echo -e "Pushing back changes." git push --quiet --set-upstream origin-pages gh-pages # we are done echo -e "JavaDocs pushback complete."