blob: 56bc43f5c984e10b69644789aaff95c3ac293a3a [file] [view]
# Apache SkyWalking Website
This is the repository including all source codes of `https://skywalking.apache.org`.
## Preview and generate static files
This site was compiled using [Hugo](https://gohugo.io).
1. Install [Hugo](https://gohugo.io/installation/)
2. Pull this repo into your local environment, and run `npm install` to install the required libraries (without pulling the project documentation).
3. Run `hugo server` at the root folder, you can see the site preview from http://localhost:1313
4. To generate the static website, run `npm run build` for the whole website. Run `npm run build-with-docs` if you want to build the project documentations.
## Contributing
This guide will guide you on how to contribute to the site.
This site uses [Hugo](https://gohugo.io) to organize and manage content with the following sections are available:
### Homepage
Located at `content/_index.html`。
### Projects and Documentation
The data of documentation link is located in `data/docs.yml` and formated as `YAML`.
#### Search Engine
Update the [config file](https://github.com/algolia/docsearch-configs/blob/master/configs/skywalking.json) everytime, so that a new documentation version will be available searched by [algolia](https://www.algolia.com/).
#### AI Docs Q&A
Release managers of SkyWalking projects should use the Kapa.ai [dashboard](https://app.kapa.ai/) to sync and ingest new documentation/blogs/FAQs if needed, or set up automatic refresh (crawling) of the Q&A sources.
If you need access to the dashboard, contact @superskyyy for an invitation.
### Event
Located at `content/events`. If you don't want to create a new blog, you need to create a new subdirectory under this directory. Here is a sample event below.
```yaml
---
title: This is a title
date: 2020-04-28
author: Author
description: This is description.
# endTime: 2021-04-24T23:59:59Z
# startTime: 2021-04-22T00:00:00Z
# buttonText: Go
# img: /images/skywalking_200x200.png
---
Content
```
If you want to display the summary in the popover in the lower right corner, you need to configure a parameter `endTime`. The parameters are as follows.
|Parameter|Description|Required|Default|
|----|----|----|----|
|endTime|End time|true|-|
|startTime|Start time|false|Current time|
|buttonText|Button text|false|Read more|
|img|The illustration|false|/images/skywalking_200x200.png|
|poster|The poster|false|-|
### Community Calendar
Located at `data/talks.yml`, rendered at `/events/calendar/`. This is where conference
talks, meetups and summits go — the release timeline at `/events/` is driven by
`content/events` instead, and the two do not mix.
To add or update a talk, edit `data/talks.yml` and open a pull request. You can do it
entirely in the browser: use the **Add your talk** link on the calendar page, or the
GitHub *Edit* button on the file. No local Hugo setup needed.
```yaml
events:
- event: Community Over Code Asia 2026
intro: >-
One or two sentences on what this conference is, for readers who
have never heard of it.
start: "2026-08-07"
end: "2026-08-09" # omit for a single-day event
location: Beijing, China # or "Online"
venue: Mountain Yang Hall # optional
url: https://asia.communityovercode.org
recap: /zh/2023-08-20-coc-asia-2023/ # optional, a recap post on this site
talks:
- title: "Observing LLM Applications with SkyWalking 10.4"
speaker: 邵一鸣 YiMing Shao
date: "2026-08-09" # only when it differs from the event start
time: 13:30 GMT+8
room: Mountain Yang Hall
url: https://asia.communityovercode.org/sessions/observability-1206017.html
video: https://www.bilibili.com/video/BVxxxxxxxxx
intro: >-
One or two sentences on what the session covers, in the same
language as the title.
```
Event fields:
|Parameter|Description|Required|Default|
|----|----|----|----|
|event|Conference / meetup name|true|-|
|start|Start date, `"YYYY-MM-DD"`, zero-padded|true|-|
|end|End date, for multi-day events|false|`start`|
|location|`City, Country`, or `Online`|true|-|
|venue|Venue name|false|-|
|intro|What this conference is, in one or two sentences|true|-|
|url|Event home page. Omit rather than guess|false|-|
|recap|Link to a recap post on this site|false|-|
|talks|One or more sessions|true|-|
Session fields, under `talks`:
|Parameter|Description|Required|Default|
|----|----|----|----|
|title|Session title|true|-|
|speaker|Speaker name. Use `中文名 English Name` when both are known|true|-|
|intro|What the session covers. Condense the published abstract; don't invent one|false|-|
|date|Session day, when it differs from the event `start`|false|`start`|
|time|e.g. `13:30 GMT+8`|false|-|
|room|Room name|false|-|
|url|Session page|false|-|
|video|Recording|false|-|
|slides|Slide deck|false|-|
Two things happen on their own, so you don't need to maintain them:
- **Upcoming vs. past** is decided at build time from the event's `end` date, and the
site rebuilds daily, so an event moves itself into the past section once it is over.
- **The year pager** under *Past* builds its year buttons and counts from the data, so
a new year appears as soon as an event needs it.
If a required field is missing, or a date isn't in `YYYY-MM-DD` form, the build fails
with a message naming the offending event — so a broken entry shows up as a failed
check on the pull request rather than as a blank card on the site.
### Feeds
| Feed | Contents |
|----|----|
|`/blog/feed.xml`|English blog|
|`/zh/feed.xml`|中文博客|
|`/events/feed.xml`|Releases and events|
|`/feed.xml`|Combined blog + events|
|`/events/calendar/index.ics`|Community calendar, subscribable in a calendar app|
RSS is opt-in per section via `outputs` in that section's `_index.md`, not through
`[outputs] section` in `config.toml`, which would also build a feed for `docs`.
`rss_sections` and `rss_limit` in `config.toml` control the combined feed and the
window size. The template is `layouts/_default/list.rss.xml`.
The calendar feed is generated from `data/talks.yml` by
`layouts/events/calendar.calendar.ics`. Use the `webcal://` link on the calendar
page to subscribe — downloading the `.ics` imports a snapshot that never updates.
### Blog
Located at `content/blog`. If you want to create a new blog, you need to create a new subdirectory under this directory. Here is a sample blog below.
```yaml
---
title: This is a title
date: 2020-04-28
author: Author
description: This is description.
---
Content
```
### Downloads
The data of release is located in `data/releases.yml` and formated as `YAML`.
The data of docker image is located in `data/dockerImages.yml` and formated as `YAML`.
### Team
This is a single page located at `content/team/_index.md`.
### 中文博客
Located at `content/zh`. If you want to create a new blog, you need to create a new subdirectory under this directory. Here is a sample blog below.
```yaml
---
title: 博客标题
date: 2020-04-28
author: 作者姓名
description: 博客摘要
---
博客正文。
```
### User Wall
All user information are in `/data/users.yml`. Users are encouraged to add themselves to this page.
### Links
Configure in the `config.toml` file.
### Website Configuration
The website configuration file is located at `config.toml`.
### Images
The images within the blogs, events and 中文博客 should be kept at the same folder as the blog file, and you should reference them with the relative path.