Change:
If you try mimicking the release flow for a release on right now, it's busted: If I generate a dummy commit out of that failure, then run to see what gets generated, it's attempting to actually add the unversioned warnings back in: I was trying to write up a PR to enact something for , but this blocks the release piece for that. Which is fine, we have some time.
cc
Running gendocs should add the unversioned warnings, unless the doc has <!-- TAG IS_VERSIONED --. Do you know if mark-new-version that tag before failing?
Ah, I think I see what might be happening. This is the post- version of Notice the newline fun.
Sorry which newline are you talking about? :)
My PR fixes that
Ah, yes, cool. It would help if you flagged functional changes along more loudly. :)
Yea, sorry about that. Have updated the PR description to highlight each fix.

Discussion:
echo "!!! GNU sed is required.  If on OS X, use 'brew install gnu-sed'." fi <del> echo "+++ Versioning documentation and examples" # Update the docs to match this version. HTML_PREVIEW_PREFIX="https://htmlpreview.github.io/?https://github.com/GoogleCloudPlatform/kubernetes" md_dirs=(docs examples) md_files=() for dir in "${md_dirs[@]}"; do mdfiles+=($( find "${dir}" -name "*.md" -type f )) done for doc in "${mdfiles[@]}"; do $SED -ri  -e '/<!-- BEGIN STRIP_FOR_RELEASE -->/,/<!-- END STRIP_FOR_RELEASE -->/d'  -e "s|(releases.k8s.io)/[^/]+|1/${NEW_VERSION}|"  "${doc}" # Replace /HEAD in html preview links with /NEW_VERSION. $SED -ri -e "s|(${HTML_PREVIEW_PREFIX}/HEAD)|${HTML_PREVIEW_PREFIX}/${NEW_VERSION}|" "${doc}" is_versioned_tag='<!-- TAG IS_VERSIONED -->' if ! grep -q "${is_versioned_tag}" "${doc}"; then echo "${is_versioned_tag}" >> "${doc}" fi done # Update API descriptions to match this version. $SED -ri -e "s|(releases.k8s.io)/[^/]+|1/${NEW_VERSION}|" pkg/api/v[0-9]*/types.go ${KUBE_ROOT}/hack/run-gendocs.sh ${KUBE_ROOT}/hack/update-swagger-spec.sh </del> <ins> echo "+++ Running ./versionize-docs" ${KUBE_ROOT}/build/versionize-docs.sh ${NEW_VERSION} </ins> git commit -am "Versioning docs and examples for ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}" dochash=$(git log -n1 --format=%H)

<ins> #!/bin/bash # Copyright 2015 The Kubernetes Authors All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # #     http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # Updates the docs to be ready to be used as release docs for a particular # version. # Example usage: # ./versionize-docs.sh v1.0.1 set -o errexit set -o nounset set -o pipefail KUBE_ROOT=$(dirname "${BASH_SOURCE}")/.. NEW_VERSION=${1-} if [ "$#" -lt 1 ]; then echo "Usage: versionize-docs <release-version>" exit 1 fi SED=sed if which gsed &>/dev/null; then SED=gsed fi if ! ($SED --version 2>&1 | grep -q GNU); then echo "!!! GNU sed is required.  If on OS X, use 'brew install gnu-sed'." exit 1 fi echo "+++ Versioning documentation and examples" # Update the docs to match this version. HTML_PREVIEW_PREFIX="https://htmlpreview.github.io/?https://github.com/GoogleCloudPlatform/kubernetes" md_dirs=(docs examples) md_files=() for dir in "${md_dirs[@]}"; do mdfiles+=($( find "${dir}" -name "*.md" -type f )) done for doc in "${mdfiles[@]}"; do $SED -ri  -e '/<!-- BEGIN STRIP_FOR_RELEASE -->/,/<!-- END STRIP_FOR_RELEASE -->/d'  -e "s|(releases.k8s.io)/[^/]+|1/${NEW_VERSION}|"  "${doc}" # Replace /HEAD in html preview links with /NEW_VERSION. $SED -ri -e "s|(${HTML_PREVIEW_PREFIX}/HEAD)|${HTML_PREVIEW_PREFIX}/${NEW_VERSION}|" "${doc}" is_versioned_tag="<!-- BEGIN MUNGE: IS_VERSIONED --> <!-- TAG IS_VERSIONED --> <!-- END MUNGE: IS_VERSIONED -->" if ! grep -q "${is_versioned_tag}" "${doc}"; then echo -e "nn${is_versioned_tag}nn" >> "${doc}" fi done # Update API descriptions to match this version. $SED -ri -e "s|(releases.k8s.io)/[^/]+|1/${NEW_VERSION}|" pkg/api/v[0-9]*/types.go ${KUBE_ROOT}/hack/run-gendocs.sh ${KUBE_ROOT}/hack/update-swagger-spec.sh </ins>

