From d54a58871c6d3cba10197c53983479424d451942 Mon Sep 17 00:00:00 2001 From: guangbochen Date: Sat, 8 May 2021 12:24:02 +0800 Subject: [PATCH] update action and docs --- .github/workflows/publish.yml | 58 +++++++++++++++++----- README.md | 2 +- docs/authentication.md | 2 +- docs/development/_category_.json | 4 ++ docs/{ => development}/dev-mode.md | 2 +- docs/harvester-network.md | 11 +--- docs/import-image.md | 2 +- docs/installation/_category_.json | 2 +- docs/rancher-intergration/_category_.json | 2 +- docs/upgrade.md | 17 +++---- docs/vm-management/_category_.json | 2 +- docusaurus.config.js | 2 +- static/img/logo_horizontal.png | Bin 0 -> 8783 bytes 13 files changed, 68 insertions(+), 38 deletions(-) create mode 100644 docs/development/_category_.json rename docs/{ => development}/dev-mode.md (98%) create mode 100644 static/img/logo_horizontal.png diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 99b3deed..0e8035b3 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -1,19 +1,53 @@ -name: Publish Site +name: documentation + on: + pull_request: + branches: [main] push: - branches: - - main + branches: [main] + jobs: - build-deploy: + checks: + if: github.event_name != 'push' runs-on: ubuntu-latest steps: - - name: Checkout Repo - uses: actions/checkout@master + - uses: actions/checkout@v1 + - uses: actions/setup-node@v1 with: - submodules: true - - - name: Publish Site - uses: chabad360/hugo-gh-pages@master + node-version: '12.x' + - name: Test Build + run: | + if [ -e yarn.lock ]; then + yarn install --frozen-lockfile + elif [ -e package-lock.json ]; then + npm ci + else + npm i + fi + npm run build + gh-release: + if: github.event_name != 'pull_request' + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v1 + - uses: actions/setup-node@v1 + with: + node-version: '12.x' + - uses: webfactory/ssh-agent@v0.5.0 with: - githubToken: ${{ secrets.GITHUB_TOKEN }} - hugoVersion: extended_0.82.0 + ssh-private-key: ${{ secrets.GH_PAGES_DEPLOY }} + - name: Release to GitHub Pages + env: + USE_SSH: true + GIT_USER: git + run: | + git config --global user.email "actions@github.com" + git config --global user.name "gh-actions" + if [ -e yarn.lock ]; then + yarn install --frozen-lockfile + elif [ -e package-lock.json ]; then + npm ci + else + npm i + fi + npm run deploy diff --git a/README.md b/README.md index 231a499c..b1f5d4df 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Website +# harvesterhci.io This website is built using [Docusaurus 2](https://docusaurus.io/), a modern static website generator. diff --git a/docs/authentication.md b/docs/authentication.md index de04c82f..6d7c2bac 100644 --- a/docs/authentication.md +++ b/docs/authentication.md @@ -1,5 +1,5 @@ --- -sidebar_position: 4 +sidebar_position: 30 --- # Authentication diff --git a/docs/development/_category_.json b/docs/development/_category_.json new file mode 100644 index 00000000..11ba288f --- /dev/null +++ b/docs/development/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Development", + "position": 90 +} diff --git a/docs/dev-mode.md b/docs/development/dev-mode.md similarity index 98% rename from docs/dev-mode.md rename to docs/development/dev-mode.md index 3dd3845f..2d774644 100644 --- a/docs/dev-mode.md +++ b/docs/development/dev-mode.md @@ -1,7 +1,7 @@ --- sidebar_position: 9 --- -# Developer Mode Installation (Dev mode) +# Developer Mode Installation Developer mode (dev mode) is intended to be used for testing and development purposes. diff --git a/docs/harvester-network.md b/docs/harvester-network.md index 6405b734..52d270ed 100644 --- a/docs/harvester-network.md +++ b/docs/harvester-network.md @@ -1,15 +1,8 @@ --- -sidebar_position: 7 +sidebar_position: 40 --- -# Introduction of The Harvester network - -## Table of Contents - * [Summary](#summary) - * [Implementation](#implementation) - * [Management Network](#management-network) - * [VLAN](#vlan) - * [Enabling VLAN in the Harvester UI](#enabling-vlan-in-the-harvester-ui) +# Harvester Network ## Summary [Harvester](https://github.com/harvester/harvester) is built on Kubernetes, which uses [CNI](https://github.com/containernetworking/cni) as an interface between network providers and Kubernetes pod networking. Naturally, we implement the Harvester network based on CNI. Moreover, the [Harvester UI](https://github.com/harvester/harvester-ui) integrates the Harvester network to provide a user-friendly way to configure networks for VMs. diff --git a/docs/import-image.md b/docs/import-image.md index ee0c6ec5..c9237ab7 100644 --- a/docs/import-image.md +++ b/docs/import-image.md @@ -1,5 +1,5 @@ --- -sidebar_position: 5 +sidebar_position: 60 --- # Import Images diff --git a/docs/installation/_category_.json b/docs/installation/_category_.json index e1112892..2ffaa157 100644 --- a/docs/installation/_category_.json +++ b/docs/installation/_category_.json @@ -1,4 +1,4 @@ { "label": "Installation", - "position": 2 + "position": 10 } diff --git a/docs/rancher-intergration/_category_.json b/docs/rancher-intergration/_category_.json index 424400e9..2f734a21 100644 --- a/docs/rancher-intergration/_category_.json +++ b/docs/rancher-intergration/_category_.json @@ -1,4 +1,4 @@ { "label": "Rancher Intergration", - "position": 8 + "position": 80 } diff --git a/docs/upgrade.md b/docs/upgrade.md index ce3dcece..36698c52 100644 --- a/docs/upgrade.md +++ b/docs/upgrade.md @@ -1,5 +1,5 @@ --- -sidebar_position: 3 +sidebar_position: 30 --- # Upgrading Harvester @@ -7,14 +7,13 @@ sidebar_position: 3 Harvester provides two ways to upgrade. ->:warning: Notes: ->- Upgrading from v0.1.0 is not supported. ->- Upgrading from/to any RC releases is not supported. ->- Due to pending OS changes in the roadmap, the upgradability to the GA release cannot be guaranteed at this moment. ->- Zero downtime upgrade is supported when the Harvester cluster includes 3 or more nodes. If the cluster has less than 3 nodes, you can still perform upgrades but there'll be downtime during the upgrade. ->- Upgrade nodes one by one. - -**NOTE: Due to pending OS changes in the roadmap, the upgradability to the GA release cannot be guaranteed at this moment.** +:::note +- Upgrading from v0.1.0 is not supported. +- Upgrading from/to any RC releases is not supported. +- Due to pending OS changes in the roadmap, the upgradability to the GA release cannot be guaranteed at this moment. +- Zero downtime upgrade is supported when the Harvester cluster includes 3 or more nodes. If the cluster has less than 3 nodes, you can still perform upgrades but there'll be downtime during the upgrade. +- Upgrade nodes one by one. +::: ## Upgrade using the ISO image diff --git a/docs/vm-management/_category_.json b/docs/vm-management/_category_.json index 9a3002aa..40065bff 100644 --- a/docs/vm-management/_category_.json +++ b/docs/vm-management/_category_.json @@ -1,4 +1,4 @@ { "label": "VM Management", - "position": 6 + "position": 70 } diff --git a/docusaurus.config.js b/docusaurus.config.js index ad61ebc3..b6b7b05d 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -8,7 +8,7 @@ module.exports = { onBrokenMarkdownLinks: 'warn', favicon: 'img/favicon.ico', organizationName: 'harvester', // Usually your GitHub org/user name. - projectName: 'harvesterhci.io', // Usually your repo name. + projectName: 'harvester.github.io', // Usually your repo name. themeConfig: { colorMode: { // "light" | "dark" diff --git a/static/img/logo_horizontal.png b/static/img/logo_horizontal.png new file mode 100644 index 0000000000000000000000000000000000000000..4ed7c720c5b6260ea33f9394cef18b2ed0b01333 GIT binary patch literal 8783 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 literal 0 HcmV?d00001