diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d381a4e1d..488e2da59 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -10,7 +10,6 @@ jobs: - uses: actions/checkout@v4 - uses: ruby/setup-ruby@v1 with: - ruby-version: "3.1.2" bundler-cache: true - working-directory: jekyll-kuma-plugins run: bundle install @@ -58,6 +57,7 @@ jobs: --exclude https://linux.die.net \ --exclude https://packages.konghq.com \ --exclude https://twitter.com \ + --exclude https://coredns.io \ --max-connections-per-host=8 \ --max-response-body-size 100000000 \ --rate-limit 50 \ @@ -75,6 +75,7 @@ jobs: --exclude https://linux.die.net \ --exclude https://packages.konghq.com \ --exclude https://twitter.com \ + --exclude https://coredns.io \ --max-connections-per-host=8 \ --max-response-body-size 100000000 \ --rate-limit 50 \ diff --git a/.ruby-version b/.ruby-version index ef538c281..be94e6f53 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -3.1.2 +3.2.2 diff --git a/Gemfile b/Gemfile index bc3f14e2b..5a48accc5 100644 --- a/Gemfile +++ b/Gemfile @@ -3,20 +3,15 @@ source 'https://rubygems.org' gem 'jekyll', '~> 4.2' gem 'liquid-c' gem 'rouge', '3.30.0' +gem 'jekyll-generator-single-source' -group :jekyll_plugins do - gem 'jekyll-paginate-v2' - gem 'jekyll-last-modified-at' - gem 'jekyll-contentblocks' - gem 'jekyll-vite' - gem 'jekyll-generator-single-source' - gem 'jekyll-kuma-plugins', path: './jekyll-kuma-plugins' -end +gem 'jekyll-paginate-v2' +gem 'jekyll-last-modified-at' +gem 'jekyll-contentblocks' +gem 'jekyll-vite' +gem 'jekyll-kuma-plugins', path: './jekyll-kuma-plugins' group :development do - # Webrick is no longer bundled with ruby 3 - # https://github.com/jekyll/jekyll/issues/8523 - gem "webrick", "~> 1.7" gem 'byebug' gem 'foreman' end diff --git a/Gemfile.lock b/Gemfile.lock index 9079b7168..bd2c0829a 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -46,7 +46,8 @@ GEM webrick (~> 1.7) jekyll-contentblocks (1.2.0) jekyll - jekyll-generator-single-source (0.0.8) + jekyll-generator-single-source (0.0.15) + i18n (~> 1) jekyll (>= 4.2, < 5.0) jekyll-last-modified-at (1.3.0) jekyll (>= 3.7, < 5.0) @@ -132,7 +133,6 @@ DEPENDENCIES liquid-c rouge (= 3.30.0) rspec - webrick (~> 1.7) BUNDLED WITH 2.3.7 diff --git a/Makefile b/Makefile index c6941d301..9b7dc05ce 100644 --- a/Makefile +++ b/Makefile @@ -20,13 +20,13 @@ install: ruby-version-check bundle install run: ruby-version-check - bundle exec foreman start + netlify dev test: bundle exec rspec build: ruby-version-check - bundle exec jekyll build --config jekyll.yml --profile + exe/build # Cleans up all temp files in the build. # Run `make clean` locally whenever you're updating dependencies, or to help diff --git a/Procfile b/Procfile index 653170eaf..f2a1fa7af 100644 --- a/Procfile +++ b/Procfile @@ -1,2 +1,2 @@ -netlify: npx netlify dev -jekyll: bundle exec jekyll serve --livereload --config jekyll-dev.yml +vite: bin/vite dev +jekyll: bin/jekyll-vite wait && bundle exec jekyll serve --livereload --config jekyll-dev.yml --profile diff --git a/app/_data/docs_nav_kuma_dev.yml b/app/_data/docs_nav_kuma_2.10.x.yml similarity index 99% rename from app/_data/docs_nav_kuma_dev.yml rename to app/_data/docs_nav_kuma_2.10.x.yml index ea352ecf2..494e30231 100644 --- a/app/_data/docs_nav_kuma_dev.yml +++ b/app/_data/docs_nav_kuma_2.10.x.yml @@ -1,5 +1,6 @@ generate: true assume_generated: true +release: 2.10.x items: - title: Introduction group: true diff --git a/app/_data/docs_nav_kuma_2.6.x.yml b/app/_data/docs_nav_kuma_2.6.x.yml index 198539090..e1bdad94a 100644 --- a/app/_data/docs_nav_kuma_2.6.x.yml +++ b/app/_data/docs_nav_kuma_2.6.x.yml @@ -1,3 +1,4 @@ +release: 2.6.x generate: true assume_generated: true items: diff --git a/app/_data/docs_nav_kuma_2.7.x.yml b/app/_data/docs_nav_kuma_2.7.x.yml index 1f2c5f3ea..390fa6cc0 100644 --- a/app/_data/docs_nav_kuma_2.7.x.yml +++ b/app/_data/docs_nav_kuma_2.7.x.yml @@ -1,5 +1,6 @@ generate: true assume_generated: true +release: 2.7.x items: - title: Introduction group: true diff --git a/app/_data/docs_nav_kuma_2.8.x.yml b/app/_data/docs_nav_kuma_2.8.x.yml index 88527ae30..5bb157281 100644 --- a/app/_data/docs_nav_kuma_2.8.x.yml +++ b/app/_data/docs_nav_kuma_2.8.x.yml @@ -1,5 +1,6 @@ generate: true assume_generated: true +release: 2.8.x items: - title: Introduction group: true diff --git a/app/_data/docs_nav_kuma_2.9.x.yml b/app/_data/docs_nav_kuma_2.9.x.yml index ea352ecf2..e4fb4b119 100644 --- a/app/_data/docs_nav_kuma_2.9.x.yml +++ b/app/_data/docs_nav_kuma_2.9.x.yml @@ -1,5 +1,6 @@ generate: true assume_generated: true +release: 2.9.x items: - title: Introduction group: true diff --git a/app/_data/versions.yml b/app/_data/versions.yml index 5314e358e..e922853e0 100644 --- a/app/_data/versions.yml +++ b/app/_data/versions.yml @@ -103,6 +103,7 @@ endOfLifeDate: "2025-10-22" branch: release-2.9 - edition: kuma - version: preview - release: dev + version: 2.10.0 + release: 2.10.x + label: dev branch: master diff --git a/app/_includes/sidebar.html b/app/_includes/sidebar.html index 0c69a45f6..0e46541a6 100644 --- a/app/_includes/sidebar.html +++ b/app/_includes/sidebar.html @@ -14,5 +14,5 @@ {%- endif %} - {% include sidebar_links.html nav_items=page.nav_items version=page.version depth=0 %} + {% include sidebar_links.html nav_items=page.nav_items release=page.release depth=0 %} diff --git a/app/_includes/sidebar_group.html b/app/_includes/sidebar_group.html index 3677adb14..488cee41e 100644 --- a/app/_includes/sidebar_group.html +++ b/app/_includes/sidebar_group.html @@ -8,5 +8,5 @@ {% assign children_depth = depth | plus: 1 %} - {% include sidebar_links.html nav_items=item.items depth=children_depth cssClass='sidebar-group-items hidden' version=include.version %} + {% include sidebar_links.html nav_items=item.items depth=children_depth cssClass='sidebar-group-items hidden' release=include.release %} diff --git a/app/_includes/sidebar_link.html b/app/_includes/sidebar_link.html index 30a516c7c..782f0b052 100644 --- a/app/_includes/sidebar_link.html +++ b/app/_includes/sidebar_link.html @@ -2,7 +2,7 @@ {% assign current_page = page.url | remove: '.html' %} {% if item.absolute_url %}{% assign url = item.url %} -{% else %}{% assign url = '/docs/' | append: include.version | append: item.url %} +{% else %}{% assign url = '/docs/' | append: include.release | append: item.url %} {% endif %} {{ item.text or item.title }} @@ -11,7 +11,7 @@ {% for sub_item in item.items %}
  • {% if item.group %} - {% include sidebar_group.html item=item depth=include.depth version=include.version %} + {% include sidebar_group.html item=item depth=include.depth release=include.release %} {% else %} - {% include sidebar_link.html item=item version=include.version %} + {% include sidebar_link.html item=item release=include.release %} {% endif %}
  • {% endfor %} diff --git a/app/_includes/snippets/install_kumactl.md b/app/_includes/snippets/install_kumactl.md index fb96b4c1a..f58accad9 100644 --- a/app/_includes/snippets/install_kumactl.md +++ b/app/_includes/snippets/install_kumactl.md @@ -25,7 +25,7 @@ and extract the archive with `tar xvzf kuma-{{ page.latest_version }}.tar.gz` {% endtab %} {% endtabs %} -Once downloaded, you will find the contents of Kuma in the `kuma-{{ page.latest_version }}` folder. In this folder, you will find - among other files - the `bin` directory that stores the executables for Kuma, including the CLI client [`kumactl`](/docs/{{ page.version }}/explore/cli). +Once downloaded, you will find the contents of Kuma in the `kuma-{{ page.latest_version }}` folder. In this folder, you will find - among other files - the `bin` directory that stores the executables for Kuma, including the CLI client [`kumactl`](/docs/{{ page.release }}/explore/cli). {% tip %} **Note**: On Kubernetes - of all the Kuma binaries in the `bin` folder - we only need `kumactl`. diff --git a/app/_includes/snippets/install_os.md b/app/_includes/snippets/install_os.md index 66500d02b..7935d0181 100644 --- a/app/_includes/snippets/install_os.md +++ b/app/_includes/snippets/install_os.md @@ -28,7 +28,7 @@ Once downloaded, you will find the contents of Kuma in the `kuma-{{ page.latest_ You can start the control-plane with: `kuma-{{ page.latest_version }}/bin/kuma-cp run` -This example will run Kuma in `standalone` mode for a "flat" deployment, but there are more advanced {% if_version lte:2.1.x %}[deployment modes](/docs/{{ page.version }}/introduction/deployments){% endif_version %}{% if_version gte:2.2.x %}[deployment modes](/docs/{{ page.version }}/production/deployment/){% endif_version %} like "multi-zone". +This example will run Kuma in `standalone` mode for a "flat" deployment, but there are more advanced {% if_version lte:2.1.x %}[deployment modes](/docs/{{ page.release }}/introduction/deployments){% endif_version %}{% if_version gte:2.2.x %}[deployment modes](/docs/{{ page.release }}/production/deployment/){% endif_version %} like "multi-zone". We suggest adding the `kumactl` executable to your `PATH` so that it's always available in every working directory. Or - alternatively - you can also create link in `/usr/local/bin/` by executing: @@ -37,7 +37,7 @@ ln -s kuma-{{ page.latest_version }}/bin/kumactl /usr/local/bin/kumactl ``` {% tip %} -**Note**: By default this will run Kuma with a `memory` [store](/docs/{{ page.version }}/documentation/configuration), but for production you have to use a persistent storage like PostgreSQL by updating the `conf/kuma-cp.conf` file. +**Note**: By default this will run Kuma with a `memory` [store](/docs/{{ page.release }}/documentation/configuration), but for production you have to use a persistent storage like PostgreSQL by updating the `conf/kuma-cp.conf` file. {% endtip %} ### Use Kuma @@ -89,10 +89,10 @@ kumactl config control-planes add --name=XYZ --address=http://{address-to-kuma}: {% endtab %} {% endtabs %} -You will notice that Kuma automatically creates a {% if_version lte:2.1.x %}[`Mesh`](/docs/{{ page.version }}/policies/mesh){% endif_version %}{% if_version gte:2.2.x %}[`Mesh`](/docs/{{ page.version }}/production/mesh/){% endif_version %} entity with name `default`. +You will notice that Kuma automatically creates a {% if_version lte:2.1.x %}[`Mesh`](/docs/{{ page.release }}/policies/mesh){% endif_version %}{% if_version gte:2.2.x %}[`Mesh`](/docs/{{ page.release }}/production/mesh/){% endif_version %} entity with name `default`. ### Quickstart Congratulations! You have successfully installed Kuma 🚀. -In order to start using Kuma, it's time to check out the [quickstart guide for Universal](/docs/{{ page.version }}/quickstart/universal) deployments. +In order to start using Kuma, it's time to check out the [quickstart guide for Universal](/docs/{{ page.release }}/quickstart/universal) deployments. diff --git a/app/_includes/snippets/use_kuma_k8s.md b/app/_includes/snippets/use_kuma_k8s.md index 5fc16750a..ae4b578a4 100644 --- a/app/_includes/snippets/use_kuma_k8s.md +++ b/app/_includes/snippets/use_kuma_k8s.md @@ -78,4 +78,4 @@ kumactl config control-planes add --name=XYZ --address=http://{address-to-kuma}: {% endtab %} {% endtabs %} -You will notice that Kuma automatically creates a {% if_version lte:2.1.x %}[`Mesh`](/docs/{{ page.version }}/policies/mesh){% endif_version %}{% if_version gte:2.2.x %}[`Mesh`](/docs/{{ page.version }}/production/mesh/){% endif_version %} entity with name `default`. +You will notice that Kuma automatically creates a {% if_version lte:2.1.x %}[`Mesh`](/docs/{{ page.release }}/policies/mesh){% endif_version %}{% if_version gte:2.2.x %}[`Mesh`](/docs/{{ page.release }}/production/mesh/){% endif_version %} entity with name `default`. diff --git a/app/_includes/version_alert.html b/app/_includes/version_alert.html index 6a5891e0f..5a7bd7a83 100644 --- a/app/_includes/version_alert.html +++ b/app/_includes/version_alert.html @@ -1,27 +1,26 @@ -{% assign current_version = page.version %} -{% assign latest_version = site.data.latest_version.release %} +{% assign current_release = page.release %} +{% assign latest_release = site.data.latest_version.release %} {% assign page_path = page.url | split: '/' | shift: 3 | join: '/' %} -{% assign latest_version_path = "docs/" | append: latest_version | append: '/' | append: page_path | append: '.md' %} -{% assign latest_page = site.pages | find: 'path', latest_version_path %} +{% assign latest_release_path = "/docs/" | append: latest_release | append: '/' | append: page_path %} +{% assign latest_page = site.pages | find: 'url', latest_release_path %} -{%- if current_version and current_version != site.data.latest_version.release -%} -
    -
    -

    Careful!

    - {% if current_version == 'dev' %} -

    You are browsing documentation for the next version of {{ site.title }}. Use this version at your own risk.

    - {% else %} -

    You are browsing documentation for a version of {{ site.title }} that is not the latest release.

    - {% endif %} +{% if current_release %} + {% unless current_release.latest? %} +
    +
    +

    Careful!

    + {% if current_release.label == 'dev' %} +

    You are browsing documentation for the next version of {{ site.title }}. Use this version at your own risk.

    + {% else %} +

    You are browsing documentation for a version of {{ site.title }} that is not the latest release.

    + {% endif %} - {% if latest_page != nil %} -

    - Go here to browse the documentation for the latest version. -

    - {% endif %} - {% if current_version != 'dev' %} -

    Looking for even older versions? Learn more.

    - {% endif %} + {% if latest_page != nil %} +

    + Go here to browse the documentation for the latest version. +

    + {% endif %} +
    -
    + {% endunless -%} {% endif -%} diff --git a/app/_includes/version_selector.html b/app/_includes/version_selector.html index 5c17eb2fd..7aebe24ff 100644 --- a/app/_includes/version_selector.html +++ b/app/_includes/version_selector.html @@ -1,4 +1,4 @@ -{% assign current_version = page.version %} +{% assign current_release = page.release %} I am using MeshService +
    #{contents[:kube_legacy]} #{contents[:kube]} {% endtab %} {% tab #{@tabs_name} Universal %}
    - +
    #{contents[:uni_legacy]} #{contents[:uni]} diff --git a/jekyll.yml b/jekyll.yml index a40a38303..0d68868f7 100644 --- a/jekyll.yml +++ b/jekyll.yml @@ -99,3 +99,11 @@ mesh_install_archive_name: kuma mesh_raw_generated_paths: - app/assets - app/docs + +plugins: + - jekyll-generator-single-source + - jekyll-paginate-v2 + - jekyll-last-modified-at + - jekyll-contentblocks + - jekyll/vite + - jekyll-kuma-plugins diff --git a/netlify.toml b/netlify.toml index 98961cf12..9be1db66d 100644 --- a/netlify.toml +++ b/netlify.toml @@ -1,11 +1,7 @@ [build] publish = "dist" - command = "bundle exec jekyll build --config jekyll.yml" - -[build.environment] - JEKYLL_ENV = "development" - BUNDLE_WITHOUT = "development" - NODE_OPTIONS = "--max_old_space_size=8192" + command = "exe/build" + environment = { JEKYLL_ENV = "development", BUNDLE_WITHOUT = "development", NODE_OPTIONS = "--max_old_space_size=8192" } [context.production.environment] JEKYLL_ENV = "production" diff --git a/package.json b/package.json index 6e5be8aef..91f5303ad 100644 --- a/package.json +++ b/package.json @@ -2,6 +2,11 @@ "name": "kuma-website", "description": "The website and docs for Kuma.", "author": "Kong Inc.", + "scripts": { + "test": "yarn jest", + "dev": "foreman start", + "test-coverage": "yarn jest --coverage" + }, "dependencies": { "@kongponents/ktabs": "^0.1.2", "@kongponents/styles": "^0.2.0", diff --git a/spec/fixtures/mhr-and-mtr.golden.html b/spec/fixtures/mhr-and-mtr.golden.html index 98c817dac..a739a8c73 100644 --- a/spec/fixtures/mhr-and-mtr.golden.html +++ b/spec/fixtures/mhr-and-mtr.golden.html @@ -45,7 +45,7 @@ >
    - +
    apiVersion: kuma.io/v1alpha1
    @@ -226,7 +226,7 @@
           >
             
     
    - +
    type: MeshHTTPRoute
    diff --git a/spec/fixtures/mhr-port.golden.html b/spec/fixtures/mhr-port.golden.html
    index 499359eb4..33f342248 100644
    --- a/spec/fixtures/mhr-port.golden.html
    +++ b/spec/fixtures/mhr-port.golden.html
    @@ -45,7 +45,7 @@
           >
             
     
    - +
    apiVersion: kuma.io/v1alpha1
    @@ -138,7 +138,7 @@
           >
             
     
    - +
    type: MeshHTTPRoute
    diff --git a/spec/fixtures/mhr-port_dev.golden.html b/spec/fixtures/mhr-port_dev.golden.html
    new file mode 100644
    index 000000000..000de0bd8
    --- /dev/null
    +++ b/spec/fixtures/mhr-port_dev.golden.html
    @@ -0,0 +1,215 @@
    +
    +
    +
    +
    +
    +
    + + +
    + +
    + +
    + +
    + +
    apiVersion: kuma.io/v1alpha1
    +kind: MeshHTTPRoute
    +metadata:
    +  name: http-route-1
    +  namespace: kuma-demo
    +  labels:
    +    kuma.io/mesh: default
    +spec:
    +  targetRef:
    +    kind: MeshSubset
    +    tags:
    +      app: frontend
    +  to:
    +  - targetRef:
    +      kind: MeshService
    +      name: backend_kuma-demo_svc_3001
    +    rules:
    +    - matches:
    +      - headers:
    +        - type: Exact
    +          name: mirror-this-request
    +          value: 'true'
    +      default:
    +        filters:
    +        - type: RequestMirror
    +          requestMirror:
    +            percentage: 30
    +            backendRef:
    +              kind: MeshServiceSubset
    +              name: backend_kuma-demo_svc_3001
    +              tags:
    +                version: experimental
    +        backendRefs:
    +        - kind: MeshService
    +          name: backend_kuma-demo_svc_3001
    +
    + +
    apiVersion: kuma.io/v1alpha1
    +kind: MeshHTTPRoute
    +metadata:
    +  name: http-route-1
    +  namespace: kuma-demo
    +  labels:
    +    kuma.io/mesh: default
    +spec:
    +  targetRef:
    +    kind: MeshSubset
    +    tags:
    +      app: frontend
    +  to:
    +  - targetRef:
    +      kind: MeshService
    +      name: backend
    +      namespace: kuma-demo
    +      sectionName: http
    +    rules:
    +    - matches:
    +      - headers:
    +        - type: Exact
    +          name: mirror-this-request
    +          value: 'true'
    +      default:
    +        filters:
    +        - type: RequestMirror
    +          requestMirror:
    +            percentage: 30
    +            backendRef:
    +              kind: MeshService
    +              name: backend-experimental
    +              namespace: kuma-demo
    +              port: 3001
    +        backendRefs:
    +        - kind: MeshService
    +          name: backend
    +          namespace: kuma-demo
    +          port: 3001
    +
    + + +
    + + + +
    +
    diff --git a/spec/fixtures/mhr-port_edition.golden.html b/spec/fixtures/mhr-port_edition.golden.html new file mode 100644 index 000000000..5a6c51c34 --- /dev/null +++ b/spec/fixtures/mhr-port_edition.golden.html @@ -0,0 +1,215 @@ + + + + + +
    + + +
    + +
    + +
    + +
    + +
    apiVersion: kuma.io/v1alpha1
    +kind: MeshHTTPRoute
    +metadata:
    +  name: http-route-1
    +  namespace: kuma-demo
    +  labels:
    +    kuma.io/mesh: default
    +spec:
    +  targetRef:
    +    kind: MeshSubset
    +    tags:
    +      app: frontend
    +  to:
    +  - targetRef:
    +      kind: MeshService
    +      name: backend_kuma-demo_svc_3001
    +    rules:
    +    - matches:
    +      - headers:
    +        - type: Exact
    +          name: mirror-this-request
    +          value: 'true'
    +      default:
    +        filters:
    +        - type: RequestMirror
    +          requestMirror:
    +            percentage: 30
    +            backendRef:
    +              kind: MeshServiceSubset
    +              name: backend_kuma-demo_svc_3001
    +              tags:
    +                version: experimental
    +        backendRefs:
    +        - kind: MeshService
    +          name: backend_kuma-demo_svc_3001
    +
    + +
    apiVersion: kuma.io/v1alpha1
    +kind: MeshHTTPRoute
    +metadata:
    +  name: http-route-1
    +  namespace: kuma-demo
    +  labels:
    +    kuma.io/mesh: default
    +spec:
    +  targetRef:
    +    kind: MeshSubset
    +    tags:
    +      app: frontend
    +  to:
    +  - targetRef:
    +      kind: MeshService
    +      name: backend
    +      namespace: kuma-demo
    +      sectionName: http
    +    rules:
    +    - matches:
    +      - headers:
    +        - type: Exact
    +          name: mirror-this-request
    +          value: 'true'
    +      default:
    +        filters:
    +        - type: RequestMirror
    +          requestMirror:
    +            percentage: 30
    +            backendRef:
    +              kind: MeshService
    +              name: backend-experimental
    +              namespace: kuma-demo
    +              port: 3001
    +        backendRefs:
    +        - kind: MeshService
    +          name: backend
    +          namespace: kuma-demo
    +          port: 3001
    +
    + + +
    + + + +
    +
    \ No newline at end of file diff --git a/spec/fixtures/mt-with-from-and-meshservice-in-to.golden.html b/spec/fixtures/mt-with-from-and-meshservice-in-to.golden.html index 8428f9059..2dbabe890 100644 --- a/spec/fixtures/mt-with-from-and-meshservice-in-to.golden.html +++ b/spec/fixtures/mt-with-from-and-meshservice-in-to.golden.html @@ -45,7 +45,7 @@ >
    - +
    apiVersion: kuma.io/v1alpha1
    @@ -112,7 +112,7 @@
           >
             
     
    - +
    type: MeshTimeout
    diff --git a/spec/fixtures/mtr.golden.html b/spec/fixtures/mtr.golden.html
    index fd5651091..f0bed0438 100644
    --- a/spec/fixtures/mtr.golden.html
    +++ b/spec/fixtures/mtr.golden.html
    @@ -45,7 +45,7 @@
           >
             
     
    - +
    apiVersion: kuma.io/v1alpha1
    @@ -124,7 +124,7 @@
           >
             
     
    - +
    type: MeshTCPRoute
    diff --git a/spec/kuma_plugins/liquid/tags/inc_spec.rb b/spec/kuma_plugins/liquid/tags/inc_spec.rb
    index f1a7dcd0e..9c2b49ae3 100644
    --- a/spec/kuma_plugins/liquid/tags/inc_spec.rb
    +++ b/spec/kuma_plugins/liquid/tags/inc_spec.rb
    @@ -1,9 +1,7 @@
     RSpec.describe Jekyll::KumaPlugins::Liquid::Tags::Inc do
       let(:version) { '2.9.1' }
    -  # If we ever upgrade jekyll-generator-single-source we will have to change below to:
    -  # let(:release) { Jekyll::GeneratorSingleSource::Product::Release.new({ 'release' => version }) }
    -  # let(:page) { { 'release' => release.to_liquid } }
    -  let(:page) { { 'version' => version } }
    +  let(:release) { Jekyll::GeneratorSingleSource::Product::Release.new({ 'release' => version }) }
    +  let(:page) { { 'release' => release.to_liquid } }
       let(:environment) { { 'page' => page } }
       let(:registers) { { page: page } }
       let(:liquid_context) { Liquid::Context.new(environment, {}, registers) }
    @@ -13,7 +11,7 @@
     
         it "renders correctly for: {% inc #{tag_params} %} in context" do
           template = <<~LIQUID
    -        {% assign docs = "/docs/" | append: page.version %}
    +        {% assign docs = "/docs/" | append: page.release %}
             {% assign link = docs | append: "/networking/transparent-proxying/" %}
     
             {% if_version #{if_version} %}
    diff --git a/spec/kuma_plugins/liquid/tags/policy_yaml_spec.rb b/spec/kuma_plugins/liquid/tags/policy_yaml_spec.rb
    index e70210379..db50bb54c 100644
    --- a/spec/kuma_plugins/liquid/tags/policy_yaml_spec.rb
    +++ b/spec/kuma_plugins/liquid/tags/policy_yaml_spec.rb
    @@ -1,12 +1,11 @@
     RSpec.describe Jekyll::KumaPlugins::Liquid::Tags::PolicyYaml do
       # Set up the Jekyll site and context for testing
    -  let(:site) { Jekyll::Site.new(Jekyll.configuration({mesh_namespace: "kuma-demo"})) }
    -  let(:page) { { 'version' => '2.9.1' } }  # This sets the version key for testing
    -  let(:registers) { { :page => page, :site => site } }
    -  let(:context) { Liquid::Context.new({}, {}, registers) }
     
    -  shared_examples 'policy yaml rendering' do |input_file, golden_file, tag_options|
    +  shared_examples 'policy yaml rendering' do |input_file, golden_file, tag_options, release|
         it "renders correctly for #{input_file}" do
    +      site = Jekyll::Site.new(Jekyll.configuration({mesh_namespace: "kuma-demo"}))
    +      release = {'release' => '2.9.x', 'edition' => 'kuma'} unless release # This sets the version key for testing
    +      context = Liquid::Context.new({}, {}, { :page => {'edition' => release['edition'], 'release' => Jekyll::GeneratorSingleSource::Product::Release.new(release)}, :site => site})
           content = GoldenFileManager.load_input(input_file)
           tag_content = tag_options ? "{% policy_yaml my-tabs #{tag_options} %}" : "{% policy_yaml my-tabs %}"
           template = Liquid::Template.parse("#{tag_content}#{content}{% endpolicy_yaml %}")
    @@ -42,13 +41,26 @@
             golden_file: 'spec/fixtures/mhr-port.golden.html',
             tag_options: 'use_meshservice=true'
           },
    +      {
    +        input_file: 'spec/fixtures/mhr-port.yaml',
    +        golden_file: 'spec/fixtures/mhr-port_edition.golden.html',
    +        tag_options: 'use_meshservice=true',
    +        page: { 'release' => '2.10.x', 'edition' => 'mesh' }
    +      },
    +      {
    +        input_file: 'spec/fixtures/mhr-port.yaml',
    +        golden_file: 'spec/fixtures/mhr-port_dev.golden.html',
    +        tag_options: 'use_meshservice=true',
    +        page: { 'release' => '2.10.x', 'edition' => 'kuma', 'label' => 'dev' }
    +      },
         ]
     
         test_cases.each do |test_case|
           include_examples 'policy yaml rendering',
                            test_case[:input_file],
                            test_case[:golden_file],
    -                       test_case[:tag_options]
    +                       test_case[:tag_options],
    +                       test_case[:page]
         end
       end
     end