jekyll: enable sitemap and local search for dev environment

Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
This commit is contained in:
CrazyMax 2022-07-28 11:33:53 +02:00
parent 328b9fc265
commit 614c4a7000
No known key found for this signature in database
GPG Key ID: 3248E46B6BB8C7F7
7 changed files with 44 additions and 38 deletions

View File

@ -18,17 +18,20 @@ jobs:
JEKYLL_ENV=development
DOCS_AWS_REGION=us-east-1
if [ "${{ github.ref }}" = "refs/heads/master" ]; then
DOCS_URL="https://docs-stage.docker.com"
DOCS_S3_BUCKET="docs.docker.com-stage-us-east-1"
DOCS_S3_CONFIG="_website-config-docs-stage.json"
DOCS_LAMBDA_FUNCTION_CACHE="arn:aws:lambda:us-east-1:710015040892:function:docs-stage-cache-invalidator"
DOCS_SLACK_MSG="Successfully promoted docs-stage from master. https://docs-stage.docker.com/"
elif [ "${{ github.ref }}" = "refs/heads/published" ]; then
JEKYLL_ENV=production
DOCS_URL="https://docs.docker.com"
DOCS_S3_BUCKET="docs.docker.com-us-east-1"
DOCS_S3_CONFIG="_website-config-docs.json"
DOCS_LAMBDA_FUNCTION_CACHE="arn:aws:lambda:us-east-1:710015040892:function:docs-cache-invalidator"
DOCS_SLACK_MSG="Successfully published docs. https://docs.docker.com/"
elif [ "${{ github.ref }}" = "refs/heads/lab" ]; then
DOCS_URL="https://docs-lab.docker.com"
DOCS_S3_BUCKET=""
DOCS_LAMBDA_FUNCTION_CACHE=""
DOCS_S3_CONFIG="_website-config-docs-lab.json"
@ -37,6 +40,7 @@ jobs:
exit 1
fi
echo "JEKYLL_ENV=$JEKYLL_ENV" >> $GITHUB_ENV
echo "DOCS_URL=$DOCS_URL" >> $GITHUB_ENV
echo "DOCS_AWS_REGION=$DOCS_AWS_REGION" >> $GITHUB_ENV
echo "DOCS_S3_BUCKET=$DOCS_S3_BUCKET" >> $GITHUB_ENV
echo "DOCS_S3_CONFIG=$DOCS_S3_CONFIG" >> $GITHUB_ENV

View File

@ -10,7 +10,7 @@ ARG RUBY_VERSION=2.7.6
ARG BUNDLER_VERSION=2.3.13
ARG JEKYLL_ENV=development
ARG DOMAIN=docs.docker.com
ARG DOCS_URL=http://localhost:4000
# Base stage for building
FROM ruby:${RUBY_VERSION}-alpine AS base
@ -44,27 +44,18 @@ COPY --from=vendored /out /
# After building with jekyll, fix up some links
FROM gem AS generate
ARG JEKYLL_ENV
ARG DOMAIN
ARG DOCS_URL
ENV TARGET=/out
RUN --mount=type=bind,target=.,rw \
--mount=type=cache,target=/src/.jekyll-cache <<EOT
set -eu
if [ "${JEKYLL_ENV}" = "production" ]; then
(
set -x
bundle exec jekyll build --profile -d ${TARGET} --config _config.yml,_config_production.yml
sed -i "s#<loc>/#<loc>https://${DOMAIN}/#" "${TARGET}/sitemap.xml"
)
else
(
set -x
bundle exec jekyll build --trace --profile -d ${TARGET}
mkdir -p ${TARGET}/js
echo '[]' > ${TARGET}/js/metadata.json
)
fi
CONFIG_FILES=_config.yml$([ "$JEKYLL_ENV" = "production" ] && echo ",_config_production.yml" || true)
(
set -x
bundle exec jekyll build --profile -d ${TARGET} --config ${CONFIG_FILES}
)
find ${TARGET} -type f -name '*.html' | while read i; do
sed -i "s#\(<a[^>]* href=\"\)https://${DOMAIN}/#\1/#g" "$i"
sed -i "s#\(<a[^>]* href=\"\)${DOCS_URL}/#\1/#g" "$i"
done
EOT

