diff --git a/Makefile b/Makefile index c876e539b..3ec827a68 100644 --- a/Makefile +++ b/Makefile @@ -187,4 +187,4 @@ deploy_kind: ./kind load docker-image $(REGISTRY)/$(TARGET):$(IMAGE_VERSION) || true native: - $(GO_BUILD) + $(GO_BUILD) \ No newline at end of file diff --git a/README.md b/README.md index 403d90a92..94ea16f37 100644 --- a/README.md +++ b/README.md @@ -135,26 +135,26 @@ welcome pull requests. Feel free to dig through the [issues][issue] and jump in. See [the list of releases][releases] to find out about feature changes. -[airgap]: docs/airgap.md +[airgap]: site/docs/master/airgap.md [brew]: https://kubernetes.io/docs/tasks/tools/install-kubectl/#install-with-homebrew-on-macos [cncf]: https://github.com/cncf/k8s-conformance#certified-kubernetes [coc]: https://github.com/heptio/sonobuoy/blob/master/CODE_OF_CONDUCT.md [contrib]: https://github.com/heptio/sonobuoy/blob/master/CONTRIBUTING.md -[conformance]: docs/conformance-testing.md +[conformance]: site/docs/master/conformance-testing.md [docs]: https://github.com/heptio/sonobuoy/tree/master/docs -[e2e]: /docs/conformance-testing.md -[gen]: docs/gen.md +[e2e]: site/docs/master/conformance-testing.md +[gen]: site/docs/master/gen.md [gimme]: https://github.com/travis-ci/gimme [issue]: https://github.com/heptio/sonobuoy/issues [k8s]: https://github.com/kubernetes/kubernetes [linux]: https://kubernetes.io/docs/tasks/tools/install-kubectl/#tabset-1 [oview]: https://youtu.be/k-P4hXdruRs?t=9m27s -[plugins]: docs/plugins.md +[plugins]: site/docs/master/plugins.md [quickstart]: https://aws.amazon.com/quickstart/architecture/vmware-kubernetes/ [releases]: https://github.com/heptio/sonobuoy/releases [slack]: https://kubernetes.slack.com/messages/sonobuoy -[snapshot]: docs/snapshot.md -[sonobuoyconfig]: docs/sonobuoy-config.md +[snapshot]: site/docs/master/snapshot.md +[sonobuoyconfig]: site/docs/master/sonobuoy-config.md [status]: https://travis-ci.org/heptio/sonobuoy.svg?branch=master [travis]: https://travis-ci.org/heptio/sonobuoy/# -[wait]: docs/wait.md \ No newline at end of file +[wait]: site/docs/master/wait.md \ No newline at end of file diff --git a/docs/enhancements/e2e-command-line.md b/docs/enhancements/e2e-command-line.md deleted file mode 100644 index 0179ea94c..000000000 --- a/docs/enhancements/e2e-command-line.md +++ /dev/null @@ -1,81 +0,0 @@ -# Sub Command for E2E Results Viewing - -## Table of Contents - -* [Summary](#summary) -* [Objectives](#objectives) - * [Goals](#goals) - * [Non-Goals](#non-goals) -* [Proposal](#proposal) - * [User Stories](#user-stories) -* [Unresolved Questions](#unresolved-questions) - -## Summary - -End to end (e2e) tests in the Kubernetes ecosystem are built on top of ginkgo -and output junit XML. XML is not designed for human readability and thus it is -very hard to grok. Users can use scanner but if they have results there is no -way for a user to upload those results to scanner to get the nice output. - -## Objectives - -Make the sonobuoy e2e output be more useful to users. - -### Goals - -- Output a list of e2e tests (filterable by passed/failed). -- Generate YAML that can rerun failed tests. - -### Non-Goals - -- Replace scanner.heptio.com -- Updating scanner features -- Re-implement gen -- Make a CLI per plugin. This is a special case that generates a lot of - questions and we think this will improve the user experience by a lot. - -## Proposal - -Add a subcommand to `sonobuoy` that has arguments/subcommands that satisfies the -goals above: - -`sonobuoy e2e ` will show a list of failed tests from -the sonobuoy archive file. - -`sonobuoy e2e --show=passed` will only display passed tests. - -`sonobuoy e2e --rerun-failed ` will figure out the failed -tests, build a dumb regex and pass that into Gen and pass that into run. - -## Prerequisite work - -* Gen will have to be able to generate the specific type of YAML we'd need for a - rerun. -* Run will have to be able to take a generic manifest and execute it. The - generation step will move into the cmd/run.go file. - -### User Stories - -#### Operator - -- An operator is playing with their cluster. Sonobuoy is telling them they have - failed some tests so they tweak some settings and want to try to run the - failed tests to see if they pass. - -Currently they would have to build their own YAML with a custom FOCUS variable. -This command line tool aims to simplify this workflow by producing the YAML they -need to rerun failed tests. - -#### Firewalled user - -- A user wants to have a nice experience looking at e2e test results but their - cluster cannot talk to an external network (scanner). Today they would have to - run sonobuoy and collect the xml and use a tool like xunit-viewer. - -This proposal aims to simplify their workflow by allowing them to use the -sonobuoy CLI to explore their results. - -## Unresolved Questions - - - diff --git a/docs/enhancements/sep-results-client.md b/docs/enhancements/sep-results-client.md deleted file mode 100644 index 5204010e0..000000000 --- a/docs/enhancements/sep-results-client.md +++ /dev/null @@ -1,78 +0,0 @@ -# Sonobuoy Results Client - -## Table of Contents - -* [Summary](#summary) -* [Objectives](#objectives) - * [Goals](#goals) - * [Non-Goals](#non-goals) -* [Proposal](#proposal) - * [User Stories](#user-stories) -* [Unresolved Questions](#unresolved-questions) - -## Summary - -Sonobuoy delivers results in a gzipped tar archive. The structure of the tar is -[documented here][tar structure] but programmatic access is up to every consumer -to implement. The structure of the results can change between versions and -consumer implementations become fragile. - -This proposal aims to describe a client library to help automate the analysis of -a Sonobuoy result artifact. - -## Objectives - -Provide a client library for easy access to data found in Sonobuoy results -across sonobuoy and Kubernetes versions. - -### Goals - - - Support all result files versions starting at v0.9.0. - - Provide basic access to kubernetes resources and plugin-generated files. - - Provide good access to Sonobuoy-generated data. - -### Non-Goals - -- Manage Kubernetes resource versioning. -- Customize the client library for every plugin written. -- There will be no support for tarballs before Sonobuoy version 0.9.0. - -## Proposal - -Define a set of functions that gives the consumer access to the underlying data -without exploding memory. See [the struct method definitions][struct] for a full -picture. - -### User Stories - -#### https://scanner.heptio.com - -- Scanner provides a user interface to Sonobuoy Results. It has to read through - tarballs generated by Sonobuoy and extract files and support multiple tarball - versions. It should not have to implement this custom logic and should be able - to leverage this client library. - -#### Custom plugin user - -- A user has developed a custom plugin and wants an easy way to get the data out - of the files their plugin has written. - -#### Results from various Sonobuy versions - -- A user has a collection of results across multiple versions of Sonobuoy and - wants to read the data without having to worry about the implementation of the - tarball schema directly. - -#### Resource Analysis - -- A user wants to analyze what's actually running on their cluster. They will - need a way to get at the resources that sonobuoy has found. - -## Unresolved Questions - -* None at this time. - -[tar structure]: https://github.com/heptio/sonobuoy/blob/master/docs/snapshot.md -[queries]: -https://github.com/heptio/sonobuoy/blob/master/pkg/discovery/queries.go -[struct]: https://github.com/chuckha/sonobuoy/blob/sep-1/client/ diff --git a/docs/enhancements/status-reporting.md b/docs/enhancements/status-reporting.md deleted file mode 100644 index 595a08aa6..000000000 --- a/docs/enhancements/status-reporting.md +++ /dev/null @@ -1,117 +0,0 @@ -# Status Reporting - - -**Table of Contents** - -- [Status Reporting](#status-reporting) - - [Summary](#summary) - - [Objective](#objective) - - [Goals](#goals) - - [Non-goals](#non-goals) - - [Proposal](#proposal) - - [For Sonobuoy Aggregator](#for-sonobuoy-aggregator) - - [For `sonobuoy status`](#for-sonobuoy-status) - - [Heartbeats (optional/future)](#heartbeats-optionalfuture) - - [User Stories](#user-stories) - - [Unresolved Questions](#unresolved-questions) - - - -## Summary - -Sonobuoy -- both `sonobuoy run` and through Scanner -- has really lackluster UX. -At present the tests will be kicked off and no information will be reported -until the run either succeeds or times out. This is not ideal. We would like to -have a concept of test status that can be reported, in near-real time, back to -the user running the service. Both the CLI and Scanner should be able to display -this progress in a way that makes sense for their individual UX. - -## Objective - -`sonobuoy run` and Scanner should report the status of an ongoing Sonobuoy test suite. -This status should be secure so only the intended audience can see it. - -### Goals - -* Create a command `sonobuoy status` that shows the results of an ongoing run. -* (optional) Workers can report their status to the aggregator - -### Non-goals - -* Actually updating Scanner is outside of our scope, though we should make sure - the API is useful to that team -* Complex metrics and monitoring. The first pass should be simple. -* Scanner support - -## Proposal - -### For Sonobuoy Aggregator - -An annotation will be attached to the sonobuoy pod, periodically updated by the -aggregation server. - -The annotation will be `sonobuoy.heptio.com/status`. - -```json -{ - "status": "running", - "plugins": [ - { - "name":"systemd", - "node": "node1", - "status": "complete" - }, - { - "name":"e2e", - "node": "", - "status": "running" - } - ] -} - -``` - -### For `sonobuoy status` - -`sonobuoy status` will use the kubeconfig acquisition logic from `sonobuoy run`, -then lookup the `sonobuoy` pod in the provided namespace. The status annotation can -then be decoded and displayed to the user. - -### Heartbeats (optional/future) - -The workers will set their own status annotations similar to the aggregators. -They will use the key `sonobuoy.heptio.com/status/worker` - -The aggregator will keep regularly collect and collate this information and use -it when reporting status to clients. - - -```json -{ - "status": "failed", - "plugins": [ - { - "name":"systemd", - "node": "node1", - "status": "running", - "last-heartbeat" "2008-09-15T15:53:00+05:00", - }, - { - "name":"e2e", - "node": "", - "status": "timed_out", - "last-heartbeat" "2008-09-15T15:53:00+05:00", - } - ] -} -``` - -### User Stories - -1. As a user running Sonobuoy, I want feedback on my ongoing runs -2. As a cluster admin, I want my cluster to fail early in the case of DNS or - Network misconfiguration - -## Unresolved Questions - -How useful will this status information actually be? Will it make it easier to diagnose failures? diff --git a/docs/enhancements/streamlined-templates.md b/docs/enhancements/streamlined-templates.md deleted file mode 100644 index 21e5b27a1..000000000 --- a/docs/enhancements/streamlined-templates.md +++ /dev/null @@ -1,225 +0,0 @@ -# Streamlined Templates - -## How it works now - -Currently, Sonobuoy plugins are large, sprawling YAML files. This works, but it -makes the boundary between Sonobuoy and the plugin very messy. - -By way of illustration, here is the current `heptio-e2e` plugin file. Every part -of user configuration is in green, all boilerplate required by Sonobuoy is in -red. - -```diff -- --- -- apiVersion: v1 -- kind: Pod -- metadata: -- annotations: -+ sonobuoy-driver: Job -+ sonobuoy-plugin: heptio-e2e -+ sonobuoy-result-type: heptio-e2e -- labels: -- component: sonobuoy -- sonobuoy-run: '{{.SessionID}}' -- tier: analysis -- name: sonobuoy-heptio-e2e-job-{{.SessionID}} -- namespace: '{{.Namespace}}' -- spec: -- containers: -+ - image: gcr.io/heptio-images/heptio-e2e:master -+ imagePullPolicy: Always -+ name: heptio-e2e -- volumeMounts: -- - mountPath: /tmp/results -- name: results -- readOnly: false -- - command: -- - sh -- - -c -- - /sonobuoy worker global -v 5 --logtostderr -- env: -- - name: NODE_NAME -- valueFrom: -- fieldRef: -- fieldPath: spec.nodeName -- - name: RESULTS_DIR -- value: /tmp/results -- - name: MASTER_URL -- value: '{{.MasterAddress}}' -- - name: RESULT_TYPE -- value: heptio-e2e -- image: gcr.io/heptio-images/sonobuoy:master -- imagePullPolicy: Always -- name: sonobuoy-worker -- volumeMounts: -- - mountPath: /tmp/results -- name: results -- readOnly: false -- restartPolicy: Never -- serviceAccountName: sonobuoy-serviceaccount -- tolerations: -- - effect: NoSchedule -- key: node-role.kubernetes.io/master -- operator: Exists -- - key: CriticalAddonsOnly -- operator: Exists -- volumes: -- - emptyDir: {} -- name: results -``` - -## Summary - -Removing this boiler plate will not just greatly simplify the process of making -a plugin. It will also allow us to make changes behind the scenes to the -Sonobuoy execution model without requiring updates to template files. - -All this boiler plate isn't just annoying. It paralyses changes to the Sonobuoy -execution model. Adding any new environment variables or metadata requires -changing all existing plugin definitions. - -## Objectives - -Replace the existing templates with a greatly streamlined one. - -### Goals -* Conceal the execution mechanics from users -* Allow seamless upgrading of Sonobuoy without user intervention - -### Non-goals -* Do not modify the done contract betweens producer and consumer container - -## Proposals - -### Proposal 1 - -An entirely new YAML-based file will be used for plugins. This will consist of -two sections: Metadata and container spec. - -```yaml -sonobuoy-config: - driver: Job - plugin-name: heptio-e2e - result-type: heptio-e2e -spec: - image: gcr.io/heptio-images/heptio-e2e:master - imagePullPolicy: Always - name: heptio-e2e - volumeMounts: - - mountPath: /tmp/results - name: results - readOnly: false -``` - -This will be merged into a larger Pod document provided by the Sonobuoy YAML -driver - -```yaml ---- -apiVersion: v1 -kind: Pod -metadata: - labels: - component: sonobuoy - sonobuoy-run: '{{.SessionID}}' - tier: analysis - name: sonobuoy-heptio-e2e-job-{{.SessionID}} - namespace: '{{.Namespace}}' -spec: - containers: - - {{.PluginContainerSpec}} - volumeMounts: - - mountPath: /tmp/results - name: results - readOnly: false - - command: - - sh - - -c - - /sonobuoy worker global -v 5 --logtostderr - env: - - name: NODE_NAME - valueFrom: - fieldRef: - fieldPath: spec.nodeName - - name: RESULTS_DIR - value: /tmp/results - - name: MASTER_URL - value: '{{.MasterAddress}}' - - name: RESULT_TYPE - value: heptio-e2e - image: gcr.io/heptio-images/sonobuoy:master - imagePullPolicy: Always - name: sonobuoy-worker - volumeMounts: - - mountPath: /tmp/results - name: results - readOnly: false - restartPolicy: Never - serviceAccountName: sonobuoy-serviceaccount - tolerations: - - effect: NoSchedule - key: node-role.kubernetes.io/master - operator: Exists - - key: CriticalAddonsOnly - operator: Exists - volumes: - - emptyDir: {} - name: results -``` - -#### Advantages: -* Simple substitution -* Can add additional fields later - -#### Disadvantages -* Not a Kubernetes API object -* Not as clear how it'll be executed - -### Proposal 2 - -In this scenario, the user provides a (templated) valid Kubernetes API Document. - -```yaml -apiVersion: v1 -kind: Pod -metadata: - annotations: - sonobuoy-driver: Job - sonobuoy-plugin: heptio-e2e - sonobuoy-result-type: heptio-e2e - labels: {{.SonobuoyLabels}} - name: sonobuoy-heptio-e2e-job-{{.SessionID}} - namespace: '{{.Namespace}}' -spec: - containers: - - image: gcr.io/heptio-images/heptio-e2e:master - imagePullPolicy: Always - name: heptio-e2e - {{.SonobuoyMount}} - - {{.SonobuoyConsumer}} - {{.SonobuySpecExtras}} -``` - -Then, at runtime, the template would be filled with values by the plugin driver. -These could be based on several templates themselves, or created at runtime out -of Go structs. - -#### Advantages -* Easier to see how the completed template will be finished -* Native (therefore familiar) Kubernetes object - -#### Disadvantages -* More boilerplate for plugin authors -* Template for plugin drivers is harder write/understand -* Extension points are fixed: No new Pod attributes could be added outsite of - `spec` or Labels. - -# Results - -Proposal 1 accepted. - -## User stories: - -1. As a power user, I would like to see the generated YAML for a plugin.yml file. -2. As a plugin author, I can write a simplified plugin.yml file -3. As an end user, I should see no changes as a result of this plugin work diff --git a/docs/enhancements/v2-worker-master.md b/docs/enhancements/v2-worker-master.md deleted file mode 100644 index 5faeab66a..000000000 --- a/docs/enhancements/v2-worker-master.md +++ /dev/null @@ -1,105 +0,0 @@ -# v2 Worker-Master communications - - -**Table of Contents** - -- [v2 Worker-Master communications](#v2-worker-master-communications) - - [How it works now](#how-it-works-now) - - [Summary](#summary) - - [Objectives](#objectives) - - [Goals](#goals) - - [Non-goals](#non-goals) - - [Proposal](#proposal) - - [User Stories](#user-stories) - - [Unresolved Questions](#unresolved-questions) - - - -## How it works now - -Sonobuoy uses a worker-master model, where a master delegates tasks to worker -pods. When those pods have finished, they need to report the results of their -work back to the master. Presently this is done over an ill-defined, ad hoc -REST-ish client/server model embedded in the server. - -The data passed back to the master is pretty much completely opaque. PUT -receives a path like /results/node1/systemd, and a blob of data as the body. -That data is written out, unexamined, to a file like node1/systemd in the -finished tarball. - -The worker is given JSON config blob which tells it where and how to report its -results. This contains, amongst other things, the URL of the master where those -results will be sent. - -The plugins themselves use a two-container model. One container, that created by -the plugin author, outputs its results in a shared directory. It touches a -`done` file with the name of the file it created. The other container is -responsible for submitting these results back to the master. It watches for the -`done` file, then uses the config JSON to `PUT` those results back to the -master. - -## Summary - -The interaction between the master and worker is ad hoc and poorly documented. -All data is also transmitted plain text over HTTP with no authentication or -verification. - -## Objectives - -Replace the existing, organically grown architecture with a mature, secure -solution that doesn't compromise the existing project's extensibility or -existing users. - -### Goals - -* Secure and authenticate the channel between the consumer and the producer -* Formalise and document the communication channel between the worker container - and the master -* Extract and clean up the worker client so other projects can vendor it - directly -* (Ancillary) Prevent simultaneous or poorly-cleaned up Sonobuoy runs from - interfering with each other -* Transition should be seamless for existing plugin authors - -### Non-goals - -* The `done` interface between the Producer and Consumer containers is not part -of this proposal. This contract is already used by public consumers outside the -control of Heptio. - -## Proposal - -My original proposal was to use GRPC, but given that we are submitting wholly -unstructured data this is likely overkill. - -Instead, the current URL (`/api/v1/results/by_node/:node_name/:plugin_name`, -`/api/v1/resutlts/global/:plugin_name`) will be kept. Instead of HTTP, though, -the results will communicate over mutual authentication TLS. The client will -authenticate the server by a vendored CA certificate, and the server will -authenticate the client through an individually assigned client certificates. - -The CA certificate and client certificate will be added to the JSON config blob -all nodes are defined, not baked into the images themselves. The node private -key will be transmitted as a Kubernetes secret. Every master run should create a -brand-new certificate authority and credentials. This ensures duplicate or -overlapping runs cannot interfere with each other. - -The code for communicating this information back will be isolated to a specific -package that other projects can use to write their own workers that don't use -our containers. - -### User Stories - -* As a Sonobuoy user, I want my tests to continue to work as they did before - this change was made -* As an existing Sonobuoy plugin author, it should take little to no work to - update my plugin -* As a new plugin author, it should be clear how I author a new plugin -* As an author of a new Go-based plugin, I should be able to directly use the - client library if I need to - -## Unresolved Questions - -* No Metadata other than node name and plug-in name is currently collected. If - at some point we wish to do this, there will not be any out-of-band way to - collect this other than URL parameters or headers. diff --git a/scripts/update_docs.sh b/scripts/update_docs.sh new file mode 100755 index 000000000..08b0058c4 --- /dev/null +++ b/scripts/update_docs.sh @@ -0,0 +1,76 @@ +#!/bin/bash + +set -x + +SCRIPTS_DIR="$( cd "$( dirname "$0" )" >/dev/null 2>&1 && pwd )" +DIR=$(cd $SCRIPTS_DIR; cd ..; pwd) +VERSION=$1 +TOC_NAME=$(echo ${VERSION}toc|sed s/\\./-/g) + +read -r -d '' CONFIG_VERSION_BLOCK << EOM +latest: v.* +versions: +- master +EOM + +read -r -d '' NEW_VERSION_BLOCK << EOM +latest: ${VERSION} +versions: +- master +- ${VERSION} +EOM + +read -r -d '' OLD_SCOPE_BLOCK << EOM + - scope: + path: docs\/master + values: + version: master + gh: https:\/\/github.com\/heptio\/sonobuoy\/tree\/master + layout: \"docs\" +EOM + +read -r -d '' NEW_SCOPE_BLOCK << EOM + - scope: + path: docs\/master + values: + version: master + gh: https:\/\/github.com\/heptio\/sonobuoy\/tree\/master + layout: \"docs\" + - scope: + path: docs\/${VERSION} + values: + version: ${VERSION} + gh: https:\/\/github.com\/heptio\/sonobuoy\/tree\/${VERSION} + layout: \"docs\" +EOM + +OLD_TOC_BLOCK="master: master-toc" +read -r -d '' NEW_TOC_BLOCK << EOM +master: master-toc +${VERSION}: ${TOC_NAME} +EOM + +OLD_FOOTER_BLOCK="cta_url: \/docs\/v.*" +NEW_FOOTER_BLOCK="cta_url: \/docs\/${VERSION}" + +if [ -z "${VERSION}" ] +then + echo "Should be called with version as first argument. No argument given, not creating docs." +else + docker run --rm \ + -v ${DIR}:/root \ + debian:stretch-slim \ + /bin/sh -c \ + "rm -rf /root/site/docs/${VERSION} && \ + cp -r /root/site/docs/master /root/site/docs/${VERSION} && \ + cp /root/README.md /root/site/docs/${VERSION}/README.md && \ + sed -i 's/site\/docs\/master\///g' /root/site/docs/${VERSION}/README.md && \ + sed -i 's/docs\/img/img/g' /root/site/docs/${VERSION}/README.md && \ + sed -i 's/sonobuoy\/tree\/master/sonobuoy\/tree\/${VERSION}/g' /root/site/docs/${VERSION}/README.md && \ + cp /root/site/_data/master-toc.yml /root/site/_data/${TOC_NAME}.yml && \ + perl -i -0pe 's/${CONFIG_VERSION_BLOCK}/${NEW_VERSION_BLOCK}/' /root/site/_config.yml && \ + perl -i -0pe 's/${OLD_SCOPE_BLOCK}/${NEW_SCOPE_BLOCK}/' /root/site/_config.yml && \ + perl -i -0pe 's/${OLD_TOC_BLOCK}/${NEW_TOC_BLOCK}/' /root/site/_data/toc-mapping.yml && \ + sed -i 's/\/docs\/v.*\"/\/docs\/${VERSION}\"/' /root/site/_includes/site-header.html && \ + sed -i 's/${OLD_FOOTER_BLOCK}/${NEW_FOOTER_BLOCK}/' /root/site/_config.yml" +fi \ No newline at end of file diff --git a/site/_config.yml b/site/_config.yml index a24e439c1..69e01dc70 100644 --- a/site/_config.yml +++ b/site/_config.yml @@ -14,7 +14,7 @@ footer: title: Getting Started content: To help you get started, see the documentation. cta_title: - cta_url: /docs/v0.14.3 + cta_url: /docs/v0.15.0 cta_text: Documentation vm-link: http://vmware.github.io/ @@ -49,6 +49,12 @@ defaults: version: master gh: https://github.com/heptio/sonobuoy/tree/master layout: "docs" + - scope: + path: docs/v0.15.0 + values: + version: v0.15.0 + gh: https://github.com/heptio/sonobuoy/tree/v0.15.0 + layout: "docs" - scope: path: docs/v0.14.3 values: @@ -85,9 +91,10 @@ collections: - casestudies versioning: true -latest: v0.14.3 +latest: v0.15.0 versions: - master +- v0.15.0 - v0.14.3 - v0.14.2 - v0.14.1 diff --git a/site/_data/toc-mapping.yml b/site/_data/toc-mapping.yml index 9590dd001..2cc9d9090 100644 --- a/site/_data/toc-mapping.yml +++ b/site/_data/toc-mapping.yml @@ -5,6 +5,7 @@ # Below is a commented out example of what this may look like: master: master-toc +v0.15.0: v0-15-0toc v0.14.3: v0-14-3toc v0.14.2: v0-14-2toc v0.14.1: v0-14-0toc diff --git a/site/_data/v0-15-0toc.yml b/site/_data/v0-15-0toc.yml new file mode 100644 index 000000000..066817976 --- /dev/null +++ b/site/_data/v0-15-0toc.yml @@ -0,0 +1,28 @@ +toc: + - title: Setting up + subfolderitems: + - page: Getting started + url: /index.html + - page: Config + url: /sonobuoy-config + - page: Snapshot layout + url: /snapshot + - page: ImagePullSecrects + url: /pullsecrets + - title: Use cases + subfolderitems: + - page: Conformance testing + url: /conformance-testing + - page: Custom Registries & Airgap Testing + url: /airgap + - page: Plugins + url: /plugins + - title: Next steps + subfolderitems: + - page: Customization + url: /gen + - page: Make your own plugins + url: /examples + github: true + - page: Cut a Release + url: /release \ No newline at end of file diff --git a/site/_includes/site-header.html b/site/_includes/site-header.html index 48a095c6a..d9254f819 100644 --- a/site/_includes/site-header.html +++ b/site/_includes/site-header.html @@ -7,7 +7,7 @@
  • Home
  • Blog
  • Community
  • -
  • Documentation
  • +
  • Documentation
  • Resources