Multi pages (#139)

* WIP

* single / multi and pdf added

* Added git info to docs

* docs urls, links set from props

* Fixed extensions

* Added readme

* index.html is a normal page

* Fixed invalid reference to spring-cloud raw github links

* Added project root attribute

* Changes following review
This commit is contained in:
Marcin Grzejszczak
2019-07-29 14:49:55 +02:00
committed by GitHub
7 changed files with 272 additions and 186 deletions

View File

@@ -57,30 +57,35 @@ approach of generating documentation just add these plugins to your `docs` modul
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId> <1>
<groupId>pl.project13.maven</groupId>
<artifactId>git-commit-id-plugin</artifactId> <1>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId> <2>
<artifactId>maven-dependency-plugin</artifactId> <2>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId> <3>
</plugin>
<plugin>
<groupId>org.asciidoctor</groupId>
<artifactId>asciidoctor-maven-plugin</artifactId> <3>
<artifactId>asciidoctor-maven-plugin</artifactId> <4>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId> <4>
<artifactId>maven-antrun-plugin</artifactId> <5>
</plugin>
</plugins>
</build>
</profile>
</profiles>
----
<1> This plugin downloads the resources of the `spring-cloud-build-docs` module
<2> This plugin unpacks the resources of the `spring-cloud-build-docs` module
<3> This plugin is required to parse the Asciidoctor documentation
<4> This plugin is required to copy resources into proper final destinations and to generate main README.adoc and to assert that no files use unresolved links
<2> This plugin downloads sets up all the git information of the project
<2> This plugin downloads the resources of the `spring-cloud-build-docs` module
<3> This plugin unpacks the resources of the `spring-cloud-build-docs` module
<4> This plugin is required to parse the Asciidoctor documentation
<5> This plugin is required to copy resources into proper final destinations and to generate main README.adoc and to assert that no files use unresolved links
IMPORTANT: The order of plugin declaration is important!

View File

@@ -121,14 +121,6 @@ function retrieve_doc_properties() {
echo "Will not extract any properties for release train"
return
fi
echo "Extracting doc properties"
MAIN_ADOC_VALUE=$("${MAVEN_EXEC}" -q \
-Dexec.executable="echo" \
-Dexec.args='${docs.main}' \
org.codehaus.mojo:exec-maven-plugin:1.3.1:exec \
-P docs \
-pl docs | tail -1 )
echo "Extracted 'main.adoc' from Maven build [${MAIN_ADOC_VALUE}]"
WHITELIST_PROPERTY=${WHITELIST_PROPERTY:-"docs.whitelisted.branches"}
@@ -226,15 +218,8 @@ function copy_docs_for_current_version() {
echo "The file [${file}] shouldn't be ignored"
# Not ignored...
# We want users to access 1.0.0.RELEASE/ instead of 1.0.0.RELEASE/spring-cloud.sleuth.html
if [[ "${file}" == "${MAIN_ADOC_VALUE}.html" ]] ; then
# We don't want to copy the spring-cloud-sleuth.html
# we want it to be converted to index.html
cp -rf "${f}" "${ROOT_FOLDER}/${CURRENT_BRANCH}/index.html"
"${GIT_BIN}" add -A "${ROOT_FOLDER}/${CURRENT_BRANCH}/index.html"
else
cp -rf "${f}" "${ROOT_FOLDER}/${CURRENT_BRANCH}"
cp -rf "${f}" "${ROOT_FOLDER}/${CURRENT_BRANCH}"
"${GIT_BIN}" add -A "${ROOT_FOLDER}/${CURRENT_BRANCH}/${file}" || echo "Failed to add the file [${file}]"
fi
fi
done
COMMIT_CHANGES="yes"
@@ -268,14 +253,7 @@ function copy_docs_for_branch() {
echo "Copying file [${file}] to destination [${destination}]"
if ! "${GIT_BIN}" ls-files -i -o --exclude-standard --directory | grep -q ^"${file}"$; then
# Not ignored...
# We want users to access 1.0.0.RELEASE/ instead of 1.0.0.RELEASE/spring-cloud.sleuth.html
if [[ ("${file}" == "${MAIN_ADOC_VALUE}.html") || ("${file}" == "${REPO_NAME}.html") ]] ; then
# We don't want to copy the spring-cloud-sleuth.html
# we want it to be converted to index.html
cp -rf "${f}" "${destination}"/index.html
else
cp -rf "${f}" "${destination}"
fi
cp -rf "${f}" "${destination}"
"${GIT_BIN}" add -A "${destination}"
fi
}

View File

@@ -36,7 +36,7 @@ function git_with_remotes {
if [[ "$*" == *"set-url"* ]]; then
echo "git $*"
elif [[ "$*" == *"config remote.origin.url"* ]]; then
echo "git://foo.bar/baz.git"
echo "git://example1.example2/example3.git"
else
git $*
fi
@@ -56,7 +56,7 @@ function printing_git_failing_with_diff_index {
function printing_git_with_remotes {
if [[ "$*" == *"config remote.origin.url"* ]]; then
echo "git://foo.bar/baz.git"
echo "git://example1.example2/example3.git"
else
printing_git $*
fi
@@ -64,7 +64,7 @@ function printing_git_with_remotes {
function stubbed_git {
if [[ "$*" == *"config remote.origin.url"* ]]; then
echo "git://foo.bar/baz.git"
echo "git://example1.example2/example3.git"
elif [[ "$*" == *"diff-index"* ]]; then
return 1
elif [[ "$*" == *"symbolic-ref"* ]]; then
@@ -88,13 +88,12 @@ export -f stubbed_git
export RELEASER_GIT_OAUTH_TOKEN="mytoken"
cd "${TEMP_DIR}/spring-cloud-stream/"
mkdir -p docs/target/generated-docs/
touch docs/target/generated-docs/${MAIN_ADOC_VALUE}.html
touch docs/target/generated-docs/foo.html
touch docs/target/generated-docs/example1.html
run "${SOURCE_DIR}"/ghpages.sh
assert_success
assert_output --partial "git remote set-url --push origin https://mytoken@foo.bar/baz.git"
assert_output --partial "git remote set-url --push origin https://mytoken@example1.example2/example3.git"
assert_output --partial "git fetch -q"
assert_output --partial "git checkout master"
assert_output --partial "git stash"
@@ -103,7 +102,7 @@ export -f stubbed_git
# Current branch is master - will copy the current docs only to the root folder
assert_output --partial "git add -A ${TEMP_DIR}/spring-cloud-stream"
assert_output --partial "git commit -a -m Sync docs from master to gh-pages"
assert_output --partial "git remote set-url --push origin https://mytoken@foo.bar/baz.git"
assert_output --partial "git remote set-url --push origin https://mytoken@example1.example2/example3.git"
assert_output --partial "git push origin gh-pages"
assert_output --partial "git checkout master"
assert_output --partial "git stash pop"
@@ -118,13 +117,12 @@ export -f stubbed_git
cd "${TEMP_DIR}/spring-cloud-stream/"
mkdir -p docs/target/generated-docs/
touch docs/target/generated-docs/${MAIN_ADOC_VALUE}.html
touch docs/target/generated-docs/foo.html
touch docs/target/generated-docs/example1.html
run "${SOURCE_DIR}"/ghpages.sh
assert_success
assert_output --partial "git remote set-url --push origin https://mytoken@foo.bar/baz.git"
assert_output --partial "git remote set-url --push origin https://mytoken@example1.example2/example3.git"
assert_output --partial "git remote set-branches --add origin gh-pages"
assert_output --partial "git fetch -q"
# Previous branch was [master]
@@ -134,10 +132,10 @@ export -f stubbed_git
assert_output --partial "git checkout gh-pages"
assert_output --partial "git pull origin gh-pages"
# Current branch is master - will copy the current docs only to the root folder
assert [ -f "${TEMP_DIR}/spring-cloud-static/spring-cloud-stream/${VERSION}/foo.html" ]
assert [ -f "${TEMP_DIR}/spring-cloud-static/spring-cloud-stream/${VERSION}/example1.html" ]
assert_output --partial "git add -A ${TEMP_DIR}/spring-cloud-static/spring-cloud-stream/${VERSION}"
assert_output --partial "git commit -a -m Sync docs from v1.0.0.RELEASE to gh-pages"
assert_output --partial "git remote set-url --push origin https://mytoken@foo.bar/baz.git"
assert_output --partial "git remote set-url --push origin https://mytoken@example1.example2/example3.git"
assert_output --partial "git push origin gh-pages"
assert_output --partial "git checkout master"
assert_output --partial "git stash pop"
@@ -153,23 +151,22 @@ export -f stubbed_git
cd "${TEMP_DIR}/spring-cloud-stream/"
mkdir -p docs/target/generated-docs/
touch docs/target/generated-docs/${MAIN_ADOC_VALUE}.html
touch docs/target/generated-docs/foo.html
touch docs/target/generated-docs/example1.html
run "${SOURCE_DIR}"/ghpages.sh
assert_success
assert_output --partial "git remote set-url --push origin https://mytoken@foo.bar/baz.git"
assert_output --partial "git remote set-url --push origin https://mytoken@example1.example2/example3.git"
# Previous branch was [master]
assert_output --partial "git checkout master"
assert_output --partial "git stash"
assert_output --partial "git checkout gh-pages"
assert_output --partial "git pull origin gh-pages"
# Current branch is master - will copy the current docs only to the root folder
assert [ -f "${TEMP_DIR}/spring-cloud-static/${VERSION}/foo.html" ]
assert [ -f "${TEMP_DIR}/spring-cloud-static/${VERSION}/example1.html" ]
assert_output --partial "git add -A ${TEMP_DIR}/spring-cloud-static/${VERSION}"
assert_output --partial "git commit -a -m Sync docs from vGreenwich.SR2 to gh-pages"
assert_output --partial "git remote set-url --push origin https://mytoken@foo.bar/baz.git"
assert_output --partial "git remote set-url --push origin https://mytoken@example1.example2/example3.git"
assert_output --partial "git push origin gh-pages"
assert_output --partial "git checkout master"
assert_output --partial "git stash pop"
@@ -200,7 +197,7 @@ export -f stubbed_git
run add_oauth_token_to_remote_url
assert_success
assert_output --partial "git remote set-url --push origin https://foo.bar/baz.git"
assert_output --partial "git remote set-url --push origin https://example1.example2/example3.git"
}
@test "should add auth token to URL if token is present" {
@@ -213,7 +210,7 @@ export -f stubbed_git
run add_oauth_token_to_remote_url
assert_success
assert_output --partial "git remote set-url --push origin https://mytoken@foo.bar/baz.git"
assert_output --partial "git remote set-url --push origin https://mytoken@example1.example2/example3.git"
}
@test "should retrieve the name of the current branch" {
@@ -325,8 +322,7 @@ export -f stubbed_git
export CURRENT_BRANCH="master"
cd "${TEMP_DIR}/spring-cloud-stream/"
mkdir -p docs/target/generated-docs/
touch docs/target/generated-docs/${MAIN_ADOC_VALUE}.html
touch docs/target/generated-docs/foo.html
touch docs/target/generated-docs/example1.html
source "${SOURCE_DIR}"/ghpages.sh
@@ -340,11 +336,10 @@ export -f stubbed_git
export GIT_BIN="printing_git"
export CURRENT_BRANCH="present"
export WHITELISTED_BRANCHES_VALUE="present"
export MAIN_ADOC_VALUE="my_doc"
cd "${TEMP_DIR}/spring-cloud-stream/"
mkdir -p docs/target/generated-docs/
touch docs/target/generated-docs/${MAIN_ADOC_VALUE}.html
touch docs/target/generated-docs/foo.html
touch docs/target/generated-docs/my_doc.html
touch docs/target/generated-docs/example1.html
source "${SOURCE_DIR}"/ghpages.sh
@@ -356,8 +351,8 @@ export -f stubbed_git
run copy_docs_for_current_version
assert_success
assert_output --partial "add -A ${ROOT_FOLDER}/present/index.html"
assert_output --partial "add -A ${ROOT_FOLDER}/present/foo.html"
assert_output --partial "add -A ${ROOT_FOLDER}/present/my_doc.html"
assert_output --partial "add -A ${ROOT_FOLDER}/present/example1.html"
}
@test "should do nothing if current branch is not whitelisted" {
@@ -373,58 +368,6 @@ export -f stubbed_git
assert [ "${COMMIT_CHANGES}" != "yes" ]
}
@test "should reuse main adoc value as new index.html" {
export GIT_BIN="printing_git"
export DESTINATION_REPO_FOLDER="${TEMP_DIR}/spring-cloud-static"
export VERSION="1.0.0.RELEASE"
export MAIN_ADOC_VALUE="my_doc"
cd "${TEMP_DIR}/spring-cloud-stream/"
mkdir -p docs/target/generated-docs/
touch docs/target/generated-docs/${MAIN_ADOC_VALUE}.html
touch docs/target/generated-docs/foo.html
source "${SOURCE_DIR}"/ghpages.sh
copy_docs_for_provided_version
assert_success
assert [ "${COMMIT_CHANGES}" == "yes" ]
assert [ "${CURRENT_BRANCH}" == "v${VERSION}" ]
run copy_docs_for_provided_version
assert_success
assert_output --partial "add -A ${DESTINATION_REPO_FOLDER}/${VERSION}"
assert [ -f "${DESTINATION_REPO_FOLDER}/${VERSION}/index.html" ]
assert [ -f "${DESTINATION_REPO_FOLDER}/${VERSION}/foo.html" ]
}
@test "should reuse repo name as new index.html" {
export GIT_BIN="printing_git"
export DESTINATION_REPO_FOLDER="${TEMP_DIR}/spring-cloud-static"
export VERSION="1.0.0.RELEASE"
export REPO_NAME="spring-cloud-stream"
cd "${TEMP_DIR}/spring-cloud-stream/"
mkdir -p docs/target/generated-docs/
touch docs/target/generated-docs/${REPO_NAME}.html
touch docs/target/generated-docs/foo.html
source "${SOURCE_DIR}"/ghpages.sh
copy_docs_for_provided_version
assert_success
assert [ "${COMMIT_CHANGES}" == "yes" ]
assert [ "${CURRENT_BRANCH}" == "v${VERSION}" ]
run copy_docs_for_provided_version
assert_success
assert_output --partial "add -A ${DESTINATION_REPO_FOLDER}/${VERSION}"
assert [ -f "${DESTINATION_REPO_FOLDER}/${VERSION}/index.html" ]
assert [ -f "${DESTINATION_REPO_FOLDER}/${VERSION}/foo.html" ]
}
@test "should not do anything if commit flag not set" {
export GIT_BIN="printing_git_with_remotes"
export COMMIT_CHANGES="no"
@@ -448,7 +391,7 @@ export -f stubbed_git
assert_success
assert_output --partial "git commit -a -m Sync docs from to gh-pages"
assert_output --partial "git remote set-url --push origin https://mytoken@foo.bar/baz.git"
assert_output --partial "git remote set-url --push origin https://mytoken@example1.example2/example3.git"
assert_output --partial "git push origin gh-pages"
}
@@ -464,7 +407,7 @@ export -f stubbed_git
assert_success
assert_output --partial "git commit -a -m Sync docs from to gh-pages"
assert_output --partial "git remote set-url --push origin https://username:password@foo.bar/baz.git"
assert_output --partial "git remote set-url --push origin https://username:password@example1.example2/example3.git"
assert_output --partial "git push origin gh-pages"
}

View File

@@ -33,7 +33,7 @@ function git_with_remotes {
if [[ "$*" == *"set-url"* ]]; then
echo "git $*"
elif [[ "$*" == *"config remote.origin.url"* ]]; then
echo "git://foo.bar/baz.git"
echo "git://example1.example2/example3.git"
else
git $*
fi
@@ -45,7 +45,7 @@ function printing_git {
function printing_git_with_remotes {
if [[ "$*" == *"config remote.origin.url"* ]]; then
echo "git://foo.bar/baz.git"
echo "git://example1.example2/example3.git"
else
printing_git $*
fi
@@ -53,7 +53,7 @@ function printing_git_with_remotes {
function stubbed_git {
if [[ "$*" == *"config remote.origin.url"* ]]; then
echo "git://foo.bar/baz.git"
echo "git://example1.example2/example3.git"
elif [[ "$*" == *"commit"* ]]; then
printing_git $*
elif [[ "$*" == *"push"* ]]; then
@@ -111,7 +111,7 @@ export -f stubbed_git
assert_success
# change remote
assert_output --partial "git remote set-url --push origin https://mytoken@foo.bar/baz.git"
assert_output --partial "git remote set-url --push origin https://mytoken@example1.example2/example3.git"
# commit and push
assert_output --partial "git commit -m Updating guides"
assert_output --partial "git push origin master"