Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 9 additions & 9 deletions .github/workflows/zola-deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,37 +19,37 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4
with:
ref: ${{ github.event_name != 'pull_request' && 'main' || '' }}
path: website

- name: Checkout valkey-doc
uses: actions/checkout@v4
uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4
with:
repository: valkey-io/valkey-doc
path: valkey-doc

- name: Checkout valkey
uses: actions/checkout@v4
uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4
with:
repository: valkey-io/valkey
path: valkey

- name: Checkout valkey-bloom
uses: actions/checkout@v4
uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4
with:
repository: valkey-io/valkey-bloom
path: valkey-bloom

- name: Checkout valkey-search
uses: actions/checkout@v4
uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4
with:
repository: valkey-io/valkey-search
path: valkey-search

- name: Checkout valkey-json
uses: actions/checkout@v4
uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4
with:
repository: valkey-io/valkey-json
path: valkey-json
Expand All @@ -64,15 +64,15 @@ jobs:
../valkey-json/src/commands ../valkey-search/src/commands

- name: Build only
uses: shalzz/zola-deploy-action@v0.22.0
uses: shalzz/zola-deploy-action@1be083648a1db2853ce4970e381740c0e2fd06de # v0.23.6
env:
BUILD_DIR: website
BUILD_ONLY: true
BUILD_THEMES: false

- name: Upload artifact
if: github.event_name != 'pull_request'
uses: actions/upload-pages-artifact@v3
uses: actions/upload-pages-artifact@56afc609e74202658d3ffba0e8f6dda462b719fa # v3
with:
path: ./website/public

Expand All @@ -86,4 +86,4 @@ jobs:
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
uses: actions/deploy-pages@d6db90164ac5ed86f2b6aed7e0febac5b3c0c03e # v4
168 changes: 168 additions & 0 deletions .github/workflows/zola-preview.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,168 @@
name: Preview website

# Builds a full preview of the site (including the command reference, topics,
# and clients pages assembled from the sibling repos) for any pull request, and
# makes it available for reviewers to test. Production deploys are handled
# separately by zola-deploy.yml; this workflow never touches the production
# GitHub Pages deployment.
#
# Two ways to consume a preview are provided:
#
# 1. Downloadable artifact (always on, no setup): the built `public/` directory
# is uploaded as a workflow artifact. Download it from the run's Summary page
# and open index.html, or serve the folder with any static server. This uses
# the production base_url, so absolute links point at valkey.io; it is best
# for eyeballing pages and running the search indexer locally.
#
# 2. Hosted preview URL (opt-in): if the PREVIEW_REPOSITORY and PREVIEW_TOKEN
# secrets are set, the build is pushed to a SEPARATE preview repository whose
# GitHub Pages serves it at a per-branch subpath. A repository can serve only
# one GitHub Pages site, and this repo's Pages is already the production site,
# so a hosted preview must live in a different repo. The build then uses that
# repo's Pages origin as its base_url so internal links resolve.

on:
pull_request:
branches: ["main"]
workflow_dispatch:
inputs:
ref:
description: "Branch or ref to build a preview for"
required: false

permissions:
contents: read

concurrency:
group: preview-${{ github.event.pull_request.head.ref || github.ref_name }}
cancel-in-progress: true

jobs:
build-preview:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4
with:
ref: ${{ github.event.inputs.ref || github.event.pull_request.head.sha || github.ref }}
path: website

- name: Checkout valkey-doc
uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4
with:
repository: valkey-io/valkey-doc
path: valkey-doc

- name: Checkout valkey
uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4
with:
repository: valkey-io/valkey
path: valkey

- name: Checkout valkey-bloom
uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4
with:
repository: valkey-io/valkey-bloom
path: valkey-bloom

- name: Checkout valkey-search
uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4
with:
repository: valkey-io/valkey-search
path: valkey-search

- name: Checkout valkey-json
uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4
with:
repository: valkey-io/valkey-json
path: valkey-json

- name: Init commands, topics and clients
run: |
cd website
./build/init-topics-and-clients.sh ../valkey-doc/topics \
../valkey-doc/clients
./build/init-commands.sh ../valkey-doc/commands \
../valkey/src/commands ../valkey-bloom/src/commands \
../valkey-json/src/commands ../valkey-search/src/commands

