diff --git a/src/pages/docs.mdx b/src/pages/docs.mdx
index 717a260dab..481cf9215f 100644
--- a/src/pages/docs.mdx
+++ b/src/pages/docs.mdx
@@ -5,6 +5,7 @@ modDate: 2024-03-18
title: Hello, Octopus Deploy! đź‘‹
subtitle: Best-of-breed Continuous Delivery
navTitle: Introduction
+crumbTitle: Docs
description: Need help with Octopus Deploy? Check out our comprehensive documentation covering everything from getting started to advanced issues and features.``
navOrder: 0
---
@@ -19,14 +20,14 @@ Octopus Deploy is a sophisticated, best-of-breed continuous delivery (CD) platfo
Octopus has a modern, friendly user experience that makes it easy for your teams to self-service application releases, and democratizes how you deliver software. Octopus also has a comprehensive API - anything the UI can do, the API can do too.
-Octopus takes over where your CI server ends, modelling the entire release orchestration process of software. This includes:
+Octopus takes over where your CI server ends, modelling the entire release orchestration process of software. This includes:
- Release versioning
- Environment promotion (beyond simple dev/test/prod workflows)
- Deployment automation
- Progressive software delivery (rolling deployments, blue/green, canary)
- Configuration management
-- Approvals & ITSM integration
+- Approvals & ITSM integration
- Deployment freezes
- Coordinating deployments across projects and their dependencies
@@ -45,11 +46,11 @@ Built by experienced DevOps practitioners over a decade, and battle tested by th
- Consistency across processes, teams and environments
- Pragmatic use of version control and GitOps
-### Why do I need Octopus, I have a CI/CD tool
+## Why do I need Octopus, I have a CI/CD tool
On most teams, continuous integration (CI) or build automation is a solved problem. Great options like GitHub Actions, GitLab CI, Jenkins, TeamCity, BuildKite, and Azure DevOps exist and are widely used by teams today.
-These systems are all designed in a similar way - they monitor source code repositories for changes, compile code, run unit tests, and give software developers fast feedback on their code changes.
+These systems are all designed in a similar way - they monitor source code repositories for changes, compile code, run unit tests, and give software developers fast feedback on their code changes.
For most of these systems, the CD functionality often just means they provide some ability to call a deployment script that you provide - the deployment script is up to you. They might also provide some way to model simple dev/test/production promotion workflows by calling a different deployment script for each environment.
@@ -61,15 +62,15 @@ When a software team is starting out, this “put your deployment script here”
Decoupling the CI platform from the CD platform allows teams to bring their favorite CI tool - and most organizations have more than one - while we focus on giving you the most powerful best-of-breed CD capabilities. Octopus integrates with popular CI tools like GitHub Actions, Jenkins or TeamCity, letting them do what they do best - the CI part of the feedback loop. Octopus then takes over “artifact-forward”, and handles the release and deployment aspects of CD in advanced ways that no CI/CD tool can.
-We promise that when using Octopus, compared to a generic CI/CD tool, you’ll spend 1/10th the amount of time building DIY shadow CD glue, and more time shipping new features and delivering valuable software to production.
+We promise that when using Octopus, compared to a generic CI/CD tool, you'll spend 1/10th the amount of time building DIY shadow CD glue, and more time shipping new features and delivering valuable software to production.
-### Getting Started
+## Getting Started
-Octopus is easy to get started with - you can go from zero to fully automating your deployments in minutes.
+Octopus is easy to get started with - you can go from zero to fully automating your deployments in minutes.
For a tour of the key Octopus concepts, begin with our [Getting Started](/docs/getting-started) guide.
-If you deliver software to Kubernetes, our [Kubernetes overview](/docs/deployments/kubernetes) is a good starting point.
+If you deliver software to Kubernetes, our [Kubernetes overview](/docs/deployments/kubernetes) is a good starting point.
If you enjoy learning via video, the Octopus 101 recording below also serves as a great introduction to the key Octopus concepts in the context of modern deployments.
@@ -90,4 +91,4 @@ Happy deployments!
## Recent changes
-
\ No newline at end of file
+
diff --git a/src/themes/octopus/components/Breadcrumbs.astro b/src/themes/octopus/components/Breadcrumbs.astro
index 81401192d9..6357004411 100644
--- a/src/themes/octopus/components/Breadcrumbs.astro
+++ b/src/themes/octopus/components/Breadcrumbs.astro
@@ -1,9 +1,14 @@
---
import { Accelerator } from 'astro-accelerator-utils';
-import type { Frontmatter } from 'astro-accelerator-utils/types/Frontmatter';
+import type { Frontmatter as OriginalFrontmatter } from 'astro-accelerator-utils/types/Frontmatter';
import { SITE } from '@config';
import { Translations, Lang } from '@util/Languages';
+// Extend Frontmatter with crumbTitle
+type Frontmatter = OriginalFrontmatter & {
+ crumbTitle?: string;
+};
+
const accelerator = new Accelerator(SITE);
const stats = new accelerator.statistics(
'octopus/components/Breadcrumbs.astro'
@@ -30,12 +35,29 @@ const navPages = accelerator.navigation.breadcrumbs(
breadcrumbs?.length ?? 0
);
+const allPages = accelerator.posts.all();
+
+// Apply crumbTitle from frontmatter if available
for (let i = 0; i < navPages.length; i++) {
- navPages[i].title = navPages[i].section || navPages[i].title;
-}
+ const matchingPage = allPages.find((p) => {
+ const pageUrl = accelerator.urlFormatter.addSlashToAddress(p.url ?? '/');
+ return pageUrl === navPages[i].url;
+ });
-// The last breadcrumb should use the full name
-//navPages[navPages.length -1].title = navPages[navPages.length -1].fullTitle;
+ if (matchingPage) {
+ const fm = matchingPage.frontmatter as Frontmatter;
+ if (fm.crumbTitle) {
+ // Use crumbTitle if it's set in frontmatter
+ navPages[i].title = fm.crumbTitle;
+ } else {
+ // Fall back to original behavior
+ navPages[i].title = navPages[i].section || navPages[i].title;
+ }
+ } else {
+ // No matching page found, use original behavior
+ navPages[i].title = navPages[i].section || navPages[i].title;
+ }
+}
let metaIndex = navPages.length;