View File

@ -30,7 +30,6 @@ exclude:
- datacenter
- docker-bake.hcl
- ee
- js/metadata.json
- LICENSE
- Makefile
- README.md
@ -67,12 +66,15 @@ compose_switch_version: "1.0.4"
# which we show a badge (currently: API v1.40, or "Docker 19.03").
min_api_threshold: 1.40
# Enable search autocompletion (requires metadata.json to be generated)
local_search: true
# List of plugins to enable for local development builds. Mostly the same as
# for production, but without the "jekyll-sitemap" plugin, which is not needed
# for previewing, and excluding saves some time to build
# for production.
plugins:
- jekyll-redirect-from
- jekyll-relative-links
- jekyll-sitemap
# Assets
#
@ -87,10 +89,7 @@ sass:
# Set default options / metadata for some paths.
#
# Setting options here prevents having to repeat the same option in front-matter
# on every page. Avoid using wildcards, such as "path: engine/api/v1.*", as
# limitations in Jekyll cause those to introduce a _severe_ impact on build-time,
# affecting generation of (e.g.) sitemap.xml and metadata.json, resulting in the
# total build to take 60 seconds longer to build (!).
# on every page.
defaults:
# Default one for development builds (local and PR previews)
# sitemap is disabled here but not for production in _config_production.yml
@ -99,7 +98,6 @@ defaults:
type: "pages"
values:
layout: docs
sitemap: false
toc_min: 2
toc_max: 4

View File

@ -17,20 +17,12 @@ exclude:
google_analytics: GTM-WL2QLG5
polldaddy_id: 8453675
# Enable search autocompletion (requires metadata.json to be generated)
local_search: true
plugins:
- jekyll-redirect-from
- jekyll-relative-links
- jekyll-sitemap
# Assets
#
# For production/deploy, we build css with the "compressed" format, to produce
# smaller files.
sass:
style: compressed
style: compressed
collections:
samples:
@ -39,10 +31,7 @@ collections:
# Set default options / metadata for some paths.
#
# Setting options here prevents having to repeat the same option in front-matter
# on every page. Avoid using wildcards, such as "path: engine/api/v1.*", as
# limitations in Jekyll cause those to introduce a _severe_ impact on build-time,
# affecting generation of (e.g.) sitemap.xml and metadata.json, resulting in the
# total build to take 60 seconds longer to build (!).
# on every page.
#
# The list below is used for *production* deploys, and overrides the one defined
# in "_config.yml", which is used for local builds and pull-request previews.

View File

@ -0,0 +1,19 @@
Jekyll::Hooks.register :site, :post_write do |site|
beginning_time = Time.now
Jekyll.logger.info "Starting plugin update_sitemap.rb..."
sitemap_path = File.join(site.dest, 'sitemap.xml')
# DEPLOY_URL is from Netlify for preview of sitemap on PR
# https://docs.netlify.com/configure-builds/environment-variables/#deploy-urls-and-metadata
docs_url = ENV['DEPLOY_URL'] || ENV['DOCS_URL'] || 'http://localhost:4000'
if File.exist?(sitemap_path)
sitemap_file = File.read(sitemap_path)
replace = sitemap_file.gsub!("<loc>/", "<loc>#{docs_url}/")
Jekyll.logger.info " Replacing '<loc>/' with '<loc>#{docs_url}/' in #{sitemap_path}"
File.open(sitemap_path, "w") { |file| file.puts replace }
end
end_time = Time.now
Jekyll.logger.info "done in #{(end_time - beginning_time)} seconds"
end

View File

@ -1,6 +1,9 @@
variable "JEKYLL_ENV" {
default = "development"
}
variable "DOCS_URL" {
default = "http://localhost:4000"
}
variable "DOCS_SITE_DIR" {
default = "_site"
}
@ -8,6 +11,7 @@ variable "DOCS_SITE_DIR" {
target "_common" {
args = {
JEKYLL_ENV = JEKYLL_ENV
DOCS_URL = DOCS_URL
}
no-cache-filter = ["generate"]
}

View File

@ -10,6 +10,7 @@ services:
build:
args:
- JEKYLL_ENV
- DOCS_URL
context: .
image: docs/docstage
ports: