Skip to content
Merged
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
34 changes: 34 additions & 0 deletions .github/workflows/main-staging.yml
Original file line number Diff line number Diff line change
Expand Up @@ -65,10 +65,12 @@ jobs:
kubernetes_versions=($(find content/operate/kubernetes/ -maxdepth 1 -type d -regex ".*[0-9-]" | awk -F/ '{print $NF}'))
rs_versions=($(find content/operate/rs/ -maxdepth 1 -type d -regex ".*[0-9-]" | awk -F/ '{print $NF}'))
rdi_versions=($(find content/integrate/redis-data-integration/ -maxdepth 1 -type d -regex ".*[0-9-]" | awk -F/ '{print $NF}'))
redisvl_versions=($(find content/develop/ai/redisvl/ -maxdepth 1 -type d -regex ".*[0-9-]" | awk -F/ '{print $NF}'))

printf "%s\n" "${kubernetes_versions[@]}" > kubernetes-versions
printf "%s\n" "${rs_versions[@]}" > rs-versions
printf "%s\n" "${rdi_versions[@]}" > rdi-versions
printf "%s\n" "${redisvl_versions[@]}" > redisvl-versions

# build latest
for version in "${kubernetes_versions[@]}"; do
Expand All @@ -80,6 +82,9 @@ jobs:
for version in "${rdi_versions[@]}"; do
rm -r "content/integrate/redis-data-integration/${version}"
done
for version in "${redisvl_versions[@]}"; do
rm -r "content/develop/ai/redisvl/${version}"
done
make all

git checkout .
Expand Down Expand Up @@ -166,6 +171,33 @@ jobs:
git checkout .
done

for version in "${redisvl_versions[@]}"; do

setBaseUrl

# for each version, remove all other versions before building
versions_to_remove=($(echo "${redisvl_versions[@]}" "${version}" | tr ' ' '\n' | sort | uniq -u))
for version_to_remove in "${versions_to_remove[@]}"; do
rm -r "content/develop/ai/redisvl/${version_to_remove}"
done

# relrefs should not include version
find "content/develop/ai/redisvl/${version}" -type f | while read file; do
awk '{gsub(/\(\{\{< ?relref "\/develop\/ai\/redisvl\/'${version}'/, "({{< relref \"/develop/ai/redisvl") }1' "$file" > tmpfile && mv tmpfile "$file"
done

rsync -a --delete-after "content/develop/ai/redisvl/${version}"/ content/develop/ai/redisvl/
sed -i 's/id="versionSelectorRedisvlValue" class="version-selector-control">latest/id="versionSelectorRedisvlValue" class="version-selector-control">v'"${version}"'/' layouts/partials/docs-nav.html
sed -i 's/linkTitle: '"${version}"'/linkTitle: RedisVL/' content/develop/ai/redisvl/_index.md

# inject replace command in meta-links to make sure editURL and issuesURL point to right version
sed -i "12i \{\{ \$gh_path = replaceRE \`\^develop\/ai\/redisvl\/\` \"develop\/ai\/redisvl\/$version\/\" \$gh_path }}" layouts/partials/meta-links.html

hugo -d "redisvl-${version}"

git checkout .
done

- name: List client examples
run: ls "${{ github.workspace }}/examples"
- name: List files to be published
Expand Down Expand Up @@ -205,6 +237,8 @@ jobs:
product=$(awk 'BEGIN{FS=OFS="-"}{NF--; print}' <<< $versioned_build)
if [[ "${product}" == "redis-data-integration" ]]; then
gsutil -m rsync -r -c -j html -d "${{ github.workspace }}/${versioned_build}/integrate/${product}/" "gs://${BUCKET}/${bucket_path}/${versioned_build}/integrate/${product}"
elif [[ "${product}" == "redisvl" ]]; then
gsutil -m rsync -r -c -j html -d "${{ github.workspace }}/${versioned_build}/develop/ai/${product}/" "gs://${BUCKET}/${bucket_path}/${versioned_build}/develop/ai/${product}"
else
gsutil -m rsync -r -c -j html -d "${{ github.workspace }}/${versioned_build}/operate/${product}/" "gs://${BUCKET}/${bucket_path}/${versioned_build}/operate/${product}"
fi
Expand Down
38 changes: 38 additions & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -65,10 +65,12 @@ jobs:
kubernetes_versions=($(find content/operate/kubernetes/ -maxdepth 1 -type d -regex ".*[0-9-]" | awk -F/ '{print $NF}'))
rs_versions=($(find content/operate/rs/ -maxdepth 1 -type d -regex ".*[0-9-]" | awk -F/ '{print $NF}'))
rdi_versions=($(find content/integrate/redis-data-integration/ -maxdepth 1 -type d -regex ".*[0-9-]" | awk -F/ '{print $NF}'))
redisvl_versions=($(find content/develop/ai/redisvl/ -maxdepth 1 -type d -regex ".*[0-9-]" | awk -F/ '{print $NF}'))

