Skip to content

Commit

Permalink
Add dev-docs prototype
Browse files Browse the repository at this point in the history
  • Loading branch information
SimonBaeumer committed Aug 21, 2024
1 parent d50eb95 commit 47fb5dc
Show file tree
Hide file tree
Showing 50 changed files with 16,344 additions and 0 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -73,3 +73,6 @@ $RECYCLE.BIN/
*.lnk

# End of https://www.toptal.com/developers/gitignore/api/macos,windows,linux

# IDE
.idea
20 changes: 20 additions & 0 deletions docs/dev-docs/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Dependencies
/node_modules

# Production
/build

# Generated files
.docusaurus
.cache-loader

# Misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local

npm-debug.log*
yarn-debug.log*
yarn-error.log*
41 changes: 41 additions & 0 deletions docs/dev-docs/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# Website

This website is built using [Docusaurus](https://docusaurus.io/), a modern static website generator.

### Installation

```
$ yarn
```

### Local Development

```
$ yarn start
```

This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server.

### Build

```
$ yarn build
```

This command generates static content into the `build` directory and can be served using any static contents hosting service.

### Deployment

Using SSH:

```
$ USE_SSH=true yarn deploy
```

Not using SSH:

```
$ GIT_USER=<Your GitHub username> yarn deploy
```

If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch.
3 changes: 3 additions & 0 deletions docs/dev-docs/babel.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
module.exports = {
presets: [require.resolve('@docusaurus/core/lib/babel/preset')],
};
12 changes: 12 additions & 0 deletions docs/dev-docs/blog/2019-05-28-first-blog-post.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
slug: first-blog-post
title: First Blog Post
authors: [slorber, yangshun]
tags: [hola, docusaurus]
---

Lorem ipsum dolor sit amet...

<!-- truncate -->

...consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
44 changes: 44 additions & 0 deletions docs/dev-docs/blog/2019-05-29-long-blog-post.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
---
slug: long-blog-post
title: Long Blog Post
authors: yangshun
tags: [hello, docusaurus]
---

This is the summary of a very long blog post,

Use a `<!--` `truncate` `-->` comment to limit blog post size in the list view.

<!-- truncate -->

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
24 changes: 24 additions & 0 deletions docs/dev-docs/blog/2021-08-01-mdx-blog-post.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
---
slug: mdx-blog-post
title: MDX Blog Post
authors: [slorber]
tags: [docusaurus]
---

Blog posts support [Docusaurus Markdown features](https://docusaurus.io/docs/markdown-features), such as [MDX](https://mdxjs.com/).

:::tip

Use the power of React to create interactive blog posts.

:::

{/* truncate */}

For example, use JSX to create an interactive button:

```js
<button onClick={() => alert('button clicked!')}>Click me!</button>
```

<button onClick={() => alert('button clicked!')}>Click me!</button>
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
29 changes: 29 additions & 0 deletions docs/dev-docs/blog/2021-08-26-welcome/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
---
slug: welcome
title: Welcome
authors: [slorber, yangshun]
tags: [facebook, hello, docusaurus]
---

[Docusaurus blogging features](https://docusaurus.io/docs/blog) are powered by the [blog plugin](https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-blog).

Here are a few tips you might find useful.

<!-- truncate -->

Simply add Markdown files (or folders) to the `blog` directory.

Regular blog authors can be added to `authors.yml`.

The blog post date can be extracted from filenames, such as:

- `2019-05-30-welcome.md`
- `2019-05-30-welcome/index.md`

A blog post folder can be convenient to co-locate blog post images:

![Docusaurus Plushie](./docusaurus-plushie-banner.jpeg)

The blog supports tags as well!

**And if you don't want a blog**: just delete this directory, and use `blog: false` in your Docusaurus config.
23 changes: 23 additions & 0 deletions docs/dev-docs/blog/authors.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
yangshun:
name: Yangshun Tay
title: Front End Engineer @ Facebook
url: https://github.com/yangshun
image_url: https://github.com/yangshun.png
page: true
socials:
x: yangshunz
github: yangshun

slorber:
name: Sébastien Lorber
title: Docusaurus maintainer
url: https://sebastienlorber.com
image_url: https://github.com/slorber.png
page:
# customize the url of the author page at /blog/authors/<permalink>
permalink: '/all-sebastien-lorber-articles'
socials:
x: sebastienlorber
linkedin: sebastienlorber
github: slorber
newsletter: https://thisweekinreact.com
19 changes: 19 additions & 0 deletions docs/dev-docs/blog/tags.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
facebook:
label: Facebook
permalink: /facebook
description: Facebook tag description

hello:
label: Hello
permalink: /hello
description: Hello tag description

docusaurus:
label: Docusaurus
permalink: /docusaurus
description: Docusaurus tag description

hola:
label: Hola
permalink: /hola
description: Hola tag description
47 changes: 47 additions & 0 deletions docs/dev-docs/docs/intro.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
---
sidebar_position: 1
---

# Tutorial Intro

Let's discover **Docusaurus in less than 5 minutes**.

## Getting Started

Get started by **creating a new site**.

Or **try Docusaurus immediately** with **[docusaurus.new](https://docusaurus.new)**.

### What you'll need

- [Node.js](https://nodejs.org/en/download/) version 18.0 or above:
- When installing Node.js, you are recommended to check all checkboxes related to dependencies.

## Generate a new site

Generate a new Docusaurus site using the **classic template**.

The classic template will automatically be added to your project after you run the command:

```bash
npm init docusaurus@latest my-website classic
```

You can type this command into Command Prompt, Powershell, Terminal, or any other integrated terminal of your code editor.

The command also installs all necessary dependencies you need to run Docusaurus.

## Start your site

Run the development server:

```bash
cd my-website
npm run start
```

The `cd` command changes the directory you're working with. In order to work with your newly created Docusaurus site, you'll need to navigate the terminal there.

The `npm run start` command builds your website locally and serves it through a development server, ready for you to view at http://localhost:3000/.

Open `docs/intro.md` (this page) and edit some lines: the site **reloads automatically** and displays your changes.
8 changes: 8 additions & 0 deletions docs/dev-docs/docs/stackrox/_category_.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"label": "StackRox Development",
"position": 4,
"link": {
"type": "generated-index",
"description": "5 minutes to learn the most important Docusaurus concepts."
}
}
110 changes: 110 additions & 0 deletions docs/dev-docs/docs/stackrox/debugging-go-code-running-in-Kubernetes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
---
sidebar_position: 1
---

# Debugging go code running in Kubernetes

This tells how to prepare code and GoLand IDE to debug Go code of the
application running on the cluster.

It works with minikube and GKE/Infra clusters.

It should be possible to use other debugging UIs/front-ends but wasn’t
tested.

## Instructions

Main instructions are available here:
https://github.com/stackrox/stackrox#debugging

If you’re using GoLand, get familiar with its
<a href="https://www.jetbrains.com/help/go/debugging-code.html" class="external-link">features</a>
available for debugging.

## Use GoLand for remote debugging

1. **One-time setup**
In GoLand open `Run | Edit Configurations …`, click on the `+` icon
to add new configuration, choose `Go Remote` template.
Give configuration some name, chose `Host:` `localhost` and `Port:`
`40000`.
Select `On disconnect:` option `Leave it running`.

![Screenshot of JetBrains "New Run/Debug Configuration](./img/1917714453.png)


2. **Connect to remote debugger**
Make sure remote debugger is launched/attached and port forwarding
is enabled. See corresponding
<a href="https://github.com/stackrox/stackrox#debugging" class="external-link">section in README.md</a>.
Next, select `Run | Debug…` and select Go Remote configuration
you’ve created.

![Screenshot of "Run|Debug" Dialog](./img/1840349325.png)

If all done right, you should see `Connected` message in the
`Debug | Debugger | Variables` window

![Screenshot of JetBrains IDE "Debug" tab](./img/1847165064.png)

Don’t forget to set up some code breakpoints.

3. **Stopping debugger**
When hitting the stop button in GoLand, you may be asked if you want to stop the `dlv` debugger instance. It is recommended to choose `No` because otherwise GoLand may start missing breakpoints.

![Screenshot of "Stop Remove Delve" modal](./img/1917714465.png)

Next, you may be asked if you want to kill the process where
debugger was attached. It is recommended to choose `No` because
otherwise you’d have to restart the pod.

![Screenshot of "Kill Remote Process" modal](./img/1912471688.png)


## Caveats / what to expect / troubleshoot

- Update your GoLand.
<a href="https://www.jetbrains.com/toolbox-app/" class="external-link">JetBrains Toolbox</a>
is a good tool for this. GoLand's support for debugging is
relatively new, and stability fixes usually come with new IDE
releases.

- After you disconnect GoLand (or it gets disconnected because of
a process crash, etc.) and then reconnect, sometimes it happens
that GoLand does not stop on breakpoints even though you know it
must. I wasn’t able to trace the origin, but here’s what may help:

- Restart GoLand via
`File | Invalidate Caches… | Just Restart`.

- Occasionally, when stepping through, the debugged process crashes
(with abort signal in logs) and GoLand shows a dialog what to do
when disconnecting from it. If that happens, you’ll need to delete
the pod so that the process can be started again.
This happens when you run into a section protected by `mutex_dev`
and spend there more than 5 seconds, see
https://github.com/stackrox/stackrox/blob/master/pkg/sync/mutex_dev.go.
You may want to override `MUTEX_WATCHDOG_TIMEOUT_SECS=0`
environment variable on debugged deployment (or temporarily
comment-out `kill()` line) to prevent pods from getting killed.

- Breakpoints suspend execution of all goroutines and so pod lifecycle
probes might fail if the execution is suspended for too long. Make
sure you’re familiar with effects of failing probes -
https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes
and you know which probes are configured for the pod you’re
debugging.

- If the Central pod crashed and restarted, you’ll have to
re-establish port forward to be able to reach StackRox UI and/or
back-end. Use
`kubectl -n stackrox port-forward svc/central 8000:443 &` for this.

## References

- https://golang.org/cmd/link/
- On `-gcflags` option:
- https://golang.org/cmd/go/
- https://golang.org/cmd/compile/
- https://itnext.io/debug-a-go-application-in-kubernetes-from-ide-c45ad26d8785
- https://hackernoon.com/debugging-go-application-inside-kubernetes-from-ide-h5683xeb
Loading

0 comments on commit 47fb5dc

Please sign in to comment.