- name: Compute preview path and base URL
id: slug
env:
# Pass the ref through the environment, never interpolate it directly
# into the shell script body: a branch name is attacker-controlled and
# inline ${{ }} expansion would allow shell injection.
PREVIEW_REF: ${{ github.event.pull_request.head.ref || github.event.inputs.ref || github.ref_name }}
PREVIEW_REPOSITORY: ${{ secrets.PREVIEW_REPOSITORY }}
PREVIEW_TOKEN: ${{ secrets.PREVIEW_TOKEN }}
run: |
RAW="$PREVIEW_REF"
# Build a readable but collision-resistant, always-nonempty path:
# a sanitized name plus a short hash of the raw ref. This keeps
# foo/bar and foo-bar distinct and never yields an empty path (which
# would publish at the repo root and, with keep_files, clobber peers).
NAME="$(printf '%s' "$RAW" | tr '/' '-' | tr -cd '[:alnum:]._-')"
HASH="$(printf '%s' "$RAW" | shasum -a 256 | cut -c1-8)"
SAFE="${NAME:-preview}-${HASH}"
echo "path=$SAFE" >> "$GITHUB_OUTPUT"
# Host a preview only when BOTH secrets are present. If only one is set,
# fall back to artifact-only so the run completes instead of invoking
# the publish step without a usable credential and failing.
if [ -n "$PREVIEW_REPOSITORY" ] && [ -n "$PREVIEW_TOKEN" ]; then
PV_OWNER="${PREVIEW_REPOSITORY%%/*}"
PV_REPO="${PREVIEW_REPOSITORY#*/}"
echo "hosted=true" >> "$GITHUB_OUTPUT"
echo "base_url=https://${PV_OWNER}.github.io/${PV_REPO}/${SAFE}/" >> "$GITHUB_OUTPUT"
else
echo "hosted=false" >> "$GITHUB_OUTPUT"
echo "base_url=" >> "$GITHUB_OUTPUT"
fi

- name: Build (default base URL, for the downloadable artifact)
if: steps.slug.outputs.hosted != 'true'
uses: shalzz/zola-deploy-action@1be083648a1db2853ce4970e381740c0e2fd06de # v0.23.6
env:
BUILD_DIR: website
BUILD_ONLY: true
BUILD_THEMES: false

- name: Build (preview base URL, for the hosted preview)
if: steps.slug.outputs.hosted == 'true'
uses: shalzz/zola-deploy-action@1be083648a1db2853ce4970e381740c0e2fd06de # v0.23.6
env:
BUILD_DIR: website
BUILD_ONLY: true
BUILD_THEMES: false
BUILD_FLAGS: --base-url ${{ steps.slug.outputs.base_url }}

- name: Upload preview artifact
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
with:
name: site-preview-${{ steps.slug.outputs.path }}
path: ./website/public
retention-days: 14

- name: Publish hosted preview
if: steps.slug.outputs.hosted == 'true'
uses: peaceiris/actions-gh-pages@84c30a85c19949d7eee79c4ff27748b70285e453 # v4
with:
personal_token: ${{ secrets.PREVIEW_TOKEN }}
external_repository: ${{ secrets.PREVIEW_REPOSITORY }}
publish_branch: gh-pages
publish_dir: ./website/public
destination_dir: ${{ steps.slug.outputs.path }}
keep_files: true
commit_message: "preview: ${{ steps.slug.outputs.path }} (${{ github.sha }})"

- name: Summarize
run: |
echo "### Preview build ready" >> "$GITHUB_STEP_SUMMARY"
echo "" >> "$GITHUB_STEP_SUMMARY"
echo "Downloadable artifact: **site-preview-${{ steps.slug.outputs.path }}** (see the Artifacts section of this run). Unzip and open index.html, or serve the folder with any static server." >> "$GITHUB_STEP_SUMMARY"
if [ "${{ steps.slug.outputs.hosted }}" = "true" ]; then
echo "" >> "$GITHUB_STEP_SUMMARY"
echo "Hosted preview URL: ${{ steps.slug.outputs.base_url }}" >> "$GITHUB_STEP_SUMMARY"
else
echo "" >> "$GITHUB_STEP_SUMMARY"
echo "_Hosted preview URL not configured. Set the PREVIEW_REPOSITORY (owner/repo of a separate Pages repo) and PREVIEW_TOKEN secrets to publish a hosted preview URL._" >> "$GITHUB_STEP_SUMMARY"
fi
9 changes: 8 additions & 1 deletion CONTRIBUTING-BLOG-POST.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,8 @@ Unless you have specific authority (and you probably don’t!), avoid speaking f