printf "%s\n" "${kubernetes_versions[@]}" > kubernetes-versions
printf "%s\n" "${rs_versions[@]}" > rs-versions
printf "%s\n" "${rdi_versions[@]}" > rdi-versions
printf "%s\n" "${redisvl_versions[@]}" > redisvl-versions

# build latest
for version in "${kubernetes_versions[@]}"; do
Expand All @@ -80,6 +82,9 @@ jobs:
for version in "${rdi_versions[@]}"; do
rm -r "content/integrate/redis-data-integration/${version}"
done
for version in "${redisvl_versions[@]}"; do
rm -r "content/develop/ai/redisvl/${version}"
done
make all

git checkout .
Expand Down Expand Up @@ -166,6 +171,33 @@ jobs:
git checkout .
done

for version in "${redisvl_versions[@]}"; do

setBaseUrl

# for each version, remove all other versions before building
versions_to_remove=($(echo "${redisvl_versions[@]}" "${version}" | tr ' ' '\n' | sort | uniq -u))
for version_to_remove in "${versions_to_remove[@]}"; do
rm -r "content/develop/ai/redisvl/${version_to_remove}"
done

# relrefs should not include version
find "content/develop/ai/redisvl/${version}" -type f | while read file; do
awk '{gsub(/\(\{\{< ?relref "\/develop\/ai\/redisvl\/'${version}'/, "({{< relref \"/develop/ai/redisvl") }1' "$file" > tmpfile && mv tmpfile "$file"
done

rsync -a --delete-after "content/develop/ai/redisvl/${version}"/ content/develop/ai/redisvl/
sed -i 's/id="versionSelectorRedisvlValue" class="version-selector-control">latest/id="versionSelectorRedisvlValue" class="version-selector-control">v'"${version}"'/' layouts/partials/docs-nav.html
sed -i 's/linkTitle: '"${version}"'/linkTitle: RedisVL/' content/develop/ai/redisvl/_index.md

# inject replace command in meta-links to make sure editURL and issuesURL point to right version
sed -i "12i \{\{ \$gh_path = replaceRE \`\^develop\/ai\/redisvl\/\` \"develop\/ai\/redisvl\/$version\/\" \$gh_path }}" layouts/partials/meta-links.html

hugo -d "redisvl-${version}"

git checkout .
done

