mirror of https://github.com/docker/docs.git
jekyll: enable sitemap and local search for dev environment
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
This commit is contained in:
parent
328b9fc265
commit
614c4a7000
|
@ -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
|
||||
|
|
25
Dockerfile
25
Dockerfile
|
@ -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
|
||||
|
||||
|
|
14
_config.yml
14
_config.yml
|
@ -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
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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
|
|
@ -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"]
|
||||
}
|
||||
|
|
|
@ -10,6 +10,7 @@ services:
|
|||
build:
|
||||
args:
|
||||
- JEKYLL_ENV
|
||||
- DOCS_URL
|
||||
context: .
|
||||
image: docs/docstage
|
||||
ports:
|
||||
|
|
Loading…
Reference in New Issue