diff --git a/.gitignore b/.gitignore index fdee300f3d..c27d0a06f8 100644 --- a/.gitignore +++ b/.gitignore @@ -36,4 +36,15 @@ _site/ *.iml **/*.dia~ tmp -.pnpm-store/ \ No newline at end of file +.pnpm-store/ + +# Local Claude Code context — not for commit +CLAUDE.local.md +.claude/ + +# Local audit working files — not for commit +/audit/ +*.audit.csv + +# Local writing guides and skills — not for commit +octopus-writing-guide.md \ No newline at end of file diff --git a/public/docs/img/octopus-logo.png b/public/docs/img/octopus-logo.png new file mode 100644 index 0000000000..554a296114 Binary files /dev/null and b/public/docs/img/octopus-logo.png differ diff --git a/src/config.ts b/src/config.ts index 6e2a0c02b4..31990c4037 100644 --- a/src/config.ts +++ b/src/config.ts @@ -56,6 +56,18 @@ export const OPEN_GRAPH = { }, }; +// Schema.org inputs for JsonLd.astro. Set enabled=false to suppress +// JSON-LD site-wide without a deploy revert. Logo asset existence is +// not verified at build time. +export const STRUCTURED_DATA = { + enabled: true, + organizationLogo: { + src: `${SITE.subfolder}/img/octopus-logo.png`, + width: 140, + height: 140, + }, +}; + export const HEADER_SCRIPTS = ` diff --git a/src/pages/docs/getting-started/first-deployment/add-deployment-targets.mdx b/src/pages/docs/getting-started/first-deployment/add-deployment-targets.mdx index 85da9a5555..3e82123707 100644 --- a/src/pages/docs/getting-started/first-deployment/add-deployment-targets.mdx +++ b/src/pages/docs/getting-started/first-deployment/add-deployment-targets.mdx @@ -2,8 +2,8 @@ layout: src/layouts/Default.astro pubDate: 2023-01-01 modDate: 2025-01-07 -title: Add deployment targets -description: Step by step guide on how to add deployment targets in Octopus Deploy. +title: Add deployment targets in Octopus Deploy +description: Register machines or cloud services as deployment targets in Octopus Deploy. Follow the step-by-step guide to connect your first target and start deploying. navOrder: 70 hideInThisSection: true --- diff --git a/src/pages/docs/getting-started/first-deployment/approvals-with-manual-interventions.md b/src/pages/docs/getting-started/first-deployment/approvals-with-manual-interventions.md index 918872407c..3eae51fbff 100644 --- a/src/pages/docs/getting-started/first-deployment/approvals-with-manual-interventions.md +++ b/src/pages/docs/getting-started/first-deployment/approvals-with-manual-interventions.md @@ -2,8 +2,8 @@ layout: src/layouts/Default.astro pubDate: 2023-01-01 modDate: 2025-01-07 -title: Approvals with Manual Interventions -description: Step by step guide on how to use Manual Interventions in Octopus Deploy for approvals +title: Approvals with manual interventions +description: Add a manual intervention step to require sign-off before each Octopus Deploy deployment proceeds. Follow the step-by-step guide to configure approvals. navOrder: 60 hideInThisSection: true --- diff --git a/src/pages/docs/getting-started/first-deployment/define-and-use-variables.md b/src/pages/docs/getting-started/first-deployment/define-and-use-variables.md index ceee8f2c58..1f0ed721dc 100644 --- a/src/pages/docs/getting-started/first-deployment/define-and-use-variables.md +++ b/src/pages/docs/getting-started/first-deployment/define-and-use-variables.md @@ -2,8 +2,8 @@ layout: src/layouts/Default.astro pubDate: 2023-01-01 modDate: 2024-11-13 -title: Define and use variables -description: This tutorial will walk you through defining and using variables in an Octopus Deploy deployment. +title: Define and use variables in Octopus Deploy +description: Add variables to your Octopus Deploy project to make deployments flexible. Define variable values per environment and reference them in your deployment steps. navOrder: 50 hideInThisSection: true --- diff --git a/src/pages/docs/getting-started/first-deployment/deploy-a-package.md b/src/pages/docs/getting-started/first-deployment/deploy-a-package.md index e9f7c77857..3c136604ed 100644 --- a/src/pages/docs/getting-started/first-deployment/deploy-a-package.md +++ b/src/pages/docs/getting-started/first-deployment/deploy-a-package.md @@ -2,8 +2,8 @@ layout: src/layouts/Default.astro pubDate: 2023-01-01 modDate: 2025-01-7 -title: Deploy a sample package -description: Step by step guide on how to deploy a sample package Octopus Deploy +title: Deploy a package in Octopus Deploy +description: Deploy a sample package using Octopus Deploy. Create a deploy package step, push an artifact to the built-in feed, and release it to your first environment. navOrder: 80 hideInThisSection: true --- diff --git a/src/pages/docs/getting-started/first-deployment/index.mdx b/src/pages/docs/getting-started/first-deployment/index.mdx index e424500ba4..b0e173bce4 100644 --- a/src/pages/docs/getting-started/first-deployment/index.mdx +++ b/src/pages/docs/getting-started/first-deployment/index.mdx @@ -2,8 +2,8 @@ layout: src/layouts/Default.astro pubDate: 2023-01-01 modDate: 2024-11-14 -title: First Deployment -description: This tutorial will walk you through configuring your first deployment in Octopus Deploy. +title: Your first deployment in Octopus Deploy +description: Deploy your first application with Octopus. Set up environments, create a project, add a deployment target, and release your first software package today. navOrder: 10 hideInThisSection: true --- diff --git a/src/pages/docs/getting-started/first-runbook-run/add-runbook-deployment-targets.mdx b/src/pages/docs/getting-started/first-runbook-run/add-runbook-deployment-targets.mdx index 2870b0f54c..b7085f4d8e 100644 --- a/src/pages/docs/getting-started/first-runbook-run/add-runbook-deployment-targets.mdx +++ b/src/pages/docs/getting-started/first-runbook-run/add-runbook-deployment-targets.mdx @@ -2,8 +2,8 @@ layout: src/layouts/Default.astro pubDate: 2023-01-01 modDate: 2024-07-30 -title: Add runbook deployment targets -description: Step by step guide on how to add deployment targets for runbooks in Octopus Deploy. +title: Add deployment targets for Octopus runbooks +description: Register a deployment target so your Octopus runbook can run scripts on your servers. Add the target, then update the runbook process steps to use it. navOrder: 70 hideInThisSection: true --- diff --git a/src/pages/docs/getting-started/first-runbook-run/configure-runbook-environments.mdx b/src/pages/docs/getting-started/first-runbook-run/configure-runbook-environments.mdx index f34a7fead6..cb8fb209dd 100644 --- a/src/pages/docs/getting-started/first-runbook-run/configure-runbook-environments.mdx +++ b/src/pages/docs/getting-started/first-runbook-run/configure-runbook-environments.mdx @@ -2,8 +2,8 @@ layout: src/layouts/Default.astro pubDate: 2023-01-01 modDate: 2024-07-30 -title: Configure Runbook Environments -description: Step by step guide on how to configure environments in Octopus Deploy. +title: Configure environments for Octopus runbooks +description: Set up environments in Octopus Deploy so your runbook has a place to run. Follow the step-by-step guide to create and configure your first environment. navOrder: 10 hideInThisSection: true --- diff --git a/src/pages/docs/getting-started/first-runbook-run/create-a-runbook.md b/src/pages/docs/getting-started/first-runbook-run/create-a-runbook.md index efb428ba4b..0a703a0351 100644 --- a/src/pages/docs/getting-started/first-runbook-run/create-a-runbook.md +++ b/src/pages/docs/getting-started/first-runbook-run/create-a-runbook.md @@ -2,8 +2,8 @@ layout: src/layouts/Default.astro pubDate: 2023-01-01 modDate: 2024-07-30 -title: Create a runbook -description: Step by step guide on how to create a runbook in Octopus Deploy. +title: Create a runbook in Octopus Deploy +description: Add a runbook to your Octopus Deploy project. Follow the step-by-step guide to create the runbook, name it, and prepare it for defining process steps. navOrder: 30 hideInThisSection: true --- diff --git a/src/pages/docs/getting-started/first-runbook-run/create-runbook-projects.mdx b/src/pages/docs/getting-started/first-runbook-run/create-runbook-projects.mdx index cd5c6d8711..954aa79236 100644 --- a/src/pages/docs/getting-started/first-runbook-run/create-runbook-projects.mdx +++ b/src/pages/docs/getting-started/first-runbook-run/create-runbook-projects.mdx @@ -2,8 +2,8 @@ layout: src/layouts/Default.astro pubDate: 2023-01-01 modDate: 2024-07-30 -title: Create a Project -description: Step by step guide on how to create projects in Octopus Deploy. +title: Create a project for your Octopus runbook +description: Create an Octopus Deploy project to hold your runbook. Follow the step-by-step guide to name the project, pick a lifecycle, and get ready to add a runbook. navOrder: 20 hideInThisSection: true --- diff --git a/src/pages/docs/getting-started/first-runbook-run/define-the-runbook-process-for-targets.md b/src/pages/docs/getting-started/first-runbook-run/define-the-runbook-process-for-targets.md index 99ca451865..02baaec912 100644 --- a/src/pages/docs/getting-started/first-runbook-run/define-the-runbook-process-for-targets.md +++ b/src/pages/docs/getting-started/first-runbook-run/define-the-runbook-process-for-targets.md @@ -2,8 +2,8 @@ layout: src/layouts/Default.astro pubDate: 2023-01-01 modDate: 2024-07-30 -title: Defining the runbook process for targets -description: Step by step guide on how to define a runbook process in Octopus Deploy. +title: Define a runbook process for targets +description: Define the steps in your Octopus Deploy runbook to run on deployment targets. Add a script step, target it by role, and save the runbook process to run. navOrder: 80 hideInThisSection: true --- diff --git a/src/pages/docs/getting-started/first-runbook-run/define-the-runbook-process.md b/src/pages/docs/getting-started/first-runbook-run/define-the-runbook-process.md index a03cf6d47e..88c5e5a660 100644 --- a/src/pages/docs/getting-started/first-runbook-run/define-the-runbook-process.md +++ b/src/pages/docs/getting-started/first-runbook-run/define-the-runbook-process.md @@ -2,8 +2,8 @@ layout: src/layouts/Default.astro pubDate: 2023-01-01 modDate: 2024-07-30 -title: Defining the runbook process for workers -description: Step by step guide on how to define a runbook process to run on Workers in Octopus Deploy. +title: Define a runbook process for Workers +description: Define the steps in your Octopus Deploy runbook to run on Workers. Add a script step, select a Worker pool, and save the runbook process to run on demand. navOrder: 40 hideInThisSection: true --- diff --git a/src/pages/docs/getting-started/first-runbook-run/index.mdx b/src/pages/docs/getting-started/first-runbook-run/index.mdx index b6c5b395a9..7ae42475d0 100644 --- a/src/pages/docs/getting-started/first-runbook-run/index.mdx +++ b/src/pages/docs/getting-started/first-runbook-run/index.mdx @@ -2,8 +2,8 @@ layout: src/layouts/Default.astro pubDate: 2023-01-01 modDate: 2024-07-30 -title: First Runbook Run -description: This section will walk you through how to configure your first runbook run in Octopus Deploy. +title: Your first runbook run in Octopus Deploy +description: Run your first Octopus Deploy runbook. Create a project, define the process steps, configure environments, add a target, and trigger your first runbook run. navOrder: 20 hideInThisSection: true --- diff --git a/src/pages/docs/getting-started/first-runbook-run/publishing-a-runbook.md b/src/pages/docs/getting-started/first-runbook-run/publishing-a-runbook.md index 8f09eaee25..221e96a225 100644 --- a/src/pages/docs/getting-started/first-runbook-run/publishing-a-runbook.md +++ b/src/pages/docs/getting-started/first-runbook-run/publishing-a-runbook.md @@ -2,8 +2,8 @@ layout: src/layouts/Default.astro pubDate: 2023-01-01 modDate: 2024-07-30 -title: Publishing a runbook -description: Step by step guide on how to publish an Octopus Deploy Runbook to use with triggers. +title: Publish a runbook in Octopus Deploy +description: Publish your Octopus Deploy runbook to make it available for scheduled triggers and deployment targets. Follow the step-by-step guide to create a snapshot. navOrder: 90 hideInThisSection: true --- diff --git a/src/pages/docs/getting-started/first-runbook-run/runbook-specific-variables.md b/src/pages/docs/getting-started/first-runbook-run/runbook-specific-variables.md index 17505a3b20..c2408363dc 100644 --- a/src/pages/docs/getting-started/first-runbook-run/runbook-specific-variables.md +++ b/src/pages/docs/getting-started/first-runbook-run/runbook-specific-variables.md @@ -2,8 +2,8 @@ layout: src/layouts/Default.astro pubDate: 2023-01-01 modDate: 2024-07-30 -title: Runbook specific variables -description: Step by step guide on how to define and use variables in an Octopus Deploy runbook. +title: Variables in Octopus Deploy runbooks +description: Add variables to your Octopus Deploy runbook to make scripts flexible. Define a variable, reference it in a step, and scope it to specific environments. navOrder: 60 hideInThisSection: true --- diff --git a/src/pages/docs/getting-started/first-runbook-run/running-a-runbook.md b/src/pages/docs/getting-started/first-runbook-run/running-a-runbook.md index 4900b80b87..3bc917e4c7 100644 --- a/src/pages/docs/getting-started/first-runbook-run/running-a-runbook.md +++ b/src/pages/docs/getting-started/first-runbook-run/running-a-runbook.md @@ -2,8 +2,8 @@ layout: src/layouts/Default.astro pubDate: 2023-01-01 modDate: 2026-04-16 -title: Running a Runbook -description: Step by step guide on how to run a runbook in Octopus Deploy. +title: Run a runbook in Octopus Deploy +description: Trigger a runbook run in Octopus Deploy. Select the runbook, choose an environment, review the task summary, and verify the run completed successfully. navOrder: 50 hideInThisSection: true --- diff --git a/src/pages/docs/getting-started/index.mdx b/src/pages/docs/getting-started/index.mdx index df3b1e48b0..be8b577bb5 100644 --- a/src/pages/docs/getting-started/index.mdx +++ b/src/pages/docs/getting-started/index.mdx @@ -2,12 +2,12 @@ layout: src/layouts/Default.astro pubDate: 2023-01-01 modDate: 2024-05-24 -title: Getting started with Octopus +title: Get started with Octopus Deploy subtitle: An overview of Octopus Deploy concepts icon: fa-solid fa-octopus navTitle: Overview navSection: Getting started -description: This section provides an overview of Octopus Deploy concepts and links to the relevant documentation, which explore the concepts further and guide you through implementing them with Octopus Cloud or your own self-hosted Octopus Server +description: Learn Octopus Deploy from scratch. Explore core concepts, complete your first deployment, run a runbook, and find best practices to help set up your team. navOrder: 5 hideInThisSectionHeader: true --- diff --git a/src/pages/docs/getting-started/managing-octopus-subscriptions.md b/src/pages/docs/getting-started/managing-octopus-subscriptions.md index 25bc733518..d01bc02ef7 100644 --- a/src/pages/docs/getting-started/managing-octopus-subscriptions.md +++ b/src/pages/docs/getting-started/managing-octopus-subscriptions.md @@ -2,8 +2,8 @@ layout: src/layouts/Default.astro pubDate: 2023-01-01 modDate: 2025-06-13 -title: Managing Octopus subscriptions -description: Control Center is where you manage your Octopus subscriptions and their associated user access. +title: Manage your Octopus subscriptions +description: Use Octopus Control Center to manage your subscriptions, licenses, and user access. View billing details, add users, and adjust your plan from one place. navOrder: 40 --- diff --git a/src/pages/docs/getting-started/reference-architectures.md b/src/pages/docs/getting-started/reference-architectures.md index c0ffe7696b..583bfbddce 100644 --- a/src/pages/docs/getting-started/reference-architectures.md +++ b/src/pages/docs/getting-started/reference-architectures.md @@ -2,8 +2,8 @@ layout: src/layouts/Default.astro pubDate: 2023-10-31 modDate: 2023-11-13 -title: Reference architectures -description: Populate an Octopus space with example projects and supporting resources demonstrating reference architectures +title: Reference architectures for Octopus Deploy +description: Populate an Octopus space with example projects showing reference architectures for common deployment patterns. Get a working setup running in minutes. navOrder: 55 --- diff --git a/src/pages/docs/getting-started/reference-architectures/eks-reference-architecture.md b/src/pages/docs/getting-started/reference-architectures/eks-reference-architecture.md index 1a5495e69f..a924f25bfa 100644 --- a/src/pages/docs/getting-started/reference-architectures/eks-reference-architecture.md +++ b/src/pages/docs/getting-started/reference-architectures/eks-reference-architecture.md @@ -2,8 +2,8 @@ layout: src/layouts/Default.astro pubDate: 2023-11-13 modDate: 2023-11-13 -title: EKS reference architecture -description: Populate an Octopus space with example projects deploying to an AWS EKS cluster +title: EKS reference architecture for Octopus Deploy +description: Populate an Octopus space with example projects that deploy to AWS EKS. Follow the guide to set up a Kubernetes deployment reference architecture in Octopus. navOrder: 1 --- diff --git a/src/pages/docs/getting-started/reference-architectures/webapp-reference-architecture.md b/src/pages/docs/getting-started/reference-architectures/webapp-reference-architecture.md index 683737452e..c9c0b79b28 100644 --- a/src/pages/docs/getting-started/reference-architectures/webapp-reference-architecture.md +++ b/src/pages/docs/getting-started/reference-architectures/webapp-reference-architecture.md @@ -2,9 +2,9 @@ layout: src/layouts/Default.astro pubDate: 2023-11-13 modDate: 2023-11-13 -title: Web App reference architecture in Octopus +title: Azure Web App reference architecture navTitle: Web App reference architecture -description: Populate an Octopus space with example projects deploying to an Azure web app +description: Populate an Octopus space with example projects that deploy to an Azure web app. Follow the guide to set up a reference architecture for Azure deployments. navOrder: 2 --- diff --git a/src/pages/docs/getting-started/samples-instance.mdx b/src/pages/docs/getting-started/samples-instance.mdx index 93dc873838..6ec4f0ec2b 100644 --- a/src/pages/docs/getting-started/samples-instance.mdx +++ b/src/pages/docs/getting-started/samples-instance.mdx @@ -2,8 +2,8 @@ layout: src/layouts/Default.astro pubDate: 2023-01-01 modDate: 2023-01-01 -title: Samples -description: View real-world deployment and runbook examples in our Octopus Cloud samples instance - https://samples.octopus.app +title: Octopus Deploy samples instance +description: Explore real-world deployment and runbook examples in the Octopus samples instance. Browse projects to learn patterns and best practices you can apply today. navOrder: 50 --- import SamplesAwsDeploymentFeatureList from 'src/shared-content/samples/samples-aws-deployment-feature-list.include.md'; diff --git a/src/pages/docs/installation/automating-installation.mdx b/src/pages/docs/installation/automating-installation.mdx index a4f18ed0ad..7192e6c820 100644 --- a/src/pages/docs/installation/automating-installation.mdx +++ b/src/pages/docs/installation/automating-installation.mdx @@ -2,8 +2,8 @@ layout: src/layouts/Default.astro pubDate: 2023-01-01 modDate: 2023-01-01 -title: Automating Octopus installation -description: Information on how to install and configure an Octopus Server in a fully automated way from the command line. +title: Automate Octopus Server installation +description: Install and configure Octopus Server from the command line without manual steps. Use the Octopus Manager command-line interface for silent, repeatable installs. navOrder: 7 --- import ServerDownloads from 'src/shared-content/installation/server-downloads.include.md'; diff --git a/src/pages/docs/installation/file-storage/aws-file-storage.mdx b/src/pages/docs/installation/file-storage/aws-file-storage.mdx index 40e9fe5177..615a8d097f 100644 --- a/src/pages/docs/installation/file-storage/aws-file-storage.mdx +++ b/src/pages/docs/installation/file-storage/aws-file-storage.mdx @@ -2,8 +2,8 @@ layout: src/layouts/Default.astro pubDate: 2023-01-01 modDate: 2024-05-22 -title: AWS File Storage -description: Guidelines and recommendations for configuring Octopus Deploy to use file storage options on AWS. +title: AWS file storage for Octopus Deploy +description: Store Octopus Deploy files on AWS using EFS or S3. Compare storage options and follow the configuration steps to mount and connect your chosen AWS service. navOrder: 20 hideInThisSection: true --- diff --git a/src/pages/docs/installation/file-storage/azure-file-storage.mdx b/src/pages/docs/installation/file-storage/azure-file-storage.mdx index ca38fb38bf..1ece411a96 100644 --- a/src/pages/docs/installation/file-storage/azure-file-storage.mdx +++ b/src/pages/docs/installation/file-storage/azure-file-storage.mdx @@ -2,8 +2,8 @@ layout: src/layouts/Default.astro pubDate: 2023-01-01 modDate: 2024-05-22 -title: Azure Files -description: Guidelines and recommendations for configuring Octopus Deploy to use Azure Files. +title: Azure Files for Octopus Deploy file storage +description: Store Octopus Deploy files on Azure Files using SMB mounts. Review sizing recommendations and follow the configuration steps for Linux and Windows hosts. navOrder: 30 hideInThisSection: true --- diff --git a/src/pages/docs/installation/file-storage/gcp-file-storage.mdx b/src/pages/docs/installation/file-storage/gcp-file-storage.mdx index 96c29cce45..8f3742c7df 100644 --- a/src/pages/docs/installation/file-storage/gcp-file-storage.mdx +++ b/src/pages/docs/installation/file-storage/gcp-file-storage.mdx @@ -2,8 +2,8 @@ layout: src/layouts/Default.astro pubDate: 2023-01-01 modDate: 2024-05-22 -title: GCP File Storage -description: Guidelines and recommendations for configuring Octopus Deploy to store files on GCP File Storage. +title: GCP file storage for Octopus Deploy +description: Store Octopus Deploy files on Google Cloud using Filestore with NFS v3 mounts. Follow the setup steps for both Linux and Windows Server hosts to get connected. navOrder: 40 hideInThisSection: true --- diff --git a/src/pages/docs/installation/file-storage/index.md b/src/pages/docs/installation/file-storage/index.md index 21276e8e8d..87d908c058 100644 --- a/src/pages/docs/installation/file-storage/index.md +++ b/src/pages/docs/installation/file-storage/index.md @@ -2,11 +2,11 @@ layout: src/layouts/Default.astro pubDate: 2023-01-01 modDate: 2024-05-22 -title: File Storage +title: File storage for Octopus Deploy navTitle: Overview navSection: File Storage navOrder: 3 -description: How to configure file storage for Octopus Deploy +description: Choose how Octopus Deploy stores its files. Options include local storage, AWS, Azure, and GCP. Pick the right setup for your environment and follow the guide. hideInThisSection: true --- diff --git a/src/pages/docs/installation/file-storage/local-storage.mdx b/src/pages/docs/installation/file-storage/local-storage.mdx index a616c5fd80..14624bd761 100644 --- a/src/pages/docs/installation/file-storage/local-storage.mdx +++ b/src/pages/docs/installation/file-storage/local-storage.mdx @@ -2,8 +2,8 @@ layout: src/layouts/Default.astro pubDate: 2023-01-01 modDate: 2024-05-22 -title: Local File Storage -description: Guidelines and recommendations for configuring local file storage with Octopus Deploy. +title: Local file storage for Octopus Deploy +description: Store Octopus Deploy files on local disk or a network share. Review default folder locations, required permissions, and how to change the storage path. navOrder: 10 hideInThisSection: true --- diff --git a/src/pages/docs/installation/file-storage/windows-nfs.md b/src/pages/docs/installation/file-storage/windows-nfs.md index ce599f331c..c1cf6d036c 100644 --- a/src/pages/docs/installation/file-storage/windows-nfs.md +++ b/src/pages/docs/installation/file-storage/windows-nfs.md @@ -2,8 +2,8 @@ layout: src/layouts/Default.astro pubDate: 2023-01-01 modDate: 2024-07-30 -title: Windows NFS File Storage -description: Guidelines and recommendations for configuring NFS File Storage with Octopus Deploy. +title: Windows NFS file storage for Octopus Deploy +description: Configure a Windows NFS share for Octopus Deploy file storage across nodes. Review prerequisites, share setup steps, and how to connect your Octopus instance. navOrder: 80 hideInThisSection: true --- diff --git a/src/pages/docs/installation/index.mdx b/src/pages/docs/installation/index.mdx index 77eae92f6c..41db640b38 100644 --- a/src/pages/docs/installation/index.mdx +++ b/src/pages/docs/installation/index.mdx @@ -2,13 +2,13 @@ layout: src/layouts/Default.astro pubDate: 2023-01-01 modDate: 2024-05-01 -title: Installation of Octopus Server +title: Install Octopus Server subtitle: How to install Octopus Server icon: fa-solid fa-server navTitle: Overview navSection: Installation navOrder: 20 -description: How to install the Octopus Server. +description: Install Octopus Server on Windows or as a Linux container. Connect a SQL Server database, configure your instance, and start deploying software today. hideInThisSection: true --- import OctopusReleases from 'src/shared-content/installation/octopus-releases.include.md'; diff --git a/src/pages/docs/installation/isolated-octopus-deploy-servers.md b/src/pages/docs/installation/isolated-octopus-deploy-servers.md index 21c1742ec5..9fafbd6a4a 100644 --- a/src/pages/docs/installation/isolated-octopus-deploy-servers.md +++ b/src/pages/docs/installation/isolated-octopus-deploy-servers.md @@ -2,8 +2,8 @@ layout: src/layouts/Default.astro pubDate: 2023-01-01 modDate: 2023-01-01 -title: Isolated Octopus Servers -description: Working with isolated Octopus Servers due to infrastructure or governance requirements. +title: Isolated Octopus Deploy servers +description: Run Octopus Deploy in an isolated network without internet access. Learn how to manage packages, upgrades, and Tentacle comms in air-gapped environments. navOrder: 11 --- diff --git a/src/pages/docs/installation/load-balancers/aws-load-balancers.mdx b/src/pages/docs/installation/load-balancers/aws-load-balancers.mdx index 9b79d7be29..66a5bc8d80 100644 --- a/src/pages/docs/installation/load-balancers/aws-load-balancers.mdx +++ b/src/pages/docs/installation/load-balancers/aws-load-balancers.mdx @@ -2,8 +2,8 @@ layout: src/layouts/Default.astro pubDate: 2023-01-01 modDate: 2026-02-23 -title: AWS Load Balancers -description: Guidelines and recommendations for configuring Octopus Deploy to use load balancer options on AWS. +title: AWS load balancers for Octopus Deploy +description: Route traffic to Octopus Deploy using AWS load balancers. Review options including ALB and NLB, then follow the configuration guide for your own setup. navOrder: 20 hideInThisSection: true --- diff --git a/src/pages/docs/installation/load-balancers/azure-load-balancers.mdx b/src/pages/docs/installation/load-balancers/azure-load-balancers.mdx index 82e9269e15..3a52736bdc 100644 --- a/src/pages/docs/installation/load-balancers/azure-load-balancers.mdx +++ b/src/pages/docs/installation/load-balancers/azure-load-balancers.mdx @@ -2,8 +2,8 @@ layout: src/layouts/Default.astro pubDate: 2023-01-01 modDate: 2024-07-08 -title: Azure Load Balancers -description: Guidelines and recommendations for configuring Octopus Deploy to use Azure Load Balancers. +title: Azure load balancers for Octopus Deploy +description: Route traffic to Octopus Deploy using Azure load balancers. Review supported load balancer options and follow the configuration steps for your environment. navOrder: 30 hideInThisSection: true --- diff --git a/src/pages/docs/installation/load-balancers/configuring-netscaler.md b/src/pages/docs/installation/load-balancers/configuring-netscaler.md index b2153e398d..169a4e7889 100644 --- a/src/pages/docs/installation/load-balancers/configuring-netscaler.md +++ b/src/pages/docs/installation/load-balancers/configuring-netscaler.md @@ -2,8 +2,8 @@ layout: src/layouts/Default.astro pubDate: 2023-01-01 modDate: 2023-01-01 -title: Configuring Netscaler -description: Script to configure a Netscaler load balancer for use with an Octopus High Availability instance. +title: Netscaler for Octopus High Availability +description: Use a script to configure a Netscaler load balancer for Octopus High Availability. Adjust the script for your environment and apply the configuration. navOrder: 10 --- diff --git a/src/pages/docs/installation/load-balancers/gcp-load-balancers.mdx b/src/pages/docs/installation/load-balancers/gcp-load-balancers.mdx index ec9761d985..54d7240993 100644 --- a/src/pages/docs/installation/load-balancers/gcp-load-balancers.mdx +++ b/src/pages/docs/installation/load-balancers/gcp-load-balancers.mdx @@ -2,8 +2,8 @@ layout: src/layouts/Default.astro pubDate: 2023-01-01 modDate: 2024-05-22 -title: GCP Load Balancers -description: Guidelines and recommendations for configuring Octopus Deploy to store files on GCP Load Balancers. +title: GCP load balancers for Octopus Deploy +description: Route traffic to Octopus Deploy using GCP load balancers. Review supported options and follow the configuration steps to set up your Google Cloud environment. navOrder: 40 hideInThisSection: true --- diff --git a/src/pages/docs/installation/load-balancers/index.mdx b/src/pages/docs/installation/load-balancers/index.mdx index 4887a14347..d2aa0babc2 100644 --- a/src/pages/docs/installation/load-balancers/index.mdx +++ b/src/pages/docs/installation/load-balancers/index.mdx @@ -2,11 +2,11 @@ layout: src/layouts/Default.astro pubDate: 2023-01-01 modDate: 2026-01-15 -title: Load Balancers +title: Load balancers for Octopus Deploy navTitle: Overview navSection: Load Balancers navOrder: 4 -description: How to configure Octopus Deploy to use load balancers +description: Run Octopus Deploy behind a load balancer for high availability. Choose from NGINX, IIS, AWS, Azure, GCP, or Netscaler, and follow the configuration guide. hideInThisSection: true --- diff --git a/src/pages/docs/installation/load-balancers/use-iis-as-reverse-proxy.md b/src/pages/docs/installation/load-balancers/use-iis-as-reverse-proxy.md index bfe6d66e24..096fcd4799 100644 --- a/src/pages/docs/installation/load-balancers/use-iis-as-reverse-proxy.md +++ b/src/pages/docs/installation/load-balancers/use-iis-as-reverse-proxy.md @@ -2,8 +2,8 @@ layout: src/layouts/Default.astro pubDate: 2023-01-01 modDate: 2023-01-01 -title: Use IIS as a reverse proxy for Octopus Deploy -description: How to set up IIS 7 (or later) as a Reverse Proxy for Octopus Deploy +title: IIS as a reverse proxy for Octopus Deploy +description: Run Octopus Deploy behind IIS as a reverse proxy using ARR and URL Rewrite modules. Follow the step-by-step guide to add SSL termination and custom headers. navOrder: 15 --- diff --git a/src/pages/docs/installation/load-balancers/use-nginx-as-reverse-proxy.md b/src/pages/docs/installation/load-balancers/use-nginx-as-reverse-proxy.md index 865b768166..fe2a8080fe 100644 --- a/src/pages/docs/installation/load-balancers/use-nginx-as-reverse-proxy.md +++ b/src/pages/docs/installation/load-balancers/use-nginx-as-reverse-proxy.md @@ -2,8 +2,8 @@ layout: src/layouts/Default.astro pubDate: 2023-01-01 modDate: 2025-12-08 -title: Use NGINX as a reverse proxy for Octopus Deploy -description: How to set up NGINX as a Reverse Proxy for Octopus Deploy +title: NGINX as a reverse proxy for Octopus Deploy +description: Run Octopus Deploy behind an NGINX reverse proxy to add SSL termination or custom HTTP response headers. Follow the configuration guide to get set up. navOrder: 10 --- diff --git a/src/pages/docs/installation/managed-service-account.md b/src/pages/docs/installation/managed-service-account.md index 3acfecc0dd..5e0d97d088 100644 --- a/src/pages/docs/installation/managed-service-account.md +++ b/src/pages/docs/installation/managed-service-account.md @@ -2,8 +2,8 @@ layout: src/layouts/Default.astro pubDate: 2023-01-01 modDate: 2023-01-01 -title: Using a Managed Service Account (MSA) -description: Run Octopus using a Managed Service Account. +title: Run Octopus with a Managed Service Account +description: Set up the Octopus Deploy Windows service to run as a Managed Service Account. Learn the requirements and follow the steps to create and apply the MSA. navOrder: 6 --- You can run the Octopus Server using a Managed Service Account (MSA): diff --git a/src/pages/docs/installation/octopus-server-linux-container/docker-compose-linux.md b/src/pages/docs/installation/octopus-server-linux-container/docker-compose-linux.md index eb53490289..4eb46321b2 100644 --- a/src/pages/docs/installation/octopus-server-linux-container/docker-compose-linux.md +++ b/src/pages/docs/installation/octopus-server-linux-container/docker-compose-linux.md @@ -2,8 +2,8 @@ layout: src/layouts/Default.astro pubDate: 2023-01-01 modDate: 2023-01-01 -title: Octopus Server Container with Docker Compose -description: A fully self-contained SQL Server and Octopus Server provisioned as Linux containers using Docker Compose. +title: Octopus Server with Docker Compose on Linux +description: Run Octopus Server and SQL Server as Linux containers using Docker Compose. Follow the step-by-step setup to create a self-contained local deployment. navOrder: 10 --- diff --git a/src/pages/docs/installation/octopus-server-linux-container/index.mdx b/src/pages/docs/installation/octopus-server-linux-container/index.mdx index 410a810967..402d98b5d5 100644 --- a/src/pages/docs/installation/octopus-server-linux-container/index.mdx +++ b/src/pages/docs/installation/octopus-server-linux-container/index.mdx @@ -3,7 +3,7 @@ layout: src/layouts/Default.astro pubDate: 2023-01-01 modDate: 2024-07-15 title: Octopus Server Linux Container -description: Running the Octopus Server in the official Docker Linux container +description: Run Octopus Deploy in the official Docker Linux container. Pull the image, configure environment variables, connect a SQL Server database, and get started. navOrder: 8 hideInThisSection: true --- diff --git a/src/pages/docs/installation/octopus-server-linux-container/migration/index.md b/src/pages/docs/installation/octopus-server-linux-container/migration/index.md index eaf147cb10..81cf1eabef 100644 --- a/src/pages/docs/installation/octopus-server-linux-container/migration/index.md +++ b/src/pages/docs/installation/octopus-server-linux-container/migration/index.md @@ -2,8 +2,8 @@ layout: src/layouts/Default.astro pubDate: 2023-01-01 modDate: 2023-01-01 -title: Migration -description: How to migrate from an Octopus Server instance running on Windows Server or in a Windows Container to one running in a Linux Container. +title: Migrate Octopus Server to a Linux Container +description: Move your Octopus Server instance from Windows Server or a Windows container to the Linux container image. Choose the migration path for your current setup. navOrder: 90 hideInThisSectionHeader: true --- diff --git a/src/pages/docs/installation/octopus-server-linux-container/migration/migrate-to-server-container-linux-from-windows-container.mdx b/src/pages/docs/installation/octopus-server-linux-container/migration/migrate-to-server-container-linux-from-windows-container.mdx index 9d8db71b02..16aec7ffd6 100644 --- a/src/pages/docs/installation/octopus-server-linux-container/migration/migrate-to-server-container-linux-from-windows-container.mdx +++ b/src/pages/docs/installation/octopus-server-linux-container/migration/migrate-to-server-container-linux-from-windows-container.mdx @@ -2,8 +2,8 @@ layout: src/layouts/Default.astro pubDate: 2023-01-01 modDate: 2025-05-19 -title: Migrate to Octopus Server Linux Container from Windows Container -description: A guide on how to migrate to the Octopus Server Linux Container from the Octopus Server Windows Container +title: Migrate Octopus Windows Container to Linux +description: Move Octopus Server from the Windows container image to the Linux container. Follow the migration guide to transfer your database backup and configuration. navOrder: 20 --- import MigrateFromWindowsToLinuxContainer from 'src/shared-content/installation/migrate-from-windows-to-linux-container.include.md'; diff --git a/src/pages/docs/installation/octopus-server-linux-container/migration/migrate-to-server-container-linux-from-windows-server.mdx b/src/pages/docs/installation/octopus-server-linux-container/migration/migrate-to-server-container-linux-from-windows-server.mdx index 6771849d35..525d88a88b 100644 --- a/src/pages/docs/installation/octopus-server-linux-container/migration/migrate-to-server-container-linux-from-windows-server.mdx +++ b/src/pages/docs/installation/octopus-server-linux-container/migration/migrate-to-server-container-linux-from-windows-server.mdx @@ -2,8 +2,8 @@ layout: src/layouts/Default.astro pubDate: 2023-01-01 modDate: 2025-05-19 -title: Migrate to Octopus Server Linux Container from Windows Server -description: A guide on how to migrate to the Octopus Server Linux Container from Octopus Server running on a Windows Server +title: Migrate from Windows Server to Linux Container +description: Move Octopus Server from a Windows Server installation to the Linux container image. Follow the step-by-step migration guide to transfer your data and config. navOrder: 10 --- import MigrateFromWindowsToLinuxContainer from 'src/shared-content/installation/migrate-from-windows-to-linux-container.include.md'; diff --git a/src/pages/docs/installation/octopus-server-linux-container/octopus-in-kubernetes.mdx b/src/pages/docs/installation/octopus-server-linux-container/octopus-in-kubernetes.mdx index a9d87603da..12e59d9644 100644 --- a/src/pages/docs/installation/octopus-server-linux-container/octopus-in-kubernetes.mdx +++ b/src/pages/docs/installation/octopus-server-linux-container/octopus-in-kubernetes.mdx @@ -2,8 +2,8 @@ layout: src/layouts/Default.astro pubDate: 2023-01-01 modDate: 2024-04-23 -title: Octopus Server in Kubernetes -description: Octopus can be installed into a Kubernetes cluster running the Octopus Server Linux container, optionally leveraging High Availability (HA). +title: Run Octopus Server in Kubernetes +description: Install Octopus Server into a Kubernetes cluster using the official Linux container. Choose a single-node setup or High Availability across multiple pods. navOrder: 40 --- import HighAvailabilityDatabaseRecommendations from 'src/shared-content/administration/high-availability-database-recommendations.include.md'; diff --git a/src/pages/docs/installation/octopus-server-linux-container/systemd-service-definition.md b/src/pages/docs/installation/octopus-server-linux-container/systemd-service-definition.md index 14005188ba..51b240ce66 100644 --- a/src/pages/docs/installation/octopus-server-linux-container/systemd-service-definition.md +++ b/src/pages/docs/installation/octopus-server-linux-container/systemd-service-definition.md @@ -2,8 +2,8 @@ layout: src/layouts/Default.astro pubDate: 2023-01-01 modDate: 2023-01-01 -title: Octopus Server Container with systemd -description: Using systemd, you can have the Octopus Server Linux Container running in Docker each time the OS starts on your host machine. +title: Run Octopus Server Container with systemd +description: Configure systemd to start the Octopus Server Linux Container automatically when your host machine boots. Follow the service definition steps to get set up. navOrder: 20 --- diff --git a/src/pages/docs/installation/octopus-server-linux-container/troubleshooting-octopus-server-in-a-container.md b/src/pages/docs/installation/octopus-server-linux-container/troubleshooting-octopus-server-in-a-container.md index 75fa262229..ec910aea12 100644 --- a/src/pages/docs/installation/octopus-server-linux-container/troubleshooting-octopus-server-in-a-container.md +++ b/src/pages/docs/installation/octopus-server-linux-container/troubleshooting-octopus-server-in-a-container.md @@ -2,8 +2,8 @@ layout: src/layouts/Default.astro pubDate: 2023-01-01 modDate: 2023-01-01 -title: Troubleshooting Octopus Server in a Container -description: Troubleshooting steps for running Octopus in a Container +title: Troubleshoot Octopus Server in a container +description: Fix common issues with the Octopus Server Linux container. Find solutions for startup failures, database connection errors, and Docker configuration problems. navOrder: 100 --- diff --git a/src/pages/docs/installation/permissions-for-the-octopus-windows-service.md b/src/pages/docs/installation/permissions-for-the-octopus-windows-service.md index 2546628bb1..bdcc4feccc 100644 --- a/src/pages/docs/installation/permissions-for-the-octopus-windows-service.md +++ b/src/pages/docs/installation/permissions-for-the-octopus-windows-service.md @@ -2,8 +2,8 @@ layout: src/layouts/Default.astro pubDate: 2023-01-01 modDate: 2023-01-01 -title: Permissions for the Octopus Windows Service -description: Information about the permissions required by the Octopus Windows service to operate. +title: Octopus Windows Service permissions +description: Review the Windows permissions required to run the Octopus Deploy Windows service. Learn which accounts work, what access they need, and how to configure them. navOrder: 5 --- diff --git a/src/pages/docs/installation/requirements.mdx b/src/pages/docs/installation/requirements.mdx index 8a2a60d7bc..c0a4212e40 100644 --- a/src/pages/docs/installation/requirements.mdx +++ b/src/pages/docs/installation/requirements.mdx @@ -2,8 +2,8 @@ layout: src/layouts/Default.astro pubDate: 2023-01-01 modDate: 2026-04-27 -title: Installation requirements -description: Software and hardware requirements for installing the Octopus Server. +title: Octopus Server installation requirements +description: Check the minimum hardware, OS, and software requirements before you install Octopus Server. Covers Windows, Linux containers, SQL Server 2016+, and storage. navOrder: 1 --- import OctopusReleases from 'src/shared-content/installation/octopus-releases.include.md'; diff --git a/src/pages/docs/installation/sql-database/aws-rds.mdx b/src/pages/docs/installation/sql-database/aws-rds.mdx index ff37e577df..0ef49248e8 100644 --- a/src/pages/docs/installation/sql-database/aws-rds.mdx +++ b/src/pages/docs/installation/sql-database/aws-rds.mdx @@ -2,8 +2,8 @@ layout: src/layouts/Default.astro pubDate: 2023-01-01 modDate: 2024-05-22 -title: AWS RDS -description: Guidelines and recommendations for configuring AWS RDS to host the Octopus Deploy Database. +title: AWS RDS for the Octopus Deploy database +description: Host your Octopus Deploy database on AWS RDS. Review supported SQL Server editions, instance sizing, and configuration requirements before you get set up. navOrder: 20 hideInThisSection: true --- diff --git a/src/pages/docs/installation/sql-database/azure-sql.mdx b/src/pages/docs/installation/sql-database/azure-sql.mdx index 3d01ca3f69..4635efd422 100644 --- a/src/pages/docs/installation/sql-database/azure-sql.mdx +++ b/src/pages/docs/installation/sql-database/azure-sql.mdx @@ -2,9 +2,9 @@ layout: src/layouts/Default.astro pubDate: 2023-01-01 modDate: 2024-05-22 -title: Azure SQL +title: Azure SQL for the Octopus Deploy database navTitle: Azure SQL -description: Guidelines and recommendations for configuring Azure SQL to host the Octopus Deploy Database. +description: Host your Octopus Deploy database on Azure SQL. Review supported service tiers, sizing recommendations, and configuration steps before you get started. navOrder: 30 hideInThisSection: true --- diff --git a/src/pages/docs/installation/sql-database/gcp-cloud-sql.mdx b/src/pages/docs/installation/sql-database/gcp-cloud-sql.mdx index 05f0080e3e..086cc90490 100644 --- a/src/pages/docs/installation/sql-database/gcp-cloud-sql.mdx +++ b/src/pages/docs/installation/sql-database/gcp-cloud-sql.mdx @@ -2,8 +2,8 @@ layout: src/layouts/Default.astro pubDate: 2023-01-01 modDate: 2024-05-22 -title: GCP Cloud SQL -description: Guidelines and recommendations for configuring GCP Cloud SQL to host the Octopus Deploy Database. +title: GCP Cloud SQL for the Octopus Deploy database +description: Host your Octopus Deploy database on Google Cloud SQL. Review supported SQL Server editions, instance requirements, and configuration steps to get started. navOrder: 40 hideInThisSection: true --- diff --git a/src/pages/docs/installation/sql-database/index.mdx b/src/pages/docs/installation/sql-database/index.mdx index ff232ea34b..39d2ca9b93 100644 --- a/src/pages/docs/installation/sql-database/index.mdx +++ b/src/pages/docs/installation/sql-database/index.mdx @@ -2,11 +2,11 @@ layout: src/layouts/Default.astro pubDate: 2023-01-01 modDate: 2024-05-01 -title: SQL Database +title: SQL Server database for Octopus Deploy navTitle: Overview navSection: SQL Database navOrder: 2 -description: Information about using SQL Server Database with Octopus Deploy. +description: Set up the SQL Server database that Octopus Deploy requires. Choose self-managed SQL Server, AWS RDS, Azure SQL, or GCP Cloud SQL, and follow the setup guide. hideInThisSection: true --- import Sql from 'src/shared-content/installation/sql.include.md'; diff --git a/src/pages/docs/installation/sql-database/self-managed-sql-server.md b/src/pages/docs/installation/sql-database/self-managed-sql-server.md index 8cdfa43345..a8ae7bdfba 100644 --- a/src/pages/docs/installation/sql-database/self-managed-sql-server.md +++ b/src/pages/docs/installation/sql-database/self-managed-sql-server.md @@ -2,8 +2,8 @@ layout: src/layouts/Default.astro pubDate: 2023-01-01 modDate: 2024-05-22 -title: Self-Managed SQL Server -description: Guidelines and recommendations for configuring Octopus Deploy to use a self-managed SQL Server. +title: Self-managed SQL Server for Octopus Deploy +description: Configure a self-managed SQL Server to host your Octopus Deploy database. Review server edition, collation, authentication, and permission requirements. navOrder: 10 hideInThisSection: true --- diff --git a/src/pages/docs/installation/troubleshooting.md b/src/pages/docs/installation/troubleshooting.md index e172cf0fb0..5c700de957 100644 --- a/src/pages/docs/installation/troubleshooting.md +++ b/src/pages/docs/installation/troubleshooting.md @@ -2,8 +2,8 @@ layout: src/layouts/Default.astro pubDate: 2023-01-01 modDate: 2023-01-01 -title: Troubleshooting the Octopus installation -description: Troubleshooting steps for installing Octopus Deploy +title: Troubleshoot Octopus installation issues +description: Fix common Octopus Server installation errors. Find solutions for database connection failures, port conflicts, Windows service issues, and permission problems. navOrder: 7 --- In a few cases a bug in a 3rd party component causes the installer to display an "Installation directory must be on a local hard drive" error. If this occurs, run the install again from an elevated command prompt using the following command (replacing `Octopus.3.3.4-x64.msi` with the name of the installer you are using): diff --git a/src/themes/octopus/components/Authors.astro b/src/themes/octopus/components/Authors.astro index 2786cd7570..1e13330254 100644 --- a/src/themes/octopus/components/Authors.astro +++ b/src/themes/octopus/components/Authors.astro @@ -55,6 +55,9 @@ stats.stop(); > 1/`, + // not `/1/`, under SITE.useTrailingUrlSlash = false. + // Dormant: no author pages exist yet. accelerator.urlFormatter.formatAddress( authorList.mainAuthor.url ) + '1/' diff --git a/src/themes/octopus/components/HtmlHead.astro b/src/themes/octopus/components/HtmlHead.astro index 2dbf2d1585..7549ba8f59 100644 --- a/src/themes/octopus/components/HtmlHead.astro +++ b/src/themes/octopus/components/HtmlHead.astro @@ -3,6 +3,7 @@ import { Accelerator } from 'astro-accelerator-utils'; import type { Frontmatter } from 'astro-accelerator-utils/types/Frontmatter'; import { SITE, OPEN_GRAPH, HEADER_SCRIPTS } from '@config'; import { getEligibleSlugs } from '@util/mdxContent'; +import JsonLd from '@components/JsonLd.astro'; const accelerator = new Accelerator(SITE); const stats = new accelerator.statistics('octopus/components/HtmlHead.astro'); @@ -123,5 +124,12 @@ stats.stop(); {pageMeta.map((m) => )} {authorMeta.map((m) => )} + diff --git a/src/themes/octopus/components/JsonLd.astro b/src/themes/octopus/components/JsonLd.astro new file mode 100644 index 0000000000..97b7f5d709 --- /dev/null +++ b/src/themes/octopus/components/JsonLd.astro @@ -0,0 +1,105 @@ +--- +import type { Frontmatter } from 'astro-accelerator-utils/types/Frontmatter'; +import type { AuthorList } from 'astro-accelerator-utils/types/AuthorList'; +import { STRUCTURED_DATA } from '@config'; +import { + buildArticle, + buildOrganization, + buildPersonNodes, + buildWebSite, + cleanHeadline, + escapeJsonForScript, + isStructuredDataEligible, + pickArticleType, + toGraphPayload, + type GraphNode, +} from '@util/structured-data'; + +type Props = { + frontmatter: Frontmatter; + canonicalURL: string; + socialTitle: string; + imageURL?: string; + authors?: AuthorList | null; +}; + +const { frontmatter, canonicalURL, socialTitle, imageURL, authors } = + Astro.props; + +type Payload = ReturnType; + +// Warns each path once per worker (Astro can use multiple workers). +declare global { + // eslint-disable-next-line no-var + var __jsonLdWarnedPaths: Set | undefined; +} +const warnedPaths = (globalThis.__jsonLdWarnedPaths ??= new Set()); + +function normalizePathname(pathname: string): string { + return pathname.length > 1 && pathname.endsWith('/') + ? pathname.slice(0, -1) + : pathname; +} + +function pathnameFromCanonical(canonical: string, fallback: string): string { + try { + return new URL(canonical).pathname; + } catch { + return fallback; + } +} + +function buildPayload(): Payload | null { + if (!STRUCTURED_DATA.enabled) return null; + if (!isStructuredDataEligible(frontmatter)) return null; + + const pathname = normalizePathname( + pathnameFromCanonical(canonicalURL, Astro.url.pathname) + ); + const articleType = pickArticleType(pathname, frontmatter); + const headline = cleanHeadline(socialTitle); + + // Author branch is unreachable today (no author pages); kept wired. + const mainAuthor = + authors && authors.writers.length > 0 && authors.mainAuthor + ? (buildPersonNodes([authors.mainAuthor])[0] ?? null) + : null; + const contributors = + authors && authors.writers.length > 0 + ? buildPersonNodes(authors.contributors) + : []; + + const article = buildArticle({ + frontmatter, + canonicalURL, + articleType, + headline, + imageURL, + mainAuthor, + contributors, + }); + if (!article) { + if (!warnedPaths.has(pathname)) { + warnedPaths.add(pathname); + console.warn(`[JsonLd] eligible page produced no Article: ${pathname}`); + } + return null; + } + + const nodes: GraphNode[] = [article, buildWebSite(), buildOrganization()]; + return toGraphPayload(nodes); +} + +const payload = buildPayload(); +--- + +{/* Safe: payload is escaped by escapeJsonForScript. */} +{ + payload && ( + ,