- name: List client examples
run: ls "${{ github.workspace }}/examples"
- name: List files to be published
Expand Down Expand Up @@ -211,6 +243,9 @@ jobs:
if [[ "${product}" == "redis-data-integration" ]]; then
gsutil -m rsync -r -c -j html -d "${{ github.workspace }}/${versioned_build}/integrate/${product}" "gs://${BUCKET}/${versioned_build}/integrate/${product}"
gsutil -m rsync -r -c -j html -d "${{ github.workspace }}/${versioned_build}/integrate/${product}/${version}" "gs://${BUCKET}/docs/$bucket_path/integrate/${product}/${version}"
elif [[ "${product}" == "redisvl" ]]; then
gsutil -m rsync -r -c -j html -d "${{ github.workspace }}/${versioned_build}/develop/ai/${product}" "gs://${BUCKET}/${versioned_build}/develop/ai/${product}"
gsutil -m rsync -r -c -j html -d "${{ github.workspace }}/${versioned_build}/develop/ai/${product}/${version}" "gs://${BUCKET}/docs/$bucket_path/develop/ai/${product}/${version}"
else
gsutil -m rsync -r -c -j html -d "${{ github.workspace }}/${versioned_build}/operate/${product}" "gs://${BUCKET}/${versioned_build}/operate/${product}"
gsutil -m rsync -r -c -j html -d "${{ github.workspace }}/${versioned_build}/operate/${product}/${version}" "gs://${BUCKET}/docs/$bucket_path/operate/${product}/${version}"
Expand All @@ -235,6 +270,9 @@ jobs:
if [[ "${product}" == "redis-data-integration" ]]; then
gsutil -m rsync -r -c -j html -d "${{ github.workspace }}/${versioned_build}/integrate/${product}" "gs://${BUCKET}/${bucket_path}/${versioned_build}/integrate/${product}"
gsutil -m rsync -r -c -j html -d "${{ github.workspace }}/${versioned_build}/integrate/${product}/${version}" "gs://${BUCKET}/docs/${bucket_path}/integrate/${product}/${version}"
elif [[ "${product}" == "redisvl" ]]; then
gsutil -m rsync -r -c -j html -d "${{ github.workspace }}/${versioned_build}/develop/ai/${product}" "gs://${BUCKET}/${bucket_path}/${versioned_build}/develop/ai/${product}"
gsutil -m rsync -r -c -j html -d "${{ github.workspace }}/${versioned_build}/develop/ai/${product}/${version}" "gs://${BUCKET}/docs/${bucket_path}/develop/ai/${product}/${version}"
else
gsutil -m rsync -r -c -j html -d "${{ github.workspace }}/${versioned_build}/operate/${product}" "gs://${BUCKET}/${bucket_path}/${versioned_build}/operate/${product}"
gsutil -m rsync -r -c -j html -d "${{ github.workspace }}/${versioned_build}/operate/${product}/${version}" "gs://${BUCKET}/docs/${bucket_path}/operate/${product}/${version}"
Expand Down
85 changes: 65 additions & 20 deletions .github/workflows/redisvl_docs_sync.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,30 @@ on:
workflow_dispatch: # or run on manual trigger

jobs:
define-version-matrix:
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
steps:
- id: set-matrix
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
OLDEST_SUPPORTED_VERSION="0.6.0"
versions=$(gh release -R redis/redis-vl-python list --json name,isLatest \
| jq -r '.[] | [.name, .isLatest] | @tsv' \
| sed "/${OLDEST_SUPPORTED_VERSION}/q" \
| jq -Rnc '{include: [inputs | split("\t") | {version: .[0], isLatest: .[1]}]}')

echo "${versions}"
echo "matrix=${versions}" >> "$GITHUB_OUTPUT"

redisvl_docs_sync:
runs-on: ubuntu-latest
needs: define-version-matrix
strategy:
matrix: ${{ fromJSON(needs['define-version-matrix'].outputs.matrix) }}
fail-fast: false
permissions:
contents: write
pull-requests: write
Expand All @@ -30,20 +52,25 @@ jobs:
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
pushd redis-vl-python
version="${{ matrix.version }}"
isLatest="${{ matrix.isLatest }}"

# Get latest release
latest_release=$(gh release -R redis/redis-vl-python list --json name,isLatest --jq '.[] | select(.isLatest)|.name')
git checkout "tags/${latest_release}" || git checkout "tags/v${latest_release}"
pushd redis-vl-python
git checkout "tags/${version}" || git checkout "tags/v${version}"
pip3 install -e .

popd
sphinx-build -M markdown ./redis-vl-python/docs ./build

echo "release=${latest_release}" >> "$GITHUB_OUTPUT"

if [ ${isLatest} = true ]; then
sphinx-build -M markdown ./redis-vl-python/docs ./build-latest
else
sphinx-build -M markdown ./redis-vl-python/docs ./build-${version}
fi

- name: 'Format markdown files for hugo compatibility'
run: |
version="${{ matrix.version }}"
isLatest="${{ matrix.isLatest }}"