// Matches the analytics blurb, with or without the munge headers. analyticsRE = regexp.MustCompile(`[n]*` + analyticsExp + `[n]?` + <del> `|` + `[n]*` + beginMungeExp + `[^<]*` + endMungeExp + `[n]*`) </del> <ins> `|` + `[n]*` + beginMungeExp + `[^<]*` + endMungeExp) </ins> ) // This adds the analytics link to every .md file.

in  string out string }{ <del> {`aoeu`, `aoeu ` + beginMungeTag("GENERATED_ANALYTICS") + ` [![Analytics](https://kubernetes-site.appspot.com/UA-36037335-10/GitHub/path/to/file-name.md?pixel)]() ` + endMungeTag("GENERATED_ANALYTICS") + ` `}, {`aoeu [![Analytics](https://kubernetes-site.appspot.com/UA-36037335-10/GitHub/path/to/file-name.md?pixel)]() `, `aoeu ` + beginMungeTag("GENERATED_ANALYTICS") + ` [![Analytics](https://kubernetes-site.appspot.com/UA-36037335-10/GitHub/path/to/file-name.md?pixel)]() ` + endMungeTag("GENERATED_ANALYTICS") + ` `}, {`aoeu ` + beginMungeTag("GENERATED_ANALYTICS") + ` [![Analytics](https://kubernetes-site.appspot.com/UA-36037335-10/GitHub/path/to/file-name.md?pixel)]() ` + endMungeTag("GENERATED_ANALYTICS") + ` `, `aoeu ` + beginMungeTag("GENERATED_ANALYTICS") + ` [![Analytics](https://kubernetes-site.appspot.com/UA-36037335-10/GitHub/path/to/file-name.md?pixel)]() ` + endMungeTag("GENERATED_ANALYTICS") + ` `}, {`aoeu [![Analytics](https://kubernetes-site.appspot.com/UA-36037335-10/GitHub/path/to/file-name.md?pixel)]() ` + beginMungeTag("GENERATED_ANALYTICS") + ` [![Analytics](https://kubernetes-site.appspot.com/UA-36037335-10/GitHub/path/to/file-name.md?pixel)]() ` + endMungeTag("GENERATED_ANALYTICS") + ` `, `aoeu ` + beginMungeTag("GENERATED_ANALYTICS") + ` [![Analytics](https://kubernetes-site.appspot.com/UA-36037335-10/GitHub/path/to/file-name.md?pixel)]() ` + endMungeTag("GENERATED_ANALYTICS") + ` `}, </del> <ins> { "aoeu", "aoeu" + "n" + "n" + "n" + beginMungeTag("GENERATED_ANALYTICS") + "n" + "[![Analytics](https://kubernetes-site.appspot.com/UA-36037335-10/GitHub/path/to/file-name.md?pixel)]()" + "n" + endMungeTag("GENERATED_ANALYTICS") + "n"}, { "aoeu" + "n" + "n" + "n" + "[![Analytics](https://kubernetes-site.appspot.com/UA-36037335-10/GitHub/path/to/file-name.md?pixel)]()", "aoeu" + "n" + "n" + "n" + beginMungeTag("GENERATED_ANALYTICS") + "n" + "[![Analytics](https://kubernetes-site.appspot.com/UA-36037335-10/GitHub/path/to/file-name.md?pixel)]()" + "n" + endMungeTag("GENERATED_ANALYTICS") + "n"}, { "aoeu" + "n" + beginMungeTag("GENERATED_ANALYTICS") + "n" + "[![Analytics](https://kubernetes-site.appspot.com/UA-36037335-10/GitHub/path/to/file-name.md?pixel)]()" + "n" + endMungeTag("GENERATED_ANALYTICS") + "n", "aoeu" + "n" + "n" + "n" + beginMungeTag("GENERATED_ANALYTICS") + "n" + "[![Analytics](https://kubernetes-site.appspot.com/UA-36037335-10/GitHub/path/to/file-name.md?pixel)]()" + "n" + endMungeTag("GENERATED_ANALYTICS") + "n"}, { "aoeu" + "n" + "n" + "[![Analytics](https://kubernetes-site.appspot.com/UA-36037335-10/GitHub/path/to/file-name.md?pixel)]()" + "n" + "n" + "n" + beginMungeTag("GENERATED_ANALYTICS") + "n" + "[![Analytics](https://kubernetes-site.appspot.com/UA-36037335-10/GitHub/path/to/file-name.md?pixel)]()" + "n" + endMungeTag("GENERATED_ANALYTICS") + "n", "aoeu" + "n" + "n" + "n" + beginMungeTag("GENERATED_ANALYTICS") + "n" + "[![Analytics](https://kubernetes-site.appspot.com/UA-36037335-10/GitHub/path/to/file-name.md?pixel)]()" + "n" + endMungeTag("GENERATED_ANALYTICS") + "n"}, { "prefix" + "n" + beginMungeTag("GENERATED_ANALYTICS") + "n" + "[![Analytics](https://kubernetes-site.appspot.com/UA-36037335-10/GitHub/path/to/file-name.md?pixel)]()" + "n" + endMungeTag("GENERATED_ANALYTICS") + "n" + "suffix", "prefix" + "n" + "suffix" + "n" + "n" + "n" + beginMungeTag("GENERATED_ANALYTICS") + "n" + "[![Analytics](https://kubernetes-site.appspot.com/UA-36037335-10/GitHub/path/to/file-name.md?pixel)]()" + "n" + endMungeTag("GENERATED_ANALYTICS") + "n"}, { "aoeu" + "n" + "n" + "n" + beginMungeTag("GENERATED_ANALYTICS") + "n" + "[![Analytics](https://kubernetes-site.appspot.com/UA-36037335-10/GitHub/path/to/file-name.md?pixel)]()" + "n" + endMungeTag("GENERATED_ANALYTICS") + "n", "aoeu" + "n" + "n" + "n" + beginMungeTag("GENERATED_ANALYTICS") + "n" + "[![Analytics](https://kubernetes-site.appspot.com/UA-36037335-10/GitHub/path/to/file-name.md?pixel)]()" + "n" + endMungeTag("GENERATED_ANALYTICS") + "n"}, </ins> } for _, c := range cases { out, err := checkAnalytics("path/to/file-name.md", []byte(c.in))

// TODO: allow selection from command line. (e.g., just check links in the examples directory.) allMunges = []munge{ {"table-of-contents", updateTOC}, <ins> {"unversioned-warning", updateUnversionedWarning}, </ins> {"check-links", checkLinks}, {"blank-lines-surround-preformatted", checkPreformatted}, {"header-lines", checkHeaderLines}, <del> {"unversioned-warning", updateUnversionedWarning}, </del> {"analytics", checkAnalytics}, {"kubectl-dash-f", checkKubectlFileTargets}, }