Reviewers use these as the basis for suggestions, so knowing them up front saves a round trip.
This document follows them, so read its source as an example.
[`content/blog/example-post.md.example`](content/blog/example-post.md.example) is a short post that applies every rule below, with frontmatter, a tagged code block, and an image with alt text.
[`content/blog/example-post.md.example`](content/blog/example-post.md.example) is a short post that applies the core rules below, with frontmatter, a tagged code block, and an image with alt text.
It does not show the situational rules (14 and 15), which apply only to posts that embed a video or quote template-like syntax.
Copy it as a starting point.

1. Put one sentence per line in the markdown source.
Expand Down Expand Up @@ -107,6 +108,12 @@ The two cases that come up most in Valkey posts:
If you find you have nothing to write in the body, the image is not carrying information worth showing.
2. Use empty alt text (`![]`) for a purely decorative image, and for one whose content the adjacent text already states in full.
13. Expand an acronym on first use with the acronym in parentheses.
14. Embed a YouTube video with the `youtube` component, not a raw `<iframe>`.
Write `{{< youtube id="VIDEO_ID" />}}` on its own line, where `VIDEO_ID` is the part after `v=` in the video URL.
Optional attributes are `class`, `playlist`, and `autoplay`, for example `{{< youtube id="VIDEO_ID" class="my-class" />}}`.
Comment thread
coderabbitai[bot] marked this conversation as resolved.
15. Escape any text that looks like Zola template syntax so the build does not try to evaluate it.
Zola renders each post through its template engine, so a literal `{{ ... }}` or `{% ... %}` in your prose or in a code block (for example a Docker `--format '{{.Names}}'` string, or a Go, Vue, or Handlebars snippet) is read as a template expression and breaks the build.
Wrap the literal text in a `{% raw %}` / `{% endraw %}` pair so it is emitted verbatim, like `{% raw %}{{.Names}}{% endraw %}`.

## Step 3: Write about yourself

Expand Down
1 change: 1 addition & 0 deletions content/authors/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,5 @@
title = "Authors"
template = "authors.html"
page_template = "author-page.html"
sort_by = "title"
+++
6 changes: 4 additions & 2 deletions content/blog/2024-11-21-testing-the-limits/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -209,10 +209,12 @@ volumes:
data2:
driver: local
```
Run `docker compose -f valkey-cluster.yaml up -d` to start the cluster. There is one more step to get the cluster running. Find the name of one of your nodes with `docker ps --format '{{.Names}}'`.
Run `docker compose -f valkey-cluster.yaml up -d` to start the cluster.
There is one more step to get the cluster running.
Find the name of one of your nodes with `docker ps --format '{% raw %}{{.Names}}{% endraw %}'`.

```bash
docker ps --format '{{.Names}}
docker ps --format '{% raw %}{{.Names}}{% endraw %}
kvtest-valkey-node-1-1
kvtest-valkey-node-3-1
kvtest-valkey-node-2-1
Expand Down
2 changes: 1 addition & 1 deletion content/blog/2026-07-09-percona-spotlight/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ blog_type = ["Community Highlight"]
.percona-spotlight-video { justify-content: center; display: flex; }
.percona-spotlight-video iframe { aspect-ratio: 16 / 9; width: 100% !important; }
</style>
{{ youtube(id="cl3kwjG-Yzs", class="percona-spotlight-video") }}
{{< youtube id="cl3kwjG-Yzs" class="percona-spotlight-video" />}}

Standard industry software consistently grows heavier, consuming more RAM with every minor update. Valkey reverses this trend entirely: upcoming engineering milestones drop the software's structural footprint, meaning a simple binary upgrade immediately hands back physical memory to the underlying infrastructure. Percona’s [General Manager of the Redis and Valkey Ecosystem, Kyle Davis](https://www.percona.com/press/percona-appoints-kyle-davis-as-general-manager-of-redis-valkey-ecosystem/), sat down to detail how the open source community drives these computational efficiencies, eliminates translation bottlenecks, and enforces database-level multi-tenancy.
Comment thread
pnbrown marked this conversation as resolved.

Expand Down
8 changes: 4 additions & 4 deletions content/blog/whats-new-june-2024.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,23 +25,23 @@ Abhishek Gupta gives a [tutorial on how to get started with Valkey on JavaScript

In less than 10 minutes Shantanu shows you how to install Valkey from source on Ubuntu.

{{ youtube(id="T-tH1GC0omo") }}
{{< youtube id="T-tH1GC0omo" />}}

Percona published a couple of detailed how-to posts: Matthew Boehm detailed [setting up Valkey replication](https://www.percona.com/blog/valkey-redis-setting-up-replication/) and Anil Joshi [covers Valkey sharding](https://www.percona.com/blog/valkey-redis-sharding-using-the-native-clustering-feature/).

## Interviews and Podcasts

Swapnil from [TFIR interviews Ann Schlemmer from Percona](https://tfir.io/why-open-source-still-leads-the-way-despite-license-changes-ann-schlemmer/) about why open source still leads the way despite license changes.

{{ youtube(id="D2G7kfAO37U") }}
{{< youtube id="D2G7kfAO37U" />}}

TSC member [Madelyn Olson was interviewed by Roberto Zicari on ODBMS](https://www.odbms.org/2024/06/on-the-open-source-valkey-project-qa-with-madelyn-olson/) and chatted with [Corey Quinn about Valkey on the Screaming in the Cloud podcast](https://www.lastweekinaws.com/podcast/screaming-in-the-cloud/steering-through-open-source-waters-with-madelyn-olson/).

{{ youtube(id="Pl-udfEPwtk") }}
{{< youtube id="Pl-udfEPwtk" />}}

Robert and Courtney from the WooCommerce community chat about Valkey on the [Do the Woo Podcast](https://www.youtube.com/watch?v=E1hX1GZij_U).

{{ youtube(id="E1hX1GZij_U") }}
{{< youtube id="E1hX1GZij_U" />}}

## Want to feature your tutorial/article/meetup/video?

Expand Down
2 changes: 1 addition & 1 deletion content/download/releases/v7-2-10.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ extra:
- "7.2.10-bookworm"
- "7.2.10-alpine"
- "7.2.10-alpine3.22"
packages:
packages: []

artifacts:
- distro: jammy
Expand Down
2 changes: 1 addition & 1 deletion content/download/releases/v7-2-11.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ extra:
- "7.2.11-trixie"
- "7.2.11-alpine"
- "7.2.11-alpine3.22"
packages:
packages: []

artifacts:
- distro: jammy
Expand Down
2 changes: 1 addition & 1 deletion content/download/releases/v7-2-12.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ extra:
- "7.2.12-trixie"
- "7.2.12-alpine"
- "7.2.12-alpine3.23"
packages:
packages: []

artifacts:
- distro: jammy
Expand Down
2 changes: 1 addition & 1 deletion content/download/releases/v7-2-13.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ extra:
- "7.2.13-trixie"
- "7.2.13-alpine"
- "7.2.13-alpine3.23"
packages:
packages: []

artifacts:
- distro: jammy
Expand Down
2 changes: 1 addition & 1 deletion content/download/releases/v7-2-14.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ extra:
- "7.2.14-trixie"
- "7.2.14-alpine"
- "7.2.14-alpine3.24"
packages:
packages: []

artifacts:
- distro: jammy
Expand Down
2 changes: 1 addition & 1 deletion content/download/releases/v7-2-8.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ extra:
- "7.2.8-bookworm"
- "7.2.8-alpine"
- "7.2.8-alpine3.21"
packages:
packages: []

artifacts:
- distro: focal
Expand Down
2 changes: 1 addition & 1 deletion content/download/releases/v7-2-9.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ extra:
- "7.2.9-bookworm"
- "7.2.9-alpine"
- "7.2.9-alpine3.21"
packages:
packages: []

artifacts:
- distro: jammy
Expand Down
2 changes: 1 addition & 1 deletion content/download/releases/v8-0-0.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ extra:
- "8.0.0-bookworm"
- "8.0.0-alpine"
- "8.0.0-alpine3.20"
packages:
packages: []

artifacts:
- distro: bionic
Expand Down
2 changes: 1 addition & 1 deletion content/download/releases/v8-0-1.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ extra:
- "8.0.1-bookworm"
- "8.0.1-alpine"
- "8.0.1-alpine3.20"
packages:
packages: []

artifacts:
- distro: bionic
Expand Down
Loading
Loading