#!/bin/bash
mkdir -p redis_vl_hugo/user_guide/
mkdir redis_vl_hugo/overview/
Expand All @@ -65,13 +92,22 @@ jobs:
alias=$(echo ${src} | sed -E 's|./redis_vl_hugo/|/integrate/redisvl/| ; s|\.md$|| ; s|\/_index$||')

# Inject frontmatter in destination file
if [ ${isLatest} = true ]; then
cat >_tmp <<EOL
---
linkTitle: ${linkTitle}
title: ${title}
aliases:
- ${alias}
EOL
else
cat >_tmp <<EOL
---
linkTitle: ${linkTitle}
title: ${title}
EOL
fi


# Inject weight property for index pages to preserve order
case "${title}" in
Expand Down Expand Up @@ -110,12 +146,13 @@ jobs:
}

# Convert jupyter notebooks to markdown
jupyter nbconvert --to markdown build/jupyter_execute/user_guide/*.ipynb --output-dir redis_vl_hugo/user_guide/ 2>/dev/null
jupyter nbconvert --to markdown build/jupyter_execute/overview/cli.ipynb --output-dir redis_vl_hugo/overview/ 2>/dev/null
build_folder=$(echo build-*)
jupyter nbconvert --to markdown ${build_folder}/jupyter_execute/user_guide/*.ipynb --output-dir redis_vl_hugo/user_guide/ 2>/dev/null
jupyter nbconvert --to markdown ${build_folder}/jupyter_execute/overview/cli.ipynb --output-dir redis_vl_hugo/overview/ 2>/dev/null

# Prepare markdown files
rsync -a ./build/markdown/api/ ./redis_vl_hugo/api/ --exclude=index.md
cp ./build/markdown/overview/installation.md ./redis_vl_hugo/overview/installation.md
rsync -a ./${build_folder}/markdown/api/ ./redis_vl_hugo/api/ --exclude=index.md
cp ./${build_folder}/markdown/overview/installation.md ./redis_vl_hugo/overview/installation.md

# Format markdown files
shopt -s globstar
Expand Down Expand Up @@ -211,9 +248,9 @@ jobs:
done

# Format _index.md pages
cp ./build/markdown/api/index.md ./redis_vl_hugo/api/_index.md
cp ./build/markdown/user_guide/index.md ./redis_vl_hugo/user_guide/_index.md
cp ./build/markdown/overview/index.md ./redis_vl_hugo/overview/_index.md
cp ./${build_folder}/markdown/api/index.md ./redis_vl_hugo/api/_index.md
cp ./${build_folder}/markdown/user_guide/index.md ./redis_vl_hugo/user_guide/_index.md
cp ./${build_folder}/markdown/overview/index.md ./redis_vl_hugo/overview/_index.md

index_markdown_pages=(
./redis_vl_hugo/api/_index.md
Expand All @@ -237,13 +274,19 @@ jobs:
fi
done

cp -r redis_vl_hugo/* content/develop/ai/redisvl/
if [ ${isLatest} = true ]; then
cp -r redis_vl_hugo/* content/develop/ai/redisvl/
else
mkdir content/develop/ai/redisvl/${version}/
cp -r redis_vl_hugo/* content/develop/ai/redisvl/${version}/
python3 build/version_archiver.py redisvl ${version} --skip-archive
fi

- name: 'Create pull request if necessary'
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
release="${{ steps.sphinx.outputs.release }}"
release="${{ matrix.version }}"
branch="redisvl_docs_sync_${release}"
redisvl_change=false

Expand All @@ -254,7 +297,7 @@ jobs:
if [ "$?" -eq 0 ]; then
set -e
# if it does, create local branch off existing remote branch
git checkout -b "${branch}" "origin/${branch}"
git checkout -f -b "${branch}" "origin/${branch}"
git branch --set-upstream-to="origin/${branch}" "${branch}"
git pull
else
Expand All @@ -263,9 +306,11 @@ jobs:
git checkout -b "${branch}"
fi

redisvl_is_different=$(git diff content/develop/ai/redisvl/)
set +e
latest_redisvl_release_is_different=$(git diff content/develop/ai/redisvl/)
new_release=$(git ls-files --others --directory | grep content/develop/ai/redisvl/${release})

if [[ ! -z $redisvl_is_different ]]; then
if [[ -n "$latest_redisvl_release_is_different" || -n "$new_release" ]]; then
redisvl_change=true

git add "content/develop/ai/redisvl/"
Expand Down
45 changes: 45 additions & 0 deletions layouts/partials/docs-nav.html
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,51 @@
{{- end }}
</div>
</div>
{{else if (eq (.Params.linkTitle) "RedisVL")}}
<div id="versionSelectorRedisvl" class="menu__version-selector version-selector-control" onclick="_openVersionSelector('Redisvl')" style="display: none;">
<button class="menu__version-selector-btn version-selector-control">
<span id="versionSelectorRedisvlValue" class="version-selector-control">latest</span>
<span class="menu__version-selector__toggler opener version-selector-control">&#x25BC;</span>
<span class="menu__version-selector__toggler closer version-selector-control">&#x25B2;</span>
</button>
{{- $vers := slice -}}
{{- $lines := slice -}}

{{ if fileExists "redisvl-versions" }}
{{- $txt := readFile "redisvl-versions" -}}
{{- $lines = split $txt "\n" -}}

{{- range $lines }}
{{- $v := strings.TrimSpace . -}}
{{- if and (ne $v "") (findRE `^\d+\.\d+\.\d+$` $v) -}}
{{- $p := split $v "." -}}
{{- $key := printf "%03d.%03d.%03d" (int (index $p 0)) (int (index $p 1)) (int (index $p 2)) -}}
{{- $vers = $vers | append (dict "v" $v "key" $key) -}}
{{- end -}}
{{- end -}}
{{ else }}
{{- $entries := readDir "content/develop/ai/redisvl" -}}
{{- range $e := $entries -}}
{{- if and $e.IsDir (findRE `^\d+\.\d+\.\d+$` $e.Name) -}}
{{- $p := split $e.Name "." -}}
{{- $maj := int (index $p 0) -}}
{{- $min := int (index $p 1) -}}
{{- $pat := int (index $p 2) -}}
{{- $key := printf "%03d.%03d.%03d" $maj $min $pat -}} {{/* for sorting */}}
{{- $vers = $vers | append (dict "v" $e.Name "key" $key) -}}
{{- end -}}
{{- end -}}
{{ end}}

