diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index b68fedc3bc..020e0fae1b 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -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 diff --git a/Dockerfile b/Dockerfile index 5502e21878..e8c0da542b 100644 --- a/Dockerfile +++ b/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,28 +44,14 @@ 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 </#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 - sed -i "s#\(]* href=\"\)https://${DOMAIN}/#\1/#g" "$i" -done + --mount=type=cache,target=/src/.jekyll-cache <]* href=\")#{docs_url}/, '\1') + File.open(f, "w") { |f2| f2.puts replace } + end + + end_time = Time.now + Jekyll.logger.info "done in #{(end_time - beginning_time)} seconds" + end + end +end diff --git a/_plugins/fix_urls.rb b/_plugins/fix_urls.rb deleted file mode 100644 index 1d96f38ebc..0000000000 --- a/_plugins/fix_urls.rb +++ /dev/null @@ -1,22 +0,0 @@ -require 'jekyll' -require 'octopress-hooks' - -module Jekyll - class FetchRemote < Octopress::Hooks::Site - def post_read(site) - beginning_time = Time.now - Jekyll.logger.info "Starting plugin fix_urls.rb..." - - Jekyll.logger.info " Fixing up URLs in swagger files" - Dir.glob(%w[./docker-hub/api/*.yaml ./engine/api/*.yaml]) do |file_name| - Jekyll.logger.info " #{file_name}" - text = File.read(file_name) - replace = text.gsub("https://docs.docker.com", "") - File.open(file_name, "w") { |file| file.puts replace } - end - - end_time = Time.now - Jekyll.logger.info "done in #{(end_time - beginning_time)} seconds" - end - end -end diff --git a/_plugins/update_sitemap.rb b/_plugins/update_sitemap.rb new file mode 100644 index 0000000000..a3be4a06ed --- /dev/null +++ b/_plugins/update_sitemap.rb @@ -0,0 +1,18 @@ +require_relative 'util.rb' + +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') + + if File.exist?(sitemap_path) + sitemap_file = File.read(sitemap_path) + replace = sitemap_file.gsub!("/", "#{get_docs_url}/") + Jekyll.logger.info " Replacing '/' with '#{get_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 diff --git a/_plugins/util.rb b/_plugins/util.rb new file mode 100644 index 0000000000..d8f118d571 --- /dev/null +++ b/_plugins/util.rb @@ -0,0 +1,5 @@ +def get_docs_url + # DEPLOY_URL is from Netlify for preview + # https://docs.netlify.com/configure-builds/environment-variables/#deploy-urls-and-metadata + ENV['DEPLOY_URL'] || ENV['DOCS_URL'] || 'https://docs.docker.com' +end diff --git a/docker-bake.hcl b/docker-bake.hcl index 107cea4949..2e4749b96f 100644 --- a/docker-bake.hcl +++ b/docker-bake.hcl @@ -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"] } diff --git a/docker-compose.yml b/docker-compose.yml index 7d5ab9d730..6e9c5f8f5d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -10,6 +10,7 @@ services: build: args: - JEKYLL_ENV + - DOCS_URL context: . image: docs/docstage ports: diff --git a/sitemap.xsl b/sitemap.xsl new file mode 100644 index 0000000000..95ce53b1c9 --- /dev/null +++ b/sitemap.xsl @@ -0,0 +1,81 @@ + + + + + + + Docker Docs XML Sitemap + + + + +

Docker Docs XML Sitemap

+
+

This is an XML Sitemap which is supposed to be processed by search engines like Google, Bing, ...

+

You can find more information about XML sitemaps on sitemaps.org and Google's list of sitemap programs.

+

This sitemap contains URLs.

+
+
+ + + + + + + + + high + + + + + +
LocationLast Modification
+ + + + + + + + +
+
+ + +
+