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
|
JEKYLL_ENV=development
|
||||||
DOCS_AWS_REGION=us-east-1
|
DOCS_AWS_REGION=us-east-1
|
||||||
if [ "${{ github.ref }}" = "refs/heads/master" ]; then
|
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_BUCKET="docs.docker.com-stage-us-east-1"
|
||||||
DOCS_S3_CONFIG="_website-config-docs-stage.json"
|
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_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/"
|
DOCS_SLACK_MSG="Successfully promoted docs-stage from master. https://docs-stage.docker.com/"
|
||||||
elif [ "${{ github.ref }}" = "refs/heads/published" ]; then
|
elif [ "${{ github.ref }}" = "refs/heads/published" ]; then
|
||||||
JEKYLL_ENV=production
|
JEKYLL_ENV=production
|
||||||
|
DOCS_URL="https://docs.docker.com"
|
||||||
DOCS_S3_BUCKET="docs.docker.com-us-east-1"
|
DOCS_S3_BUCKET="docs.docker.com-us-east-1"
|
||||||
DOCS_S3_CONFIG="_website-config-docs.json"
|
DOCS_S3_CONFIG="_website-config-docs.json"
|
||||||
DOCS_LAMBDA_FUNCTION_CACHE="arn:aws:lambda:us-east-1:710015040892:function:docs-cache-invalidator"
|
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/"
|
DOCS_SLACK_MSG="Successfully published docs. https://docs.docker.com/"
|
||||||
elif [ "${{ github.ref }}" = "refs/heads/lab" ]; then
|
elif [ "${{ github.ref }}" = "refs/heads/lab" ]; then
|
||||||
|
DOCS_URL="https://docs-lab.docker.com"
|
||||||
DOCS_S3_BUCKET=""
|
DOCS_S3_BUCKET=""
|
||||||
DOCS_LAMBDA_FUNCTION_CACHE=""
|
DOCS_LAMBDA_FUNCTION_CACHE=""
|
||||||
DOCS_S3_CONFIG="_website-config-docs-lab.json"
|
DOCS_S3_CONFIG="_website-config-docs-lab.json"
|
||||||
|
@ -37,6 +40,7 @@ jobs:
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
echo "JEKYLL_ENV=$JEKYLL_ENV" >> $GITHUB_ENV
|
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_AWS_REGION=$DOCS_AWS_REGION" >> $GITHUB_ENV
|
||||||
echo "DOCS_S3_BUCKET=$DOCS_S3_BUCKET" >> $GITHUB_ENV
|
echo "DOCS_S3_BUCKET=$DOCS_S3_BUCKET" >> $GITHUB_ENV
|
||||||
echo "DOCS_S3_CONFIG=$DOCS_S3_CONFIG" >> $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 BUNDLER_VERSION=2.3.13
|
||||||
|
|
||||||
ARG JEKYLL_ENV=development
|
ARG JEKYLL_ENV=development
|
||||||
ARG DOMAIN=docs.docker.com
|
ARG DOCS_URL=http://localhost:4000
|
||||||
|
|
||||||
# Base stage for building
|
# Base stage for building
|
||||||
FROM ruby:${RUBY_VERSION}-alpine AS base
|
FROM ruby:${RUBY_VERSION}-alpine AS base
|
||||||
|
@ -44,27 +44,18 @@ COPY --from=vendored /out /
|
||||||
# After building with jekyll, fix up some links
|
# After building with jekyll, fix up some links
|
||||||
FROM gem AS generate
|
FROM gem AS generate
|
||||||
ARG JEKYLL_ENV
|
ARG JEKYLL_ENV
|
||||||
ARG DOMAIN
|
ARG DOCS_URL
|
||||||
ENV TARGET=/out
|
ENV TARGET=/out
|
||||||
RUN --mount=type=bind,target=.,rw \
|
RUN --mount=type=bind,target=.,rw \
|
||||||
--mount=type=cache,target=/src/.jekyll-cache <<EOT
|
--mount=type=cache,target=/src/.jekyll-cache <<EOT
|
||||||
set -eu
|
set -eu
|
||||||
if [ "${JEKYLL_ENV}" = "production" ]; then
|
CONFIG_FILES=_config.yml$([ "$JEKYLL_ENV" = "production" ] && echo ",_config_production.yml" || true)
|
||||||
(
|
(
|
||||||
set -x
|
set -x
|
||||||
bundle exec jekyll build --profile -d ${TARGET} --config _config.yml,_config_production.yml
|
bundle exec jekyll build --profile -d ${TARGET} --config ${CONFIG_FILES}
|
||||||
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
|
|
||||||
find ${TARGET} -type f -name '*.html' | while read i; do
|
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
|
done
|
||||||
EOT
|
EOT
|
||||||
|
|
||||||
|
|
14
_config.yml
14
_config.yml
|
@ -30,7 +30,6 @@ exclude:
|
||||||
- datacenter
|
- datacenter
|
||||||
- docker-bake.hcl
|
- docker-bake.hcl
|
||||||
- ee
|
- ee
|
||||||
- js/metadata.json
|
|
||||||
- LICENSE
|
- LICENSE
|
||||||
- Makefile
|
- Makefile
|
||||||
- README.md
|
- 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").
|
# which we show a badge (currently: API v1.40, or "Docker 19.03").
|
||||||
min_api_threshold: 1.40
|
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
|
# 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 production.
|
||||||
# for previewing, and excluding saves some time to build
|
|
||||||
plugins:
|
plugins:
|
||||||
- jekyll-redirect-from
|
- jekyll-redirect-from
|
||||||
- jekyll-relative-links
|
- jekyll-relative-links
|
||||||
|
- jekyll-sitemap
|
||||||
|
|
||||||
# Assets
|
# Assets
|
||||||
#
|
#
|
||||||
|
@ -87,10 +89,7 @@ sass:
|
||||||
# Set default options / metadata for some paths.
|
# Set default options / metadata for some paths.
|
||||||
#
|
#
|
||||||
# Setting options here prevents having to repeat the same option in front-matter
|
# 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
|
# on every page.
|
||||||
# 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 (!).
|
|
||||||
defaults:
|
defaults:
|
||||||
# Default one for development builds (local and PR previews)
|
# Default one for development builds (local and PR previews)
|
||||||
# sitemap is disabled here but not for production in _config_production.yml
|
# sitemap is disabled here but not for production in _config_production.yml
|
||||||
|
@ -99,7 +98,6 @@ defaults:
|
||||||
type: "pages"
|
type: "pages"
|
||||||
values:
|
values:
|
||||||
layout: docs
|
layout: docs
|
||||||
sitemap: false
|
|
||||||
toc_min: 2
|
toc_min: 2
|
||||||
toc_max: 4
|
toc_max: 4
|
||||||
|
|
||||||
|
|
|
@ -17,20 +17,12 @@ exclude:
|
||||||
google_analytics: GTM-WL2QLG5
|
google_analytics: GTM-WL2QLG5
|
||||||
polldaddy_id: 8453675
|
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
|
# Assets
|
||||||
#
|
#
|
||||||
# For production/deploy, we build css with the "compressed" format, to produce
|
# For production/deploy, we build css with the "compressed" format, to produce
|
||||||
# smaller files.
|
# smaller files.
|
||||||
sass:
|
sass:
|
||||||
style: compressed
|
style: compressed
|
||||||
|
|
||||||
collections:
|
collections:
|
||||||
samples:
|
samples:
|
||||||
|
@ -39,10 +31,7 @@ collections:
|
||||||
# Set default options / metadata for some paths.
|
# Set default options / metadata for some paths.
|
||||||
#
|
#
|
||||||
# Setting options here prevents having to repeat the same option in front-matter
|
# 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
|
# on every page.
|
||||||
# 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 (!).
|
|
||||||
#
|
#
|
||||||
# The list below is used for *production* deploys, and overrides the one defined
|
# 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.
|
# 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" {
|
variable "JEKYLL_ENV" {
|
||||||
default = "development"
|
default = "development"
|
||||||
}
|
}
|
||||||
|
variable "DOCS_URL" {
|
||||||
|
default = "http://localhost:4000"
|
||||||
|
}
|
||||||
variable "DOCS_SITE_DIR" {
|
variable "DOCS_SITE_DIR" {
|
||||||
default = "_site"
|
default = "_site"
|
||||||
}
|
}
|
||||||
|
@ -8,6 +11,7 @@ variable "DOCS_SITE_DIR" {
|
||||||
target "_common" {
|
target "_common" {
|
||||||
args = {
|
args = {
|
||||||
JEKYLL_ENV = JEKYLL_ENV
|
JEKYLL_ENV = JEKYLL_ENV
|
||||||
|
DOCS_URL = DOCS_URL
|
||||||
}
|
}
|
||||||
no-cache-filter = ["generate"]
|
no-cache-filter = ["generate"]
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,6 +10,7 @@ services:
|
||||||
build:
|
build:
|
||||||
args:
|
args:
|
||||||
- JEKYLL_ENV
|
- JEKYLL_ENV
|
||||||
|
- DOCS_URL
|
||||||
context: .
|
context: .
|
||||||
image: docs/docstage
|
image: docs/docstage
|
||||||
ports:
|
ports:
|
||||||
|
|
Loading…
Reference in New Issue