{{- $vers = sort $vers "key" "desc" -}}

<div id="versionDropdownRedisvl" class="menu__version-selector__list version-selector-control">
<a href="{{ absURL "develop/ai/redisvl/" }}" id="redisvl-version-select-latest" onclick="_setSelectedVersion('redisvl', 'latest')">latest</a>
{{- range $vers }}
<a href="{{ (absURL "develop/ai/redisvl/{{ .v }}/") }}" id="redisvl-version-select-{{ .v }}" onclick="_setSelectedVersion('redisvl', 'v{{ .v }}')">v{{ .v }}</a>
{{- end }}
</div>
</div>
</li>

{{end}}
Expand Down
5 changes: 5 additions & 0 deletions layouts/partials/scripts.html
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@
var currentUrl = window.location.href
const regex_kubernetes = new RegExp('/docs/(latest|staging\/.+)/operate/kubernetes/.*')
const regex_rs = new RegExp('/docs/(latest|staging\/.+)/operate/rs/.*')
const regex_redisvl = new RegExp('/docs/(latest|staging\/.+)/develop/ai/redisvl/.*')

if (regex_kubernetes.test(currentUrl)){
// unhide kubernetes version selector
Expand All @@ -103,6 +104,10 @@
// unhide rs version selector
document.getElementById( 'versionSelectorRs' ).style.display = '';
}
else if (regex_redisvl.test(currentUrl)) {
// unhide redisvl version selector
document.getElementById( 'versionSelectorRedisvl' ).style.display = '';
}
}

function _setSelectedVersion(product, ver) {
Expand Down