[improve] clean up home webapp unused code (#1915)

Signed-off-by: tomsun28 <tomsun28@outlook.com>
Co-authored-by: 铁甲小宝 <2922035952@qq.com>
This commit is contained in:
tomsun28
2024-05-05 15:33:11 +08:00
committed by GitHub
co-authored by 铁甲小宝
parent 6c08ab7a44
commit 30eeed0ab3
60 changed files with 381 additions and 1918 deletions
+18
View File
@@ -1799,6 +1799,24 @@
"contributions": [
"doc"
]
},
{
"login": "Aias00",
"name": "aias00",
"avatar_url": "https://avatars.githubusercontent.com/u/25810623?v=4",
"profile": "https://github.com/Aias00",
"contributions": [
"code"
]
},
{
"login": "westboy",
"name": "Jin",
"avatar_url": "https://avatars.githubusercontent.com/u/6385565?v=4",
"profile": "https://github.com/westboy",
"contributions": [
"doc"
]
}
],
"contributorsPerLine": 7,
+20
View File
@@ -0,0 +1,20 @@
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
/home export-ignore
.gitattributes export-ignore
.gitignore export-ignore
+1
View File
@@ -66,6 +66,7 @@ header:
- '.helmignore'
- 'web-app/src/app/core/**'
- 'web-app/src/app/layout/**'
- 'web-app/src/app/routes/exception/**'
- 'web-app/src/app/routes/routes.module.ts'
- 'web-app/src/app/routes/routes-routing.module.ts'
- 'web-app/src/app/shared/json-schema/**'
+1
View File
@@ -209,6 +209,7 @@ These files from https://github.com/ng-alain/ng-alain
web-app/src/app/core/**
web-app/src/app/layout/**
web-app/src/app/routes/exception/**
web-app/src/app/routes/routes.module.ts
web-app/src/app/routes/routes-routing.module.ts
web-app/src/app/shared/json-schema/**
+2
View File
@@ -434,6 +434,8 @@ Thanks to these wonderful people, welcome to join us:
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/LLP2333"><img src="https://avatars.githubusercontent.com/u/61670545?v=4?s=100" width="100px;" alt="llp2333"/><br /><sub><b>llp2333</b></sub></a><br /><a href="https://github.com/apache/hertzbeat/commits?author=LLP2333" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/HeartLinked"><img src="https://avatars.githubusercontent.com/u/78212101?v=4?s=100" width="100px;" alt="feiyang li"/><br /><sub><b>feiyang li</b></sub></a><br /><a href="https://github.com/apache/hertzbeat/commits?author=HeartLinked" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Aias00"><img src="https://avatars.githubusercontent.com/u/25810623?v=4?s=100" width="100px;" alt="aias00"/><br /><sub><b>aias00</b></sub></a><br /><a href="https://github.com/apache/hertzbeat/commits?author=Aias00" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/westboy"><img src="https://avatars.githubusercontent.com/u/6385565?v=4?s=100" width="100px;" alt="Jin"/><br /><sub><b>Jin</b></sub></a><br /><a href="https://github.com/apache/hertzbeat/commits?author=westboy" title="Documentation">📖</a></td>
</tr>
</tbody>
</table>
+2
View File
@@ -433,6 +433,8 @@ Thanks these wonderful people, welcome to join us:
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/LLP2333"><img src="https://avatars.githubusercontent.com/u/61670545?v=4?s=100" width="100px;" alt="llp2333"/><br /><sub><b>llp2333</b></sub></a><br /><a href="https://github.com/apache/hertzbeat/commits?author=LLP2333" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/HeartLinked"><img src="https://avatars.githubusercontent.com/u/78212101?v=4?s=100" width="100px;" alt="feiyang li"/><br /><sub><b>feiyang li</b></sub></a><br /><a href="https://github.com/apache/hertzbeat/commits?author=HeartLinked" title="Documentation">📖</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Aias00"><img src="https://avatars.githubusercontent.com/u/25810623?v=4?s=100" width="100px;" alt="aias00"/><br /><sub><b>aias00</b></sub></a><br /><a href="https://github.com/apache/hertzbeat/commits?author=Aias00" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/westboy"><img src="https://avatars.githubusercontent.com/u/6385565?v=4?s=100" width="100px;" alt="Jin"/><br /><sub><b>Jin</b></sub></a><br /><a href="https://github.com/apache/hertzbeat/commits?author=westboy" title="Documentation">📖</a></td>
</tr>
</tbody>
</table>
@@ -17,6 +17,7 @@
package org.apache.hertzbeat.common.util;
import com.aliyun.dysmsapi20170525.Client;
import com.aliyun.dysmsapi20170525.models.SendSmsRequest;
import com.aliyun.dysmsapi20170525.models.SendSmsResponse;
import com.aliyun.teaopenapi.models.Config;
@@ -25,28 +26,28 @@ import java.util.Map;
/**
* Alibaba cloud send SMS util
* Refer from <a href="https://github.com/alibaba/aliyun-spring-boot/blob/master/aliyun-spring-boot-docs/asciidoc/sms.adoc">alibaba aliyun-spring-boot</a>
*/
public class AliYunSendSmsUtil {
public static com.aliyun.dysmsapi20170525.Client createClient(String accessKeyId, String accessKeySecret) throws Exception {
private static Client createClient(String accessKeyId, String accessKeySecret) throws Exception {
Config config = new Config();
config.accessKeyId = accessKeyId;
config.accessKeySecret = accessKeySecret;
return new com.aliyun.dysmsapi20170525.Client(config);
return new Client(config);
}
/**
* Method for sending SMS messages: Enter the map format
*/
public static SendSmsResponse send(Map<String, Object> map, String singName, String templateCode, String phone, String accessKeyId, String accessKeySecret) throws Exception {
com.aliyun.dysmsapi20170525.Client client = AliYunSendSmsUtil.createClient(accessKeyId, accessKeySecret);
public static SendSmsResponse send(Map<String, Object> map, String singName, String templateCode, String phone,
String accessKeyId, String accessKeySecret) throws Exception {
Client client = createClient(accessKeyId, accessKeySecret);
SendSmsRequest sendReq = new SendSmsRequest()
.setPhoneNumbers(phone)//The phone number that received the text message
.setSignName(singName)//SMS signature
.setTemplateCode(templateCode)//SMS Template Code
.setTemplateParam(new ObjectMapper().writeValueAsString(map)); //The actual value of the SMS template variable
SendSmsResponse sendResp = client.sendSms(sendReq);
return sendResp;
.setPhoneNumbers(phone)
.setSignName(singName)
.setTemplateCode(templateCode)
.setTemplateParam(new ObjectMapper().writeValueAsString(map));
return client.sendSms(sendReq);
}
}
+1
View File
@@ -16,6 +16,7 @@
# specific language governing permissions and limitations
# under the License.
# Derived from Api Testing https://github.com/LinuxSuRen/api-testing/blob/master/e2e/start.sh
file=$1
if [ "$file" == "" ]
+124 -287
View File
@@ -4,14 +4,15 @@ title: How to Release
sidebar_position: 4
---
This tutorial describes in detail how to release Apache HertzBeat, take the release of version 2.1.0 as an example.
This tutorial describes in detail how to release Apache HertzBeat, take the release of version 1.6.0 as an example.
## 1. Environmental requirements
This release process is operated in the Ubuntu OS, and the following tools are required:
This release process is operated in the UbuntuOS(Windows,Mac), and the following tools are required:
- JDK 1.8+
- Apache Maven 3.x (this process uses 3.8.7)
- JDK 17
- Node18 Yarn
- Apache Maven 3.x
- GnuPG 2.x
- Git
- SVN (apache uses svn to host project releases)
@@ -59,9 +60,9 @@ GnuPG needs to construct a user ID to identify your key.
Real name: muchunjin # Please enter 'gpg real name'
Email address: muchunjin@apache.org # Please enter your apache email address here
Comment: for apache HertzBeat release create at 20230501 # Please enter some comments here
Comment: apache key # Please enter some comments here
You selected this USER-ID:
"muchunjin (for apache HertzBeat release create at 20230501) <muchunjin@apache.org>"
"muchunjin (apache key) <muchunjin@apache.org>"
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O # Please enter O here
We need to generate a lot of random bytes. It is a good idea to perform
@@ -94,7 +95,7 @@ public and secret key created and signed.
pub rsa4096 2023-05-01 [SC]
85778A4CE4DD04B7E07813ABACFB69E705016886
uid muchunjin (for apache HertzBeat release create at 20230501) <muchunjin@apache.org>
uid muchunjin (apache key) <muchunjin@apache.org>
sub rsa4096 2023-05-01 [E]
```
@@ -108,11 +109,11 @@ $ gpg --keyid-format SHORT --list-keys
------------------------
pub rsa4096/05016886 2023-05-01 [SC]
85778A4CE4DD04B7E07813ABACFB69E705016886
uid [ultimate] muchunjin (for apache HertzBeat release create at 20230501) <muchunjin@apache.org>
uid [ultimate] muchunjin (apache key) <muchunjin@apache.org>
sub rsa4096/0C5A4E1C 2023-05-01 [E]
# Send public key to keyserver via key id
$ gpg --keyserver keyserver.ubuntu.com --send-key 584EE68E
$ gpg --keyserver keyserver.ubuntu.com --send-key 05016886
# Among them, keyserver.ubuntu.com is the selected keyserver, it is recommended to use this, because the Apache Nexus verification uses this keyserver
```
@@ -122,32 +123,26 @@ Verify whether it is synchronized to the public network, it will take about a mi
```shell
$ gpg --keyserver keyserver.ubuntu.com --recv-keys 05016886 # If the following content appears, it means success
gpg: key ACFB69E705016886: "muchunjin (for apache HertzBeat release create at 20230501) <muchunjin@apache.org>" not changed
gpg: key ACFB69E705016886: "muchunjin (apache key) <muchunjin@apache.org>" not changed
gpg: Total number processed: 1
gpg: unchanged: 1
```
Or enter https://keyserver.ubuntu.com/ address in the browser, enter the name of the key and click 'Search key'
Or enter https://keyserver.ubuntu.com/ address in the browser, enter the name of the key and click 'Search key' to search if existed.
![图片](https://github.com/apache/streampark/assets/19602424/b8fe193e-c137-42b0-a833-90a6d975f335)
If the query results are as follows, it means that the key is successfully created.
![图片](https://github.com/apache/streampark/assets/19602424/73ada3f2-2d2e-4b76-b25c-34a52db6a069)
#### 2.4 Add the gpg public key to the KEYS file of the Apache SVN project warehouse
#### 2.4 Add the gpg public key to the KEYS file of the Apache SVN project repo
- Apache HertzBeat Branch Dev https://dist.apache.org/repos/dist/dev/incubator/hertzbeat
- Apache HertzBeat Branch Release https://dist.apache.org/repos/dist/release/incubator/hertzbeat/
- Apache HertzBeat Branch Release https://dist.apache.org/repos/dist/release/incubator/hertzbeat
##### 2.4.1 Add public key to KEYS in dev branch
```shell
$ mkdir -p hertzbeat/dev
$ cd hertzbeat_svn/dev
$ mkdir -p svn/dev
$ cd svn/dev
$ svn co https://dist.apache.org/repos/dist/dev/incubator/hertzbeat
$ cd hertzbeat_svn/dev/hertzbeat
$ cd svn/dev/hertzbeat
# Append the KEY you generated to the file KEYS, and check if it is added correctly
$ (gpg --list-sigs muchunjin@apache.org && gpg --export --armor muchunjin@apache.org) >> KEYS
@@ -158,11 +153,11 @@ $ svn ci -m "add gpg key for muchunjin"
##### 2.4.2 Add public key to KEYS in release branch
```shell
$ mkdir -p hertzbeat_svn/release
$ cd hertzbeat_svn/release
$ mkdir -p svn/release
$ cd svn/release
$ svn co https://dist.apache.org/repos/dist/release/incubator/hertzbeat/
$ cd hertzbeat_svn/release/hertzbeat
$ svn co https://dist.apache.org/repos/dist/release/incubator/hertzbeat
$ cd svn/release/hertzbeat
# Append the KEY you generated to the file KEYS, and check if it is added correctly
$ (gpg --list-sigs muchunjin@apache.org && gpg --export --armor muchunjin@apache.org) >> KEYS
@@ -170,171 +165,61 @@ $ (gpg --list-sigs muchunjin@apache.org && gpg --export --armor muchunjin@apache
$ svn ci -m "add gpg key for muchunjin"
```
#### 2.5 Configure apache maven address and user password settings
## 3. Prepare material package & release
- Generate master password
```shell
$ mvn --encrypt-master-password <apache password>
{EM+4/TYVDXYHRbkwjjAS3mE1RhRJXJUSG8aIO5RSxuHU26rKCjuS2vG+/wMjz9te}
```
#### 3.1 Based on the master branch, create a release-${release_version}-rcx branch, such as release-1.6.0-rc1, And create a tag named v1.6.0-rc1 based on the release-1.6.0-rc1 branch, and set this tag as pre-release.
- Create the file ${user.home}/.m2/settings-security.xml and configure the password created in the previous step
```shell
<settingsSecurity>
<master>{EM+4/TYVDXYHRbkwjjAS3mE1RhRJXJUSG8aIO5RSxuHU26rKCjuS2vG+/wMjz9te}</master>
</settingsSecurity>
git checkout master
git checkout -b release-1.6.0-rc1
```
- Generate the final encrypted password and add it to the ~/.m2/settings.xml file
#### 3.2 checkout release branch to local
```shell
$ mvn --encrypt-password <apache passphrase>
{/ZLaH78TWboH5IRqNv9pgU4uamuqm9fCIbw0gRWT01c=}
git checkout release-1.6.0-rc1
```
> In the maven configuration file ~/.m2/settings.xml, add the following `server` item
#### 3.3 Compile the binary package
```
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository>/path/to/local/repo</localRepository>
<servers>
<server>
<id>apache.snapshots.https</id>
<!-- APACHE LDAP UserName -->
<username>muchunjin</username>
<!-- APACHE LDAP password (Fill in the password you just created with the command `mvn --encrypt-password <apache passphrase>`) -->
<password>{/ZLaH78TWboH5IRqNv9pgU4uamuqm9fCIbw0gRWT01c=}</password>
</server>
<server>
<id>apache.releases.https</id>
<!-- APACHE LDAP UserName -->
<username>muchunjin</username>
<!-- APACHE LDAP password (Fill in the password you just created with the command `mvn --encrypt-password <apache passphrase>`) -->
<password>{/ZLaH78TWboH5IRqNv9pgU4uamuqm9fCIbw0gRWT01c=}</password>
</server>
</servers>
<profiles>
<profile>
<id>apache-release</id>
<properties>
<gpg.keyname>05016886</gpg.keyname>
<!-- Use an agent: Prevents being asked for the password during the build -->
<gpg.useagent>true</gpg.useagent>
<gpg.passphrase>passphrase for your gpg key</gpg.passphrase>
</properties>
</profile>
</profiles>
```
## 3. Prepare material package & release Apache Nexus
#### 3.1 Based on the dev branch, create a release-${release_version}-rcx branch, such as release-2.1.0-rc1, And create a tag named v2.1.0-rc1 based on the release-2.1.0-rc1 branch, and set this tag as pre-release.
![图片](https://user-images.githubusercontent.com/19602424/236656362-1d346faa-6582-44eb-9722-8bb2de0eaa92.png)
#### 3.2 clone release branch to local
> Build HertzBeat server binary, run script in `web-app`
```shell
git clone -b release-2.1.0-rc1 -c core.autocrlf=false git@github.com:apache/hertzbeat.git
yarn install
yarn package
```
#### 3.3 Publish the relevant JARs to Apache Nexus
##### 3.3.1 Release scala 2.11 to the Apache Nexus repository
> run script in root
```shell
mvn clean install \
-Pscala-2.11 \
-DskipTests \
-Dcheckstyle.skip=true \
-Dmaven.javadoc.skip=true \
-pl 'hertzbeat-common,hertzbeat-flink' \
-pl '!hertzbeat-console/hertzbeat-console-service' \
-amd
mvn clean package
```
> Build HertzBeat collector binary, run script in `collector`
```shell
mvn deploy \
-Pscala-2.11,apache-release \
-DskipTests \
-Dmaven.javadoc.skip=true \
-DretryFailedDeploymentCount=3
mvn clean package -Pcluster
```
##### 3.3.2 Release scala 2.12 to the Apache Nexus repository
The release package are here `manager/target/hertzbeat-{version}.tar.gz``collector/target/hertzbeat-collector-{version}.tar.gz``collector/target/hertzbeat-collector-{version}-bin.tar.gz`
```shell
mvn clean install \
-Pscala-2.12 \
-DskipTests \
-Dcheckstyle.skip=true \
-Dmaven.javadoc.skip=true \
-pl 'hertzbeat-common,hertzbeat-flink' \
-pl '!hertzbeat-console/hertzbeat-console-service' \
-amd
```
```shell
mvn deploy \
-Pscala-2.12,apache-release \
-DskipTests \
-Dmaven.javadoc.skip=true \
-DretryFailedDeploymentCount=3
```
```shell
mvn deploy \
-Papache-release \
-DskipTests \
-Dmaven.javadoc.skip=true \
-DretryFailedDeploymentCount=3
```
##### 3.3.3 Check for successful publishing to the Apache Nexus repository
> Visit https://repository.apache.org/ and log in, if there are scala 2.11, scala 2.12, it means success.
![图片](https://user-images.githubusercontent.com/19602424/236657233-08d142eb-5f81-427b-a04d-9ab3172199c1.png)
#### 3.4 Compile the binary package
> Scala 2.11 compilation and packaging
```shell
> ./build.sh # choose "mixed mode" and "scala 2.11"
```
> Scala 2.12 compilation and packaging
```shell
> ./build.sh # choose "mixed mode" and "scala 2.12"
```
#### 3.4 Package the source code
> Package the project source code
```shell
git archive \
--format=tar.gz \
--output="dist/apache-hertzbeat-2.1.0-incubating-src.tar.gz" \
--prefix=apache-hertzbeat-2.1.0-incubating-src/ \
release-2.1.0-rc1
--output="target/apache-hertzbeat-1.6.0-incubating-src.tar.gz" \
--prefix=apache-hertzbeat-1.6.0-incubating-src/ \
release-1.6.0-rc1
```
> The following 3 files will be generated
The archive package is here `target/apache-hertzbeat-1.6.0-incubating-src.tar.gz`
```
apache-hertzbeat-2.1.0-incubating-src.tar.gz
apache-hertzbeat_2.11-2.1.0-incubating-bin.tar.gz
apache-hertzbeat_2.12-2.1.0-incubating-bin.tar.gz
```
#### 3.4 Sign binary and source packages
#### 3.5 Sign binary and source packages
```shell
cd dist
@@ -349,18 +234,18 @@ for i in *.tar.gz; do echo $i; sha512sum $i > $i.sha512 ; done
> The final file list is as follows
```
apache-hertzbeat-2.1.0-incubating-src.tar.gz
apache-hertzbeat-2.1.0-incubating-src.tar.gz.asc
apache-hertzbeat-2.1.0-incubating-src.tar.gz.sha512
apache-hertzbeat_2.11-2.1.0-incubating-bin.tar.gz
apache-hertzbeat_2.11-2.1.0-incubating-bin.tar.gz.asc
apache-hertzbeat_2.11-2.1.0-incubating-bin.tar.gz.sha512
apache-hertzbeat_2.12-2.1.0-incubating-bin.tar.gz
apache-hertzbeat_2.12-2.1.0-incubating-bin.tar.gz.asc
apache-hertzbeat_2.12-2.1.0-incubating-bin.tar.gz.sha512
apache-hertzbeat-1.6.0-incubating-src.tar.gz
apache-hertzbeat-1.6.0-incubating-src.tar.gz.asc
apache-hertzbeat-1.6.0-incubating-src.tar.gz.sha512
apache-hertzbeat_2.11-1.6.0-incubating-bin.tar.gz
apache-hertzbeat_2.11-1.6.0-incubating-bin.tar.gz.asc
apache-hertzbeat_2.11-1.6.0-incubating-bin.tar.gz.sha512
apache-hertzbeat_2.12-1.6.0-incubating-bin.tar.gz
apache-hertzbeat_2.12-1.6.0-incubating-bin.tar.gz.asc
apache-hertzbeat_2.12-1.6.0-incubating-bin.tar.gz.sha512
```
#### 3.5 Verify signature
#### 3.6 Verify signature
```shell
$ cd dist
@@ -368,97 +253,97 @@ $ cd dist
# Verify signature
$ for i in *.tar.gz; do echo $i; gpg --verify $i.asc $i ; done
apache-hertzbeat-2.1.0-incubating-src.tar.gz
apache-hertzbeat-1.6.0-incubating-src.tar.gz
gpg: Signature made Tue May 2 12:16:35 2023 CST
gpg: using RSA key 85778A4CE4DD04B7E07813ABACFB69E705016886
gpg: Good signature from "muchunjin (for apache HertzBeat release create at 20230501) <muchunjin@apache.org>" [ultimate]
apache-hertzbeat_2.11-2.1.0-incubating-bin.tar.gz
gpg: Good signature from "muchunjin (apache key) <muchunjin@apache.org>" [ultimate]
apache-hertzbeat_2.11-1.6.0-incubating-bin.tar.gz
gpg: Signature made Tue May 2 12:16:36 2023 CST
gpg: using RSA key 85778A4CE4DD04B7E07813ABACFB69E705016886
gpg: Good signature from "muchunjin (for apache HertzBeat release create at 20230501) <muchunjin@apache.org>" [ultimate]
apache-hertzbeat_2.12-2.1.0-incubating-bin.tar.gz
gpg: Good signature from "muchunjin (apache key) <muchunjin@apache.org>" [ultimate]
apache-hertzbeat_2.12-1.6.0-incubating-bin.tar.gz
gpg: Signature made Tue May 2 12:16:37 2023 CST
gpg: using RSA key 85778A4CE4DD04B7E07813ABACFB69E705016886
gpg: BAD signature from "muchunjin (for apache HertzBeat release create at 20230501) <muchunjin@apache.org>" [ultimate]
gpg: BAD signature from "muchunjin (apache key) <muchunjin@apache.org>" [ultimate]
# Verify SHA512
$ for i in *.tar.gz; do echo $i; sha512sum --check $i.sha512; done
apache-hertzbeat-2.1.0-incubating-src.tar.gz
apache-hertzbeat-2.1.0-incubating-src.tar.gz: OK
apache-hertzbeat_2.11-2.1.0-incubating-bin.tar.gz
apache-hertzbeat_2.11-2.1.0-incubating-bin.tar.gz: OK
apache-hertzbeat_2.12-2.1.0-incubating-bin.tar.gz
apache-hertzbeat_2.12-2.1.0-incubating-bin.tar.gz: OK
apache-hertzbeat-1.6.0-incubating-src.tar.gz
apache-hertzbeat-1.6.0-incubating-src.tar.gz: OK
apache-hertzbeat_2.11-1.6.0-incubating-bin.tar.gz
apache-hertzbeat_2.11-1.6.0-incubating-bin.tar.gz: OK
apache-hertzbeat_2.12-1.6.0-incubating-bin.tar.gz
apache-hertzbeat_2.12-1.6.0-incubating-bin.tar.gz: OK
```
#### 3.6 Publish the dev directory of the Apache SVN warehouse of the material package
#### 3.7 Publish the dev directory of the Apache SVN material package
- Clone the dev directory
```shell
# Check out the dev directory of the Apache SVN warehouse to the hertzbeat_svn_dev directory under dist in the root directory of the Apache HertzBeat project
svn co https://dist.apache.org/repos/dist/dev/incubator/hertzbeat dist/hertzbeat_svn_dev
# Check out the dev directory of the Apache SVN to the svn/dev directory under dist in the root directory of the Apache HertzBeat project
svn co https://dist.apache.org/repos/dist/dev/incubator/hertzbeat svn/dev
svn co --depth empty https://dist.apache.org/repos/dist/dev/incubator/hertzbeat
```
Create a version number directory and name it in the form of ${release_version}-${RC_version}. RC_version starts from 1, that is, the candidate version starts from RC1. During the release process, there is a problem that causes the vote to fail. If it needs to be corrected, it needs to iterate the RC version , the RC version number needs to be +1. For example: Vote for version 2.1.0-RC1. If the vote passes without any problems, the RC1 version material will be released as the final version material. If there is a problem (when the hertzbeat/incubator community votes, the voters will strictly check various release requirements and compliance issues) and need to be corrected, then re-initiate the vote after the correction, and the candidate version for the next vote is 2.1.0- RC2.
- Copy the material package to the dev directory
Create a version number directory and name it in the form of ${release_version}-${RC_version}. RC_version starts from 1, that is, the candidate version starts from RC1. During the release process, there is a problem that causes the vote to fail. If it needs to be corrected, it needs to iterate the RC version , the RC version number needs to be +1. For example: Vote for version 1.6.0-RC1. If the vote passes without any problems, the RC1 version material will be released as the final version material. If there is a problem (when the hertzbeat/incubator community votes, the voters will strictly check various release requirements and compliance issues) and need to be corrected, then re-initiate the vote after the correction, and the candidate version for the next vote is 1.6.0- RC2.
```shell
mkdir -p dist/hertzbeat_svn_dev/2.1.0-RC1
cp -f dist/* dist/hertzbeat_svn_dev/2.1.0-RC1
mkdir -p svn/dev/1.6.0-RC1
cp -f dist/* svn/dev/1.6.0-RC1
```
Commit to SVN
- Commit to SVN
```shell
cd dist/hertzbeat_svn_dev/
cd svn/dev
# 1.check svn status
svn status
# 2. add to svn
svn add 2.0.0-RC1
svn add 1.6.0-RC1
svn status
# 3. Submit to svn remote server
svn commit -m "release for HertzBeat 2.1.0"
svn commit -m "release for HertzBeat 1.6.0"
```
#### 3.7 Check Apache SVN Commit Results
- Check Apache SVN Commit Results
> Visit the address https://dist.apache.org/repos/dist/dev/incubator/hertzbeat/2.1.0-RC1/ in the browser
> Visit the address https://dist.apache.org/repos/dist/dev/incubator/hertzbeat/1.6.0-RC1/ in the browser, check if existed the new material package
![图片](https://github.com/apache/streampark/assets/19602424/e4763537-af9f-4f2a-967d-912e6670b360)
## 3. Enter the community voting stage
## 4. Enter the community voting stage
#### 3.1 Send a Community Vote Email
#### 4.1 Send a Community Vote Email
Send a voting email in the community requires at least three `+1` and no `-1`.
> `Send to`: dev@hertzbeat.apache.org <br />
> `Title`: [VOTE] Release Apache HertzBeat (incubating) 2.1.0 rc1 <br />
> `Title`: [VOTE] Release Apache HertzBeat (incubating) 1.6.0 rc1 <br />
> `Body`:
```
Hello HertzBeat Community:
This is a call for vote to release Apache HertzBeat (incubating) version release-2.1.0-RC1.
This is a call for vote to release Apache HertzBeat (incubating) version release-1.6.0-RC1.
Apache Streamark - Make stream processing easier! Easy-to-use streaming application development framework and operation platform.
Apache HertzBeat - a real-time monitoring system with agentless, performance cluster, prometheus-compatible, custom monitoring and status page building capabilities.
Release notes:
https://hertzbeat.apache.org/download/release-note/2.1.0/
https://github.com/apache/hertzbeat/releases/tag/v1.6.0
The release candidates:
https://dist.apache.org/repos/dist/dev/incubator/hertzbeat/2.1.0-RC1/
Maven artifacts are available in a staging repository at:
https://repository.apache.org/content/repositories/orgapachehertzbeat-1012/
https://dist.apache.org/repos/dist/dev/incubator/hertzbeat/1.6.0-RC1/
Git tag for the release:
https://github.com/apache/hertzbeat/releases/tag/v2.1.0-rc1
https://github.com/apache/hertzbeat/releases/tag/v1.6.0-rc1
The artifacts signed with PGP key [05016886], corresponding to [muchunjin@apache.org], that can be found in keys file:
https://downloads.apache.org/incubator/hertzbeat/KEYS
@@ -489,9 +374,7 @@ Steps to validate the releasePlease refer to:
https://hertzbeat.apache.org/community/release/how-to-verify
How to Build:
1.cd hertzbeat
2.sh ./build.sh
https://hertzbeat.apache.org/docs/community/how_to_release/#34-compile-the-binary-package
Thanks!
```
@@ -499,22 +382,19 @@ Thanks!
After 72 hours, the voting results will be counted, and the voting result email will be sent, as follows.
> `Send to`: dev@hertzbeat.apache.org <br />
> `Title`: [RESULT][VOTE] Release Apache HertzBeat (incubating) 2.1.0-rc1 <br />
> `Title`: [RESULT][VOTE] Release Apache HertzBeat (incubating) 1.6.0-rc1 <br />
> `Body`:
```
Dear HertzBeat community,
Thanks for your review and vote for "Release Apache HertzBeat (incubating) 2.1.0-rc1"
Thanks for your review and vote for "Release Apache HertzBeat (incubating) 1.6.0-rc1"
I'm happy to announce the vote has passed:
4 binding +1, from:
- Zhuoyu Chen
- Huajie Wang
- Linying Yu
- Shaokang Lv
- cc
1 non-binding +1, from:
@@ -534,12 +414,7 @@ Best,
ChunJin Mu
```
One item of the email content is `Vote thread`, and the link is obtained as follows: <br />
Visit this address https://lists.apache.org/list.html?dev@hertzbeat.apache.org, and find the mail title and click to display the voting content
![图片](https://github.com/apache/streampark/assets/19602424/5755ed06-529f-4739-96a8-1ac13bbb21ea)
Right-click the title and click Copy Link Address to get the link
![图片](https://github.com/apache/streampark/assets/19602424/1616da5b-7891-45cc-b956-a0ba5e7ce874)
One item of the email content is `Vote thread`, and the link is obtained here: https://lists.apache.org/list.html?dev@hertzbeat.apache.org
#### 3.2 Send Incubator Community voting mail
@@ -547,16 +422,16 @@ Send a voting email in the incubator community requires at least three `+1` and
> `Send to`: general@incubator.apache.org <br />
> `cc`: dev@hertzbeat.apache.org、tison@apache.org、willem.jiang@gmail.com <br />
> `Title`: [VOTE] Release Apache HertzBeat (incubating) 2.1.0-rc1 <br />
> `Title`: [VOTE] Release Apache HertzBeat (incubating) 1.6.0-rc1 <br />
> `Body`:
```
Hello Incubator Community:
This is a call for a vote to release Apache HertzBeat (incubating) version 2.1.0-RC1.
The Apache HertzBeat community has voted on and approved a proposal to release Apache HertzBeat (incubating) version 2.1.0-RC1.
This is a call for a vote to release Apache HertzBeat (incubating) version 1.6.0-RC1.
The Apache HertzBeat community has voted on and approved a proposal to release Apache HertzBeat (incubating) version 1.6.0-RC1.
We now kindly request the Incubator PMC members review and vote on this incubator release.
Apache HertzBeat, Make stream processing easier! Easy-to-use streaming application development framework and operation platform.
Apache HertzBeat, a real-time monitoring system with agentless, performance cluster, prometheus-compatible, custom monitoring and status page building capabilities.
HertzBeat community vote thread:
https://lists.apache.org/thread/t01b2lbtqzyt7j4dsbdp5qjc3gngjsdq
@@ -565,13 +440,10 @@ Vote result thread:
https://lists.apache.org/thread/t5z58mvrs1drgzfyc48c9lhmd8skswn7
The release candidate:
https://dist.apache.org/repos/dist/dev/incubator/hertzbeat/2.1.0-RC1/
https://dist.apache.org/repos/dist/dev/incubator/hertzbeat/1.6.0-RC1/
Git tag for the release:
https://github.com/apache/hertzbeat/releases/tag/v2.1.0-rc1
Maven artifacts are available in a staging repository at:
https://repository.apache.org/content/repositories/orgapachehertzbeat-1012/
https://github.com/apache/hertzbeat/releases/tag/v1.6.0-rc1
The artifacts signed with PGP key [05016886], corresponding to [muchunjin@apache.org], that can be found in keys file:
https://downloads.apache.org/incubator/hertzbeat/KEYS
@@ -594,10 +466,10 @@ Steps to validate the release Please refer to:
How to Build:
1) clone source code:
> git clone -b v2.1.0-rc1 git@github.com:apache/hertzbeat.git
> git clone -b v1.6.0-rc1 git@github.com:apache/hertzbeat.git
2) build project:
> cd hertzbeat && sh ./build.sh
https://hertzbeat.apache.org/docs/community/how_to_release/#34-compile-the-binary-package
Thanks,
@@ -626,22 +498,20 @@ Then the voting results will be counted, and the voting result email will be sen
> `Send to`: general@incubator.apache.org <br />
> `cc`: dev@hertzbeat.apache.org、tison@apache.org、willem.jiang@gmail.com <br />
> `Title`: [RESULT][VOTE] Release Apache HertzBeat (incubating) 2.1.0-rc1 <br />
> `Title`: [RESULT][VOTE] Release Apache HertzBeat (incubating) 1.6.0-rc1 <br />
> `Body`:
```
Hi all,
Thanks for your review and vote for "Release Apache HertzBeat (incubating) 2.1.0-rc1"
Thanks for your review and vote for "Release Apache HertzBeat (incubating) 1.6.0-rc1"
I'm happy to announce the vote has passed:
3 binding votes, no +0 or -1 votes.
Thanks for reviewing and voting.
+3 (binding) +1, from:
- tison
- Gang Li
- Willem Jiang
- cc
no 0 or -1 votes.
@@ -655,10 +525,7 @@ Best,
ChunJin Mu
```
One item of the email content is `Vote thread`, and the link is obtained as follows: <br />
Visit this address https://lists.apache.org/list.html?general@incubator.apache.org, and find the mail title and click to display the voting content
![图片](https://github.com/apache/streampark/assets/19602424/aea68925-7911-4413-8b2d-aea12685337f)
Then right-click the title and click Copy Link Address to get the link.
One item of the email content is `Vote thread`, and the link is obtained here: https://lists.apache.org/list.html?general@incubator.apache.org
Wait a day to see if the tutor has any other comments, if not, send the following announcement email
@@ -667,92 +534,62 @@ Wait a day to see if the tutor has any other comments, if not, send the followin
#### 4.1 Migrating source and binary packages
```shell
svn mv https://dist.apache.org/repos/dist/dev/incubator/hertzbeat/2.1.0-RC1 https://dist.apache.org/repos/dist/release/incubator/hertzbeat/2.1.0 -m "transfer packages for 2.1.0-RC1"
svn mv https://dist.apache.org/repos/dist/dev/incubator/hertzbeat/1.6.0-RC1 https://dist.apache.org/repos/dist/release/incubator/hertzbeat/1.6.0 -m "transfer packages for 1.6.0-RC1"
```
#### 4.2 Publish releases in the Apache Staging repository
#### 4.2 Add the new version download address to the official website
- Log in to http://repository.apache.org , log in with your Apache account
- Click Staging repositories on the left
- Select your most recently uploaded warehouse, the warehouse specified in the voting email
- Click the Release button above, this process will perform a series of checks
> It usually takes 24 hours for the warehouse to synchronize to other data sources
https://github.com/apache/hertzbeat/blob/master/home/docs/download.md
https://github.com/apache/hertzbeat/blob/master/home/i18n/zh-cn/docusaurus-plugin-content-docs/current/download.md
#### 4.3 Add the new version download address to the official website
Add the following to the src/pages/download/data.json file on the official website
```
{
"version": "2.1.0",
"date": "2023-05-11"
}
```
The final file content is as follows
```
[
{
"version": "2.0.0",
"date": "2023-02-21"
},
{
"version": "2.1.0",
"date": "2023-05-11"
}
]
```
Open the official website address https://hertzbeat.apache.org/download/ to see if there is a new version of the download
Open the official website address https://hertzbeat.apache.org/docs/download/ to see if there is a new version of the download
> It should be noted that the download link may take effect after an hour, so please pay attention to it.
![图片](https://github.com/apache/streampark/assets/19602424/e7900fb2-7bfc-4fa1-bd40-9806e6a822ef)
#### 4.4 Generate a release on github
#### 4.3 Generate a release on github
Create a tag named v2.1.0 based on the release-2.1.0-rc1 branch, and set this tag to latest release.
Create a tag named v1.6.0 based on the release-1.6.0-rc1 branch, and set this tag to latest release.
Then enter Release Title and Describe
- Release Title:
```
v2.1.0-incubating
v1.6.0-incubating
```
- Describe:
```
Release-2.1.0-incubating
release note: https://hertzbeat.apache.org/download/release-note/2.1.0
Release-1.6.0-incubating
release note: xxx
```
![图片](https://github.com/apache/streampark/assets/19602424/84723ff5-a295-471d-8265-1b8ef867c3d1)
Then click the `Publish release` button.
The rename the release-2.1.0-rc1 branch to release-2.1.0.
The rename the release-1.6.0-rc1 branch to release-1.6.0.
#### 4.5 Send new version announcement email
> `Send to`: general@incubator.apache.org <br />
> `cc`: dev@hertzbeat.apache.org <br />
> `Title`: [ANNOUNCE] Release Apache HertzBeat (incubating) 2.1.0 <br />
> `Title`: [ANNOUNCE] Release Apache HertzBeat (incubating) 1.6.0 <br />
> `Body`:
```
Hi all,
We are glad to announce the release of Apache HertzBeat (incubating) 2.1.0.
We are glad to announce the release of Apache HertzBeat (incubating) 1.6.0.
Once again I would like to express my thanks to your help.
Apache HertzBeat(https://hertzbeat.apache.org/) - Make stream processing easier! Easy-to-use streaming application development framework and operation platform.
Apache HertzBeat(https://hertzbeat.apache.org/) - a real-time monitoring system with agentless, performance cluster, prometheus-compatible, custom monitoring and status page building capabilities.
Download Links: https://hertzbeat.apache.org/download/
Release Notes: https://hertzbeat.apache.org/download/release-note/2.1.0
Release Notes: https://github.com/apache/hertzbeat/releases/tag/v1.6.0
HertzBeat Resources:
- Issue: https://github.com/apache/hertzbeat/issues
- Mailing list: dev@hertzbeat.apache.org
- Apache HertzBeat Team
Apache HertzBeat Team
Best,
ChunJin Mu
-3
View File
@@ -18,9 +18,6 @@ The hertzbeat installed and deployed by the installation package is not availabl
> When you install HertzBeat via DockerDocker root is enabled by default. No such problem.
> See https://stackoverflow.com/questions/11506321/how-to-ping-an-ip-address
4. If the history chart on the monitoring page is not displayedpopup [please configure dependency service on TDengine time series database]
> As shown in the popup windowthe premise of history chart display is that you need install and configure hertzbeat's dependency service - TDengine database.
> Installation and initialization this database refers to [TDengine Installation and Initialization](../start/tdengine-init).
### Docker Deployment common issues
+1 -7
View File
@@ -403,11 +403,5 @@ module.exports = {
},
],
],
themes: ['@docusaurus/theme-live-codeblock'],
scripts: [
{
src: 'https://hm.baidu.com/hm.js?77fb03ed1c6c1267119fec6d84dd88f3',
async: true,
},
],
themes: ['@docusaurus/theme-live-codeblock']
}
@@ -107,7 +107,7 @@
"message": "Community",
"description": "The label for category Community in sidebar docs"
},
"sidebar.docs.category.Network": {
"sidebar.docs.category.network": {
"message": "Network",
"description": "The label for category Network in sidebar docs"
}
@@ -111,7 +111,7 @@
"message": "发布指南",
"description": "The label for category release in sidebar docs"
},
"sidebar.docs.category.Network": {
"sidebar.docs.category.network": {
"message": "网络",
"description": "The label for category Network in sidebar docs"
}
@@ -4,14 +4,15 @@ title: 如何进行版本发布
sidebar_position: 4
---
本教程详细描述了如何发布Apache HertzBeat,并以1.6.0版本的发布为例。
本教程详细描述了如何发布Apache HertzBeat,并以 v1.6.0 版本的发布为例。
## 1. 环境要求
此发布过程在Ubuntu OS中进行操作,并需要以下环境:
此发布过程在 UbuntuOS(可在 Windows Mac) 中进行操作,并需要以下环境:
- JDK 17
- Apache Maven 3.x (此处使用 3.8.7)
- Node18 Yarn
- Apache Maven 3.x
- GnuPG 2.x
- Git
- SVN (Apache使用svn来托管项目发布)
@@ -59,9 +60,9 @@ GnuPG needs to construct a user ID to identify your key.
Real name: muchunjin # Please enter 'gpg real name'
Email address: muchunjin@apache.org # Please enter your apache email address here
Comment: for apache HertzBeat release create at 20230501 # Please enter some comments here
Comment: apache key # Please enter some comments here
You selected this USER-ID:
"muchunjin (for apache HertzBeat release create at 20230501) <muchunjin@apache.org>"
"muchunjin (apache key) <muchunjin@apache.org>"
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O # Please enter O here
We need to generate a lot of random bytes. It is a good idea to perform
@@ -94,7 +95,7 @@ public and secret key created and signed.
pub rsa4096 2023-05-01 [SC]
85778A4CE4DD04B7E07813ABACFB69E705016886
uid muchunjin (for apache HertzBeat release create at 20230501) <muchunjin@apache.org>
uid muchunjin (apache key) <muchunjin@apache.org>
sub rsa4096 2023-05-01 [E]
```
@@ -108,11 +109,11 @@ $ gpg --keyid-format SHORT --list-keys
------------------------
pub rsa4096/05016886 2023-05-01 [SC]
85778A4CE4DD04B7E07813ABACFB69E705016886
uid [ultimate] muchunjin (for apache HertzBeat release create at 20230501) <muchunjin@apache.org>
uid [ultimate] muchunjin (apache key) <muchunjin@apache.org>
sub rsa4096/0C5A4E1C 2023-05-01 [E]
# Send public key to keyserver via key id
$ gpg --keyserver keyserver.ubuntu.com --send-key 584EE68E
$ gpg --keyserver keyserver.ubuntu.com --send-key 05016886
# Among them, keyserver.ubuntu.com is the selected keyserver, it is recommended to use this, because the Apache Nexus verification uses this keyserver
```
@@ -122,32 +123,27 @@ $ gpg --keyserver keyserver.ubuntu.com --send-key 584EE68E
```shell
$ gpg --keyserver keyserver.ubuntu.com --recv-keys 05016886 # If the following content appears, it means success
gpg: key ACFB69E705016886: "muchunjin (for apache HertzBeat release create at 20230501) <muchunjin@apache.org>" not changed
gpg: key ACFB69E705016886: "muchunjin (apache key) <muchunjin@apache.org>" not changed
gpg: Total number processed: 1
gpg: unchanged: 1
```
或者进入 https://keyserver.ubuntu.com/ 网址,输入密钥的名称,然后点击'Search key'
或者进入 https://keyserver.ubuntu.com/ 网址,输入密钥的名称,然后点击'Search key' 按钮,查看是否有对应名称的密钥。
![图片](https://github.com/apache/streampark/assets/19602424/b8fe193e-c137-42b0-a833-90a6d975f335)
如果查询结果如下,表示密钥创建成功。
![图片](https://github.com/apache/streampark/assets/19602424/73ada3f2-2d2e-4b76-b25c-34a52db6a069)
#### 2.4 将 gpg 公钥添加到 Apache SVN 项目仓库的 KEYS 文件中
- Apache HertzBeat Dev分支 https://dist.apache.org/repos/dist/dev/incubator/hertzbeat
- Apache HertzBeat Release分支 https://dist.apache.org/repos/dist/release/incubator/hertzbeat/
- Apache HertzBeat Dev 分支 https://dist.apache.org/repos/dist/dev/incubator/hertzbeat
- Apache HertzBeat Release 分支 https://dist.apache.org/repos/dist/release/incubator/hertzbeat
##### 2.4.1 将公钥添加到dev分支的KEYS
```shell
$ mkdir -p hertzbeat_svn/dev
$ cd hertzbeat_svn/dev
$ mkdir -p svn/dev
$ cd svn/dev
$ svn co https://dist.apache.org/repos/dist/dev/incubator/hertzbeat
$ cd hertzbeat_svn/dev/hertzbeat
$ cd svn/dev/hertzbeat
# 将生成的KEY追加到KEYS文件中,检查是否添加正确
$ (gpg --list-sigs muchunjin@apache.org && gpg --export --armor muchunjin@apache.org) >> KEYS
@@ -158,11 +154,11 @@ $ svn ci -m "add gpg key for muchunjin"
##### 2.4.2 将公钥添加到release分支的KEYS
```shell
$ mkdir -p hertzbeat_svn/release
$ cd hertzbeat_svn/release
$ mkdir -p svn/release
$ cd svn/release
$ svn co https://dist.apache.org/repos/dist/release/incubator/hertzbeat/
$ cd hertzbeat_svn/release/hertzbeat
$ svn co https://dist.apache.org/repos/dist/release/incubator/hertzbeat
$ cd svn/release/hertzbeat
# 将生成的KEY追加到KEYS文件中,检查是否添加正确
$ (gpg --list-sigs muchunjin@apache.org && gpg --export --armor muchunjin@apache.org) >> KEYS
@@ -170,172 +166,62 @@ $ (gpg --list-sigs muchunjin@apache.org && gpg --export --armor muchunjin@apache
$ svn ci -m "add gpg key for muchunjin"
```
#### 2.5 配置 apache maven 路径和用户密码设置
## 3. 准备物料 & 发布
- 生成主密码
```shell
$ mvn --encrypt-master-password <apache password>
{EM+4/TYVDXYHRbkwjjAS3mE1RhRJXJUSG8aIO5RSxuHU26rKCjuS2vG+/wMjz9te}
```
- 创建文件 ${user.home}/.m2/settings-security.xml 并配置上一步创建的密码
#### 3.1 基于 master 分支,创建一个名为 release-${release_version}-rcx 的分支,例如 release-1.6.0-rc1。并基于 release-1.6.0-rc1 分支创建一个名为 v1.6.0-rc1 的标签,并将此标签设置为预发布。
```shell
<settingsSecurity>
<master>{EM+4/TYVDXYHRbkwjjAS3mE1RhRJXJUSG8aIO5RSxuHU26rKCjuS2vG+/wMjz9te}</master>
</settingsSecurity>
git checkout master
git checkout -b release-1.6.0-rc1
```
- 生成最终的加密密码并将其添加到 ~/.m2/settings.xml 文件
#### 3.2 本地切换到待发布分支
```shell
$ mvn --encrypt-password <apache passphrase>
{/ZLaH78TWboH5IRqNv9pgU4uamuqm9fCIbw0gRWT01c=}
git checkout release-1.6.0-rc1
```
> 在maven配置文件~/.m2/settings.xml中,添加以下服务端项
#### 3.3 编译二进制包
```
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository>/path/to/local/repo</localRepository>
<servers>
<server>
<id>apache.snapshots.https</id>
<!-- APACHE LDAP UserName -->
<username>muchunjin</username>
<!-- APACHE LDAP password (填写刚刚使用命令 `mvn --encrypt-password <apache passphrase>` 创建的密码) -->
<password>{/ZLaH78TWboH5IRqNv9pgU4uamuqm9fCIbw0gRWT01c=}</password>
</server>
<server>
<id>apache.releases.https</id>
<!-- APACHE LDAP UserName -->
<username>muchunjin</username>
<!-- APACHE LDAP password (填写刚刚使用命令 `mvn --encrypt-password <apache passphrase>` 创建的密码) -->
<password>{/ZLaH78TWboH5IRqNv9pgU4uamuqm9fCIbw0gRWT01c=}</password>
</server>
</servers>
<profiles>
<profile>
<id>apache-release</id>
<properties>
<gpg.keyname>05016886</gpg.keyname>
<!-- Use an agent: Prevents being asked for the password during the build -->
<gpg.useagent>true</gpg.useagent>
<gpg.passphrase>passphrase for your gpg key</gpg.passphrase>
</properties>
</profile>
</profiles>
```
## 3. 准备物料 & 发布到Apache Nexus
#### 3.1 基于dev分支,创建一个名为release-${release_version}-rcx的分支,例如release-2.1.0-rc1。并基于release-2.1.0-rc1分支创建一个名为v2.1.0-rc1的标签,并将此标签设置为预发布。
![图片](https://user-images.githubusercontent.com/19602424/236656362-1d346faa-6582-44eb-9722-8bb2de0eaa92.png)
#### 3.2 克隆发布分支到本地
> HertzBeat 编译打包,在项目`web-app`目录下执行以下命令,
```shell
git clone -b release-2.1.0-rc1 -c core.autocrlf=false git@github.com:apache/hertzbeat.git
yarn install
yarn package
```
#### 3.3 发布相关JAR到Apache Nexus
##### 3.3.1 发布scala 2.11到Apache Nexus仓库
> 在项目根目录下执行以下命令
```shell
mvn clean install \
-Pscala-2.11 \
-DskipTests \
-Dcheckstyle.skip=true \
-Dmaven.javadoc.skip=true \
-pl 'hertzbeat-common,hertzbeat-flink' \
-pl '!hertzbeat-console/hertzbeat-console-service' \
-amd
mvn clean package
```
> HertzBeat-Collector 编译打包,在项目`collector`目录下执行以下命令
```shell
mvn deploy \
-Pscala-2.11,apache-release \
-DskipTests \
-Dmaven.javadoc.skip=true \
-DretryFailedDeploymentCount=3
mvn clean package -Pcluster
```
##### 3.3.2 发布scala 2.12到Apache Nexus仓库
生成的二进制包在 `manager/target/hertzbeat-{version}.tar.gz``collector/target/hertzbeat-collector-{version}.tar.gz``collector/target/hertzbeat-collector-{version}-bin.tar.gz`
```shell
mvn clean install \
-Pscala-2.12 \
-DskipTests \
-Dcheckstyle.skip=true \
-Dmaven.javadoc.skip=true \
-pl 'hertzbeat-common,hertzbeat-flink' \
-pl '!hertzbeat-console/hertzbeat-console-service' \
-amd
```
```shell
mvn deploy \
-Pscala-2.12,apache-release \
-DskipTests \
-Dmaven.javadoc.skip=true \
-DretryFailedDeploymentCount=3
```
```shell
mvn deploy \
-Papache-release \
-DskipTests \
-Dmaven.javadoc.skip=true \
-DretryFailedDeploymentCount=3
```
##### 3.3.3 检查是否成功发布到Apache Nexus仓库
> 访问 https://repository.apache.org/ 并登录,如果有scala 2.11、scala 2.12,说明发布成功。
![图片](https://user-images.githubusercontent.com/19602424/236657233-08d142eb-5f81-427b-a04d-9ab3172199c1.png)
#### 3.4 编译二进制包
> Scala 2.11 编译打包
```shell
> ./build.sh # 选择 "mixed mode" 和 "scala 2.11"
```
> Scala 2.12 编译打包
```shell
> ./build.sh # 选择 "mixed mode" 和 "scala 2.12"
```
#### 3.4 打包项目源代码
> 打包项目源码
```shell
git archive \
--format=tar.gz \
--output="dist/apache-hertzbeat-2.1.0-incubating-src.tar.gz" \
--prefix=apache-hertzbeat-2.1.0-incubating-src/ \
release-2.1.0-rc1
--output="target/apache-hertzbeat-1.6.0-incubating-src.tar.gz" \
--prefix=apache-hertzbeat-1.6.0-incubating-src/ \
release-1.6.0-rc1
```
> 会生成以下3个文件
生成的代码归档文件在 `target/apache-hertzbeat-1.6.0-incubating-src.tar.gz`
```
apache-hertzbeat-2.1.0-incubating-src.tar.gz
apache-hertzbeat_2.11-2.1.0-incubating-bin.tar.gz
apache-hertzbeat_2.12-2.1.0-incubating-bin.tar.gz
```
#### 3.4 对二进制和源码包进行签名
#### 3.5 对二进制和源码包进行签名
将上步骤生成的三个文件包放到`dist`目录下(若无则新建目录),然后对文件包进行签名和SHA512校验和生成。
```shell
cd dist
@@ -349,18 +235,18 @@ for i in *.tar.gz; do echo $i; sha512sum $i > $i.sha512 ; done
> 最终文件列表如下
```
apache-hertzbeat-2.1.0-incubating-src.tar.gz
apache-hertzbeat-2.1.0-incubating-src.tar.gz.asc
apache-hertzbeat-2.1.0-incubating-src.tar.gz.sha512
apache-hertzbeat_2.11-2.1.0-incubating-bin.tar.gz
apache-hertzbeat_2.11-2.1.0-incubating-bin.tar.gz.asc
apache-hertzbeat_2.11-2.1.0-incubating-bin.tar.gz.sha512
apache-hertzbeat_2.12-2.1.0-incubating-bin.tar.gz
apache-hertzbeat_2.12-2.1.0-incubating-bin.tar.gz.asc
apache-hertzbeat_2.12-2.1.0-incubating-bin.tar.gz.sha512
apache-hertzbeat-1.6.0-incubating-src.tar.gz
apache-hertzbeat-1.6.0-incubating-src.tar.gz.asc
apache-hertzbeat-1.6.0-incubating-src.tar.gz.sha512
apache-hertzbeat_2.11-1.6.0-incubating-bin.tar.gz
apache-hertzbeat_2.11-1.6.0-incubating-bin.tar.gz.asc
apache-hertzbeat_2.11-1.6.0-incubating-bin.tar.gz.sha512
apache-hertzbeat_2.12-1.6.0-incubating-bin.tar.gz
apache-hertzbeat_2.12-1.6.0-incubating-bin.tar.gz.asc
apache-hertzbeat_2.12-1.6.0-incubating-bin.tar.gz.sha512
```
#### 3.5 验证签名
#### 3.6 验证签名
```shell
$ cd dist
@@ -368,15 +254,15 @@ $ cd dist
# 验证签名
$ for i in *.tar.gz; do echo $i; gpg --verify $i.asc $i ; done
apache-hertzbeat-2.1.0-incubating-src.tar.gz
apache-hertzbeat-1.6.0-incubating-src.tar.gz
gpg: Signature made Tue May 2 12:16:35 2023 CST
gpg: using RSA key 85778A4CE4DD04B7E07813ABACFB69E705016886
gpg: Good signature from "muchunjin (for apache HertzBeat release create at 20230501) <muchunjin@apache.org>" [ultimate]
apache-hertzbeat_2.11-2.1.0-incubating-bin.tar.gz
apache-hertzbeat_2.11-1.6.0-incubating-bin.tar.gz
gpg: Signature made Tue May 2 12:16:36 2023 CST
gpg: using RSA key 85778A4CE4DD04B7E07813ABACFB69E705016886
gpg: Good signature from "muchunjin (for apache HertzBeat release create at 20230501) <muchunjin@apache.org>" [ultimate]
apache-hertzbeat_2.12-2.1.0-incubating-bin.tar.gz
apache-hertzbeat_2.12-1.6.0-incubating-bin.tar.gz
gpg: Signature made Tue May 2 12:16:37 2023 CST
gpg: using RSA key 85778A4CE4DD04B7E07813ABACFB69E705016886
gpg: BAD signature from "muchunjin (for apache HertzBeat release create at 20230501) <muchunjin@apache.org>" [ultimate]
@@ -384,81 +270,80 @@ gpg: BAD signature from "muchunjin (for apache HertzBeat release create at 20230
# 验证 SHA512
$ for i in *.tar.gz; do echo $i; sha512sum --check $i.sha512; done
apache-hertzbeat-2.1.0-incubating-src.tar.gz
apache-hertzbeat-2.1.0-incubating-src.tar.gz: OK
apache-hertzbeat_2.11-2.1.0-incubating-bin.tar.gz
apache-hertzbeat_2.11-2.1.0-incubating-bin.tar.gz: OK
apache-hertzbeat_2.12-2.1.0-incubating-bin.tar.gz
apache-hertzbeat_2.12-2.1.0-incubating-bin.tar.gz: OK
apache-hertzbeat-1.6.0-incubating-src.tar.gz
apache-hertzbeat-1.6.0-incubating-src.tar.gz: OK
apache-hertzbeat_2.11-1.6.0-incubating-bin.tar.gz
apache-hertzbeat_2.11-1.6.0-incubating-bin.tar.gz: OK
apache-hertzbeat_2.12-1.6.0-incubating-bin.tar.gz
apache-hertzbeat_2.12-1.6.0-incubating-bin.tar.gz: OK
```
#### 3.6 发布Apache SVN仓库中dev目录的物料包
#### 3.7 发布 Apache SVN 仓库中 dev 目录的物料包
- 检出仓库
```shell
# 检出Apache SVN仓库中的dev目录到Apache HertzBeat™项目根目录下的dist/hertzbeat_svn_dev目录下
svn co https://dist.apache.org/repos/dist/dev/incubator/hertzbeat dist/hertzbeat_svn_dev
# 检出 Apache SVN 仓库中的 dev/incubator/hertzbeat 目录到 Apache HertzBeat™ 项目根目录下的 svn/dev 目录下
svn co https://dist.apache.org/repos/dist/dev/incubator/hertzbeat svn/dev
svn co --depth empty https://dist.apache.org/repos/dist/dev/incubator/hertzbeat
```
创建一个版本号目录,并以${release_version}-${RC_version}的形式命名。RC_version从1开始,即候选版本从RC1开始。在发布过程中,如果出现导致投票失败的问题,需要进行修正,那么RC版本需要迭代,RC版本号需要+1。例如:为版本2.1.0-RC1投票。如果投票顺利通过,那么RC1版本的资料将作为最终版本的资料发布。如果出现问题(当hertzbeat/incubator社区进行投票时,投票者会严格检查各种发布要求和合规问题)并需要纠正,那么修正后重新启动投票,下一次的候选版本为2.1.0-RC2。
- 复制物料包到 SVN 仓库
创建一个版本号目录,并以${release_version}-${RC_version}的形式命名。RC_version从1开始,即候选版本从RC1开始。在发布过程中,如果出现导致投票失败的问题,需要进行修正,那么RC版本需要迭代,RC版本号需要+1。例如:为版本1.6.0-RC1投票。如果投票顺利通过,那么RC1版本的资料将作为最终版本的资料发布。如果出现问题(当hertzbeat/incubator社区进行投票时,投票者会严格检查各种发布要求和合规问题)并需要纠正,那么修正后重新启动投票,下一次的候选版本为1.6.0-RC2。
```shell
mkdir -p dist/hertzbeat_svn_dev/2.1.0-RC1
cp -f dist/* dist/hertzbeat_svn_dev/2.1.0-RC1
mkdir -p svn/dev/1.6.0-RC1
cp -f dist/* svn/dev/1.6.0-RC1
```
提交到SVN
- 提交到SVN
```shell
cd dist/hertzbeat_svn_dev/
cd svn/dev
# 1. 检查svn状态
svn status
# 2. 添加到svn
svn add 2.0.0-RC1
svn add 1.6.0-RC1
svn status
# 3. 提交到svn远端服务器
svn commit -m "release for HertzBeat 2.1.0"
svn commit -m "release for HertzBeat 1.6.0-RC1"
```
#### 3.7 检查Apache SVN提交结果
- 检查 Apache SVN 提交结果
> 在浏览器中访问 https://dist.apache.org/repos/dist/dev/incubator/hertzbeat/2.1.0-RC1/
> 在浏览器中访问 https://dist.apache.org/repos/dist/dev/incubator/hertzbeat/ , 检查是否有新的版本内容
![图片](https://github.com/apache/hertzbeat/assets/19602424/e4763537-af9f-4f2a-967d-912e6670b360)
## 4. 进入社区投票阶段
## 3. 进入社区投票阶段
#### 3.1 发送社区投票邮件
#### 4.1 发送社区投票邮件
发送社区投票邮件需要至少三个`+1`,且无`-1`
> `Send to`: dev@hertzbeat.apache.org <br />
> `Title`: [VOTE] Release Apache HertzBeat (incubating) 2.1.0 rc1 <br />
> `Title`: [VOTE] Release Apache HertzBeat (incubating) 1.6.0 rc1 <br />
> `Body`:
```
Hello HertzBeat Community:
This is a call for vote to release Apache HertzBeat (incubating) version release-2.1.0-RC1.
This is a call for vote to release Apache HertzBeat (incubating) version release-1.6.0-RC1.
Apache Streamark - Make stream processing easier! Easy-to-use streaming application development framework and operation platform.
Apache HertzBeat - a real-time monitoring system with agentless, performance cluster, prometheus-compatible, custom monitoring and status page building capabilities.
Release notes:
https://hertzbeat.apache.org/download/release-note/2.1.0/
https://github.com/apache/hertzbeat/releases/tag/v1.6.0
The release candidates:
https://dist.apache.org/repos/dist/dev/incubator/hertzbeat/2.1.0-RC1/
Maven artifacts are available in a staging repository at:
https://repository.apache.org/content/repositories/orgapachehertzbeat-1012/
https://dist.apache.org/repos/dist/dev/incubator/hertzbeat/1.6.0-RC1/
Git tag for the release:
https://github.com/apache/hertzbeat/releases/tag/v2.1.0-rc1
https://github.com/apache/hertzbeat/releases/tag/v1.6.0-rc1
The artifacts signed with PGP key [05016886], corresponding to [muchunjin@apache.org], that can be found in keys file:
https://downloads.apache.org/incubator/hertzbeat/KEYS
@@ -489,9 +374,7 @@ Steps to validate the releasePlease refer to:
https://hertzbeat.apache.org/community/release/how-to-verify
How to Build:
1.cd hertzbeat
2.sh ./build.sh
https://hertzbeat.apache.org/docs/community/how_to_release/#34-compile-the-binary-package
Thanks!
```
@@ -499,22 +382,19 @@ Thanks!
在72小时后,将统计投票结果,并发送投票结果邮件,如下所示。
> `Send to`: dev@hertzbeat.apache.org <br />
> `Title`: [RESULT][VOTE] Release Apache HertzBeat (incubating) 2.1.0-rc1 <br />
> `Title`: [RESULT][VOTE] Release Apache HertzBeat (incubating) 1.6.0-rc1 <br />
> `Body`:
```
Dear HertzBeat community,
Thanks for your review and vote for "Release Apache HertzBeat (incubating) 2.1.0-rc1"
Thanks for your review and vote for "Release Apache HertzBeat (incubating) 1.6.0-rc1"
I'm happy to announce the vote has passed:
4 binding +1, from:
- Zhuoyu Chen
- Huajie Wang
- Linying Yu
- Shaokang Lv
- cc
1 non-binding +1, from:
@@ -534,31 +414,25 @@ Best,
ChunJin Mu
```
邮件内容中的一项是`Vote thread`链接获取方式如下:<br />
访问此地址 https://lists.apache.org/list.html?dev@hertzbeat.apache.org , 找到邮件标题并点击显示投票内容
邮件内容中的一项是`Vote thread`在 https://lists.apache.org/list.html?dev@hertzbeat.apache.org 查看获取
![图片](https://github.com/apache/streampark/assets/19602424/5755ed06-529f-4739-96a8-1ac13bbb21ea)
右键点击标题,点击复制链接地址获取链接
![图片](https://github.com/apache/streampark/assets/19602424/1616da5b-7891-45cc-b956-a0ba5e7ce874)
#### 3.2 发送孵化社区投票邮件
发送孵化社区投票邮件需要至少三个`+1`,且无`-1`
> `Send to`: general@incubator.apache.org <br />
> `cc`: dev@hertzbeat.apache.org、tison@apache.org、willem.jiang@gmail.com <br />
> `Title`: [VOTE] Release Apache HertzBeat (incubating) 2.1.0-rc1 <br />
> `cc`: dev@hertzbeat.apache.org、private@hertzbeat.apache.org <br />
> `Title`: [VOTE] Release Apache HertzBeat (incubating) 1.6.0-rc1 <br />
> `Body`:
```
Hello Incubator Community:
This is a call for a vote to release Apache HertzBeat (incubating) version 2.1.0-RC1.
The Apache HertzBeat community has voted on and approved a proposal to release Apache HertzBeat (incubating) version 2.1.0-RC1.
This is a call for a vote to release Apache HertzBeat (incubating) version 1.6.0-RC1.
The Apache HertzBeat community has voted on and approved a proposal to release Apache HertzBeat (incubating) version 1.6.0-RC1.
We now kindly request the Incubator PMC members review and vote on this incubator release.
Apache HertzBeat, Make stream processing easier! Easy-to-use streaming application development framework and operation platform.
Apache HertzBeat, a real-time monitoring system with agentless, performance cluster, prometheus-compatible, custom monitoring and status page building capabilities.
HertzBeat community vote thread:
https://lists.apache.org/thread/t01b2lbtqzyt7j4dsbdp5qjc3gngjsdq
@@ -567,13 +441,10 @@ Vote result thread:
https://lists.apache.org/thread/t5z58mvrs1drgzfyc48c9lhmd8skswn7
The release candidate:
https://dist.apache.org/repos/dist/dev/incubator/hertzbeat/2.1.0-RC1/
https://dist.apache.org/repos/dist/dev/incubator/hertzbeat/1.6.0-RC1/
Git tag for the release:
https://github.com/apache/hertzbeat/releases/tag/v2.1.0-rc1
Maven artifacts are available in a staging repository at:
https://repository.apache.org/content/repositories/orgapachehertzbeat-1012/
https://github.com/apache/hertzbeat/releases/tag/v1.6.0-rc1
The artifacts signed with PGP key [05016886], corresponding to [muchunjin@apache.org], that can be found in keys file:
https://downloads.apache.org/incubator/hertzbeat/KEYS
@@ -596,10 +467,10 @@ Steps to validate the release Please refer to:
How to Build:
1) clone source code:
> git clone -b v2.1.0-rc1 git@github.com:apache/hertzbeat.git
> git clone -b v1.6.0-rc1 git@github.com:apache/hertzbeat.git
2) build project:
> cd hertzbeat && sh ./build.sh
https://hertzbeat.apache.org/docs/community/how_to_release/#34-compile-the-binary-package
Thanks,
@@ -628,22 +499,20 @@ Chunjin Mu
> `Send to`: general@incubator.apache.org <br />
> `cc`: dev@hertzbeat.apache.org、tison@apache.org、willem.jiang@gmail.com <br />
> `Title`: [RESULT][VOTE] Release Apache HertzBeat (incubating) 2.1.0-rc1 <br />
> `Title`: [RESULT][VOTE] Release Apache HertzBeat (incubating) 1.6.0-rc1 <br />
> `Body`:
```
Hi all,
Thanks for your review and vote for "Release Apache HertzBeat (incubating) 2.1.0-rc1"
Thanks for your review and vote for "Release Apache HertzBeat (incubating) 1.6.0-rc1"
I'm happy to announce the vote has passed:
3 binding votes, no +0 or -1 votes.
Thanks for reviewing and voting.
+3 (binding) +1, from:
- tison
- Gang Li
- Willem Jiang
- cc
no 0 or -1 votes.
@@ -657,12 +526,7 @@ Best,
ChunJin Mu
```
邮件内容中的一项是`Vote thread`链接获取方式如下:<br />
访问此地址 https://lists.apache.org/list.html?general@incubator.apache.org , 找到邮件标题并点击显示投票内容
![图片](https://github.com/apache/streampark/assets/19602424/aea68925-7911-4413-8b2d-aea12685337f)
右键点击标题,点击复制链接地址获取链接
邮件内容中的一项是`Vote thread`在 https://lists.apache.org/list.html?general@incubator.apache.org 查看获取
等待一天,查看看导师是否有其他意见,如果没有,发送以下公告邮件
@@ -671,94 +535,62 @@ ChunJin Mu
#### 4.1 迁移源代码和二进制包
```shell
svn mv https://dist.apache.org/repos/dist/dev/incubator/hertzbeat/2.1.0-RC1 https://dist.apache.org/repos/dist/release/incubator/hertzbeat/2.1.0 -m "transfer packages for 2.1.0-RC1"
svn mv https://dist.apache.org/repos/dist/dev/incubator/hertzbeat/1.6.0-RC1 https://dist.apache.org/repos/dist/release/incubator/hertzbeat/1.6.0 -m "transfer packages for 1.6.0-RC1"
```
#### 4.2 发布版本到Apache Staging仓库
#### 4.2 添加新版本下载地址到官网
- 登录 http://repository.apache.org ,使用你的Apache账号登录
- 点击左侧的 Staging repositories
- 选择你最近上传的仓库,投票邮件中指定的仓库
- 点击上方的Release按钮,这个过程会进行一系列的检查
> 仓库同步到其他数据源通常需要24小时左右
https://github.com/apache/hertzbeat/blob/master/home/docs/download.md
https://github.com/apache/hertzbeat/blob/master/home/i18n/zh-cn/docusaurus-plugin-content-docs/current/download.md
#### 4.3 添加新版本下载地址到官网
添加以下内容到官网的src/pages/download/data.json文件中
```
{
"version": "2.1.0",
"date": "2023-05-11"
}
```
最终文件内容如下
```
[
{
"version": "2.0.0",
"date": "2023-02-21"
},
{
"version": "2.1.0",
"date": "2023-05-11"
}
]
```
打开官网地址 https://hertzbeat.apache.org/download/ 查看是否有新版本的下载
完成后打开官网地址 https://hertzbeat.apache.org/docs/download/ 查看是否有新版本下载
> 需要注意的是,下载链接可能需要一个小时后才会生效,请注意。
![图片](https://github.com/apache/hertzbeat/assets/19602424/e7900fb2-7bfc-4fa1-bd40-9806e6a822ef)
#### 4.3 Github 生成 Release
#### 4.4 在github上生成release
基于release-2.1.0-rc1分支创建一个名为v2.1.0的标签,并将此标签设置为latest release。
基于 release-1.6.0-rc1 分支创建一个名为 v1.6.0 的标签,并将此标签设置为 latest release
然后输入发版标题和描述
- 发版标题:
```
v2.1.0-incubating
v1.6.0-incubating
```
- 描述:
```
Release-2.1.0-incubating
release note: https://hertzbeat.apache.org/download/release-note/2.1.0
Release-1.6.0-incubating
release note: xxx
```
![图片](https://github.com/apache/streampark/assets/19602424/84723ff5-a295-471d-8265-1b8ef867c3d1)
然后点击`Publish release`按钮。
然后将release-2.1.0-rc1分支重命名为release-2.1.0。
然后将 release-1.6.0-rc1 分支重命名 为release-1.6.0。
#### 4.5 发送新版本公告邮件
#### 4.4 发送新版本公告邮件
> `Send to`: general@incubator.apache.org <br />
> `cc`: dev@hertzbeat.apache.org <br />
> `Title`: [ANNOUNCE] Release Apache HertzBeat (incubating) 2.1.0 <br />
> `Title`: [ANNOUNCE] Release Apache HertzBeat (incubating) 1.6.0 <br />
> `Body`:
```
Hi all,
We are glad to announce the release of Apache HertzBeat (incubating) 2.1.0.
We are glad to announce the release of Apache HertzBeat (incubating) 1.6.0.
Once again I would like to express my thanks to your help.
Apache HertzBeat(https://hertzbeat.apache.org/) - Make stream processing easier! Easy-to-use streaming application development framework and operation platform.
Apache HertzBeat(https://hertzbeat.apache.org/) - a real-time monitoring system with agentless, performance cluster, prometheus-compatible, custom monitoring and status page building capabilities.
Download Links: https://hertzbeat.apache.org/download/
Release Notes: https://hertzbeat.apache.org/download/release-note/2.1.0
Release Notes: https://github.com/apache/hertzbeat/releases/tag/v1.6.0
HertzBeat Resources:
- Issue: https://github.com/apache/hertzbeat/issues
- Mailing list: dev@hertzbeat.apache.org
- Apache HertzBeat Team
Apache HertzBeat Team
Best,
ChunJin Mu
@@ -766,4 +598,6 @@ ChunJin Mu
该版本的发布顺利结束。
----
This doc refer from [Apache StreamPark](https://streampark.apache.org/)
@@ -18,16 +18,13 @@ sidebar_label: 常见问题
> docker安装默认启用无此问题
> 详见 https://stackoverflow.com/questions/11506321/how-to-ping-an-ip-address
4. 监控页面历史图表不显示,弹出 [无法提供历史图表数据,请配置依赖服务TDengine时序数据库]
> 如弹窗所示,历史图表展示的前提是需要安装配置hertzbeat的依赖服务 - TDengine数据库
> 安装初始化此数据库参考 [TDengine安装初始化](../start/tdengine-init)
5. 配置了k8s监控,但是实际监控时间并未按照正确间隔时间执行
4. 配置了k8s监控,但是实际监控时间并未按照正确间隔时间执行
请参考下面几点排查问题:
> 一:首先查看hertzbeat的错误日志,如果出现了'desc: SQL statement too long, check maxSQLLength config',信息
> 二:需要调整tdengine配置文件,可在服务器创建taos.cfg文件,调整# max length of an SQL : maxSQLLength 654800,然后重启tdengine,需要加入配置文件的挂载
> 三:如果遇到了重启tdengine失败,需要调整挂载数据文件中的配置,见 .../taosdata/dnode/dnodeEps.json,中dnodeFqdn调整为启动失败的dockerId即可,然后docker restart tdengine
6.配置http api监控,用于进行业务接口探测,确保业务可以用,另外接口有进行token鉴权校验,"AuthorizationBearer eyJhbGciOiJIUzI1....",配置后测试,提示“StatusCode 401”。服务端应用收到的token为"AuthorizationBearer%20eyJhbGciOiJIUzI1....",hertzbeat对空格进行转义为“%20”,服务器没有转义导致鉴权失败,建议转义功能作为可选项。
5. 配置http api监控,用于进行业务接口探测,确保业务可以用,另外接口有进行token鉴权校验,"AuthorizationBearer eyJhbGciOiJIUzI1....",配置后测试,提示“StatusCode 401”。服务端应用收到的token为"AuthorizationBearer%20eyJhbGciOiJIUzI1....",hertzbeat对空格进行转义为“%20”,服务器没有转义导致鉴权失败,建议转义功能作为可选项。
### Docker部署常见问题
+7 -7
View File
@@ -245,6 +245,13 @@
"help/kubernetes"
]
},
{
"type": "category",
"label": "network",
"items": [
"help/huawei_switch"
]
},
{
"type": "category",
"label": "threshold",
@@ -270,13 +277,6 @@
"help/alert_smn"
]
},
{
"type": "category",
"label": "Network",
"items": [
"help/huawei_switch"
]
},
"help/issue"
]
},
-11
View File
@@ -1,11 +0,0 @@
import useDocusaurusContext from '@docusaurus/useDocusaurusContext'
export default function transfer(imageUrl) {
const {siteConfig} = useDocusaurusContext();
const {cdnUrl} = siteConfig.customFields;
if (cdnUrl !== null && imageUrl !== undefined && imageUrl !== null) {
return cdnUrl + imageUrl;
} else {
return imageUrl;
}
}
+1 -1
View File
@@ -67,7 +67,7 @@ export const features = [
export const usersLink = [
{
img: 'tancloud_logo.svg',
img: 'tancloud-logo.svg',
alt: 'tancloud',
}
]
-3
View File
@@ -1,3 +0,0 @@
html[data-theme=dark] .button {
--ifm-button-border-color: transparent;
}
-191
View File
@@ -1,7 +1,5 @@
@import url(navbar.css);
@import url(docsearch.css);
@import url(hero.css);
@import url(buttons.css);
:root {
--ifm-color-primary: #7228B5;
@@ -12,25 +10,13 @@
--ifm-color-primary-lighter: #8228B5;
--ifm-color-primary-lightest: #9228B5;
--ifm-navbar-link-hover-color: var(--ifm-color-primary);
--ifm-background-color: #fafafa;
--ifm-code-font-size: 95%;
--ifm-navbar-link-color: #000;
--ifm-font-family-base: Verdana, Arial, Helvetica, sans-serif;
--ifm-font-family-monospace: sans-serif;
--ifm-button-padding-horizontal: 0.55rem;
--ifm-button-padding-vertical: .7rem;
--ifm-menu-color: #000;
--ifm-menu-color-background-active: transparent;
--ifm-toc-link-color: #000;
--ifm-table-border-color: #efefef;
--ifm-navbar-height: 85px;
--ifm-button-border-width: 0;
--wdio-spacing-vertical: 60px;
--wdio-link-background-color: #eee0d7;
--wdio-link-color: #000;
--wdio-section-background-color: #fff;
--wdio-dark-section-background-color: #b78af8;
}
h1, h2, h3 {
@@ -49,25 +35,6 @@ h3 {
font-size: 1.3em;
}
html[data-theme=dark] {
--wdio-link-background-color: #4e1e02;
--wdio-link-color: #fff;
--ifm-menu-color: #fff;
--ifm-table-border-color: var(--ifm-color-emphasis-300);
--ifm-toc-link-color: #fff;
}
@media (max-width: 996px) {
:root {
--wdio-spacing-vertical: 20px;
}
}
@media (max-width: 500px) {
:root {
--wdio-spacing-vertical: 10px;
}
}
@media only screen and (-webkit-min-device-pixel-ratio: 1) {
:root {
@@ -162,10 +129,6 @@ footer > div{
align-items: center;
}
html[data-theme=dark] footer{
background-color: black;
}
.footer__copyright {
font-size: xx-small;
text-align: left;
@@ -175,161 +138,7 @@ html[data-theme=dark] footer{
margin-top: 1rem;
}
/*.footer__link-item[target="_blank"]:after {*/
/* padding: 0 4px;*/
/* content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' x='0px' y='0px' viewBox='0 0 100 100' width='15' height='15'%3E%3Cpath fill='gray' d=' M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0, 0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z '%3E%3C/path%3E%3Cpolygon fill='gray' points=' 45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8, 14.9 62.8,22.9 71.5,22.9 '%3E%3C/polygon%3E%3C/svg%3E")*/
/*}*/
html[data-theme=dark] {
--wdio-section-background-color: var(--ifm-footer-background-color);
--wdio-dark-section-background-color: #18191A;
}
.docusaurus-highlight-code-line {
background-color: #484d5b;
display: block;
margin: 0 calc(-1 * var(--ifm-pre-padding));
padding: 0 var(--ifm-pre-padding);
}
.features_src-pages- h3 {
text-align: center;
}
.features_src-pages- .featureImage_src-pages- {
width: 120px;
height: 120px;
margin-bottom: 20px;
}
.twitterProfile,
.githubProfile {
margin-left: 10px;
}
.twitterProfile svg,
.githubProfile svg {
width: 23px;
color: #1B98E4;
transform: translate(0, 3px);
}
.githubProfile:before {
content: '';
width: 27px;
height: 25px;
background: url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E") no-repeat;
}
html[data-theme="dark"] .githubProfile:before {
background: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='white' d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E")
no-repeat;
}
img[alt^=Support] {
width: 20px;
margin-right: 5px;
display: inline-block;
}
.main-wrapper .markdown p > a,
.main-wrapper .container p > a {
background-color: var(--wdio-link-background-color);
color: var(--wdio-link-color);
text-decoration: none!important;
border-bottom: 1px solid var(--ifm-color-primary);
padding: 2px;
}
.main-wrapper .container .admonition p > a {
background-color: transparent;
color: inherit;
text-decoration: underline!important;
border-bottom: 0;
}
.main-wrapper .markdown p > a:hover,
.main-wrapper .container p > a:hover {
color: var(--ifm-color-primary)
}
article thead {
background-color: var(--ifm-table-border-color);
font-family: Verdana, Arial, Helvetica, sans-serif;
text-align: left;
}
.prism-code > div {
background-color: var(--ifm-table-border-color)!important;
}
.darkSection .prism-code > div {
background-color: var(--wdio-section-background-color)!important;
}
html[data-theme=dark] .prism-code > div {
background-color: #282B36!important;
}
div[class^='codeBlockTitle'] {
background-color: var(--ifm-table-border-color)!important;
border-bottom: var(--ifm-color-emphasis-300) 1px solid;
}
html[data-theme=dark] div[class^='codeBlockTitle'] {
background-color: #282B36!important;
}
div[role="tabpanel"] .prism-code {
border-top-left-radius: 0;
}
.tabs__item:hover {
border-bottom-left-radius: 0;
}
.markdown > div > .margin-vert--md {
margin-top: 0!important;
}
a code {
background-color: transparent;
}
.highlightSection .token-line {
font-size: 90%!important
}
.highlightSection .prism-code:before {
content: "";
width: 12px;
height: 12px;
background: #ff5f56;
display: block;
border-radius: 50%;
position: absolute;
top: 12px;
left: 12px;
}
.highlightSection .prism-code:after {
content: "";
width: 12px;
height: 12px;
background: #ffbd2e;
display: block;
border-radius: 50%;
position: absolute;
top: 12px;
left: 32px;
}
.highlightSection .prism-code > div {
padding-top: calc(var(--ifm-pre-padding) + 5px);
}
.highlightSection .prism-code > div:before {
content: "";
display: block;
/* width: 12px; */
height: 12px;
background: #27C941;
border-radius: 50%;
position: absolute;
top: 12px;
left: 52px;
}
div[role="tabpanel"] .margin-vert--md {
margin-top: 0!important;
margin-bottom: 0!important;
}
-29
View File
@@ -1,29 +0,0 @@
.navbar .DocSearch-Button {
height: 30px;
}
.navbar .DocSearch-Button-Placeholder {
font-size: 1.1rem;
font-family: 'IBM Plex Mono';
color: #999
}
@media (max-width: 1296px) {
.navbar .DocSearch-Button-Placeholder {
font-size: 0.8rem;
font-family: 'IBM Plex Mono';
color: #999
}
}
body .navbar .DocSearch-Search-Icon {
width: 15px;
height: 15px;
color:#999
}
.navbar .DocSearch-Button-Key {
width: 18px;
height: 16px;
top: 0px;
}
+1 -8
View File
@@ -4,7 +4,7 @@
}
html[data-theme=dark] .hero--primary {
--ifm-hero-background-color: var(--ifm-footer-background-color);
--ifm-hero-background-color: #0c0c0c;
--ifm-hero-text-color: #fff;
}
@@ -32,10 +32,3 @@ html[data-theme=dark] .hero--primary {
font-weight: bolder;
}
}
#fblike {
height: 20px;
}
#fblike, #twitter-widget-1 {
margin-right: 20px;
}
-100
View File
@@ -1,103 +1,3 @@
:root {
--ifm-navbar-background-color: #efefef;
}
html[data-theme=dark] {
--ifm-navbar-link-color: #ffffff;
--ifm-navbar-background-color: #000000;
}
.navbar {
background: var(--ifm-navbar-background-color);
text-align: left;
padding: 0;
height: 60px;
}
.navbar__items--right {
margin-right: 20px;
}
.navbar .navbar__items > .navbar__brand {
height: 40px;
margin: 5px 10px 10px 25px;
}
.navbar .navbar-sidebar .navbar__brand {
margin-left: 8px;
}
.navbar__link {
font-size: 16px;
font-weight: bold;
}
@media (max-width: 1296px) {
.navbar__link {
font-size: 10px;
font-weight: bold;
}
}
.navbar__brand .navbar__title {
font-size: 24px;
margin-top: 4px;
}
.navbar__brand .navbar__logo {
margin-top: 3px;
}
@media (max-width: 996px) {
.navbar__toggle {
margin-left: 1rem;
}
}
.header-console-link {
background-color: var(--ifm-color-primary);
color: #fff;
border-radius: 4px;
margin-right: 30px;
}
.header-console-link:hover {
color: var(--ifm-color-primary);
background-color: #fff;
}
.teamProfile {
margin-bottom: 20px;
}
.githubProfile {
margin-left: 15px;
}
.githubProfile:before {
content: '';
display: inline-block;
transform: translate(0, 3px);
height: 20px;
width: 20px;
}
.toggle_node_modules-\@docusaurus-theme-classic-lib-next-theme-Toggle- {
width: 0
}
body .react-toggle-track {
width: 55px;
height: 30px;
}
body .react-toggle-track-x {
right: 15px;
}
body .react-toggle-thumb {
top: 4px;
left: 3px;
}
.header-github-link:hover,
.header-twitter-link:hover,
.header-youtube-link:hover,
-60
View File
@@ -1,60 +0,0 @@
import React, { useCallback, useEffect, useState } from 'react';
import { Modal, Button } from '@douyinfe/semi-ui';
import Translate from '@docusaurus/Translate';
import styles from './DiaLog.module.css';
// from rainbond: https://github.com/goodrain/rainbond-docs/blob/main/src/components/DiaLog/index.tsx
export default function DiaLog() {
const [Visible, setVisible] = useState(false);
const handleCancel = useCallback(() => {
setVisible(false);
}, []);
// useEffect(() => {
// if (sessionStorage.getItem("support-hertzbeat") == null) {
// setTimeout(() => {
// setVisible(true);
// }, 10);
// sessionStorage.setItem("support-hertzbeat", true);
// }
// }, []);
return (
<>
<Modal
title={
<p style={{ fontSize: "22px" }}><Translate>Support HertzBeat</Translate></p>
}
visible={Visible}
// onOk={handleOk}
onCancel={handleCancel}
centered
bodyStyle={{overflow: 'auto'}}
maskClosable={false}
style={{width: "600px", fontSize: "17px"}}
icon={
<img src="/img/hertzbeat-logo.svg" alt="logo" />
}
footer={
<div className={styles.goToGithubWrapper}>
<p >
👇 <b style={{ color: "#26B226"}}><Translate>click</Translate></b>
</p>
<a href="https://github.com/apache/hertzbeat" target="_blank">
<Button type="primary" theme="solid">
<Translate>Go to Github</Translate>
</Button>
</a>
</div>
}>
<p style={{lineHeight: 1.5, textAlign: "center"}}>
<Translate>If you like HertzBeat, star us on GitHub</Translate>
</p>
<p style={{lineHeight: 1.5}}>
<Translate>We will grow better with your support.</Translate>
</p>
</Modal>
</>
);
}
@@ -1,7 +0,0 @@
.goToGithubWrapper{
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
+3 -11
View File
@@ -1,18 +1,10 @@
import React from 'react'
import clsx from 'clsx'
import styles from './Feature.module.css'
import cdnTransfer from '../../CdnTransfer'
export default function Feature({ imageUrl, title, description }) {
const imgUrl = cdnTransfer(imageUrl)
export default function Feature({ title, description }) {
return (
<div className={clsx('col col--4', styles.feature)}>
{imgUrl && (
<div className="text--center">
<img className={styles.featureImage} src={imgUrl} alt={title} />
</div>
)}
<h3>{title}</h3>
<div className={clsx('col col--4')}>
<h3 style={{textAlign: 'center', fontSize: 'x-large'}}>{title}</h3>
<p>{description}</p>
</div>
)
@@ -1,15 +0,0 @@
.features {
display: flex;
align-items: center;
}
.featureImage {
height: 200px;
width: 200px;
}
.features h3 {
font-size: 1.7em;
font-weight: 500;
text-align: left;
}
-34
View File
@@ -1,34 +0,0 @@
import React from 'react'
import clsx from 'clsx'
import styles from './highlight.module.css'
export default function Highlight({ reversed, title, img, text, isDark }) {
const left = <div className={clsx('col col--6', styles.featureImage, reversed ? styles.featureImageReversed : '')}>{img}</div>
const right = (
<div className={clsx('col col--6', styles.featureContent, reversed ? styles.featureContentReversed : '')}>
<h3 className={styles.featureTitle}>{title}</h3>
{text}
</div>
)
return (
<section className={clsx('highlightSection', isDark ? styles.darkSection + ' darkSection' : '')}>
<div className="container">
<div className="row">
{reversed ? (
<>
{right}
{left}
</>
) : (
<>
{left}
{right}
</>
)}
</div>
</div>
</section>
)
}
-74
View File
@@ -1,74 +0,0 @@
import React from 'react'
import clsx from 'clsx'
import styles from './LogoCarousel.module.css'
import "slick-carousel/slick/slick.css";
import "slick-carousel/slick/slick-theme.css";
import Slider from "react-slick";
const iconCommonUrl = '/img/icons/'
// const cdnUrl = '/img/icons/'
var settings = {
infinite: true,
speed: 400,
slidesToShow: 6,
slidesToScroll: 1,
autoplay: true,
autoplaySpeed: 1000,
rows: 1,
responsive : [
{
breakpoint : 1024,
settings : {
slidesToShow : 2.75,
slidesToScroll : 3,
speed : 2000,
infinite : true,
},
},
{
breakpoint : 480,
settings : {
speed : 2000,
slidesToShow : 0.75,
slidesToScroll : 1,
}
}
],
};
export default class LogoCarousel extends React.Component {
constructor (props) {
super(props)
}
render () {
if (!this.props || !this.props.logos) {
return (
<div/>
)
}
this.list = () => (
<Slider {...settings}>
{this.props.logos.map((value, index) => (
<a key={index} href={value.url == null ? '#' : value.url} target="_blank" rel="noopener noreferrer">
<img style={{ maxHeight: '100px', maxWidth: '120px' }} src={value.remoteImg == null ? iconCommonUrl + value.img : value.remoteImg} alt={value.alt} />
</a>
))}
</Slider>
)
return (
<>
<div className={styles.companyUsage} ref={this.containerRef}>
<h3 style={{fontWeight: '520', fontSize: 'large'}}>{this.props.headerTitle}</h3>
<br/>
<div className={clsx(styles.logos)}>
{this.list()}
</div>
</div>
</>
)
}
}
@@ -1,82 +0,0 @@
.companyUsage {
width: 100%;
}
body .companyUsage h3 {
font-size: 1.1em;
font-weight: 900;
}
.logos {
overflow: hidden;
margin: 0 25px;
}
.logos ul {
display: flex;
justify-content: space-around;
/* width: 3200px; */
margin: 0;
transition: transform 1000ms ease;
}
@media screen and (max-width: 1100px) {
.logos {
margin: 0;
}
.logos ul {
padding: 0;
/* width: 3000px; */
}
.logos ul li {
min-width: 125px;
}
}
.logos ul li {
display: flex;
min-width: 150px;
justify-content: center;
align-items: center;
}
.logos ul img {
transition: filter 200ms;
width: 100px;
}
.logos ul a {
background: none;
border: 0;
}
.logoNavigation {
text-align: center;
}
.button:focus {
outline: none;
}
.button::before {
content: "\2022";
color: var(--wdio-link-color);
font-size: 50px;
opacity: .25;
}
.button.buttonActive::before {
opacity: 1;
}
.button {
transition: opacity 200ms ease;
color: transparent;
border: 0;
background: 0;
cursor: pointer;
padding: 10px 10px 0 10px;
width: 30px;
line-height: 10px;
margin: 0 5px;
transform: translateY(20px);
}
@@ -1,41 +0,0 @@
import React from 'react'
import clsx from 'clsx'
import styles from './LogoCarousel.module.css'
const iconCommonUrl = '/img/icons/'
export default class LogoCarouselStatic extends React.Component {
constructor (props) {
super(props)
}
render () {
if (!this.props || !this.props.logos) {
return (
<div/>
)
}
this.list = () => (
<ul>
{this.props.logos.map((value, index) => (
<li key={index}>
<a href={value.url} target="_blank" rel="noopener noreferrer">
<img style={{ maxHeight: '80px', maxWidth: '100px' }} src={iconCommonUrl + value.img} alt={value.alt} />
</a>
</li>
))}
</ul>
)
return (
<>
<div className={styles.companyUsage} ref={this.containerRef}>
<h3>{this.props.headerTitle}</h3>
<div className={clsx(styles.logos)}>
{this.list()}
</div>
</div>
</>
)
}
}
File diff suppressed because one or more lines are too long
-122
View File
@@ -1,122 +0,0 @@
.svg {
width: 60%;
transform: translateY(10%);
}
#headDot1, #headDot2 {
animation: headblinker 5000ms infinite;
}
@keyframes headblinker {
0% { opacity: 0; }
10% { opacity: 1; }
20% { opacity: 0; }
30% { opacity: 1; }
40% { opacity: 0; }
50% { opacity: 1; }
60% { opacity: 0; }
70% { opacity: 1; }
75% { opacity: 0; }
100% { opacity: 0; }
}
#bodyDot1 {
animation: blinker1st 1s ease-in-out infinite;
}
@keyframes blinker1st {
10% { opacity: 0; }
20% { opacity: 1; }
60% { opacity: 1; }
70% { opacity: 0; }
80% { opacity: 1; }
90% { opacity: 0; }
100% { opacity: 1; }
}
#bodyDot2 {
animation: blinker2nd 1s ease-in-out infinite;
}
@keyframes blinker2nd {
10% { opacity: 1; }
20% { opacity: 0; }
30% { opacity: 1; }
60% { opacity: 1; }
70% { opacity: 0; }
80% { opacity: 1; }
90% { opacity: 0; }
100% { opacity: 1; }
}
#bodyDot3 {
animation: blinker3rd 1s ease-in-out infinite;
}
@keyframes blinker3rd {
20% { opacity: 1; }
30% { opacity: 0; }
40% { opacity: 1; }
60% { opacity: 1; }
70% { opacity: 0; }
80% { opacity: 1; }
90% { opacity: 0; }
100% { opacity: 1; }
}
#bodyDot4 {
animation: blinker4th 1s ease-in-out infinite;
}
@keyframes blinker4th {
30% { opacity: 1; }
40% { opacity: 0; }
50% { opacity: 1; }
60% { opacity: 1; }
70% { opacity: 0; }
80% { opacity: 1; }
90% { opacity: 0; }
100% { opacity: 1; }
}
#head,
.ear,
.eye {
animation-name: wiggle;
animation-duration: 5000ms;
animation-iteration-count: infinite;
transform-origin: unset;
}
@keyframes wiggle {
75% {transform: rotate(0deg);}
80% {transform: rotate(5deg);}
85% {transform: rotate(-5deg);}
90% {transform: rotate(10deg);}
95% {transform: rotate(-3deg);}
100% {transform: rotate(0deg);}
}
#lineTop {
stroke-dasharray: 38;
stroke-dashoffset: 0;
animation: lineAnimation 1s ease-in-out infinite alternate;
}
#lineMiddle {
stroke-dasharray: 38;
stroke-dashoffset: 0;
animation: lineAnimation 1s cubic-bezier(0.1, 0.7, 1.0, 0.1) infinite alternate;
}
#lineBottom {
stroke-dasharray: 38;
stroke-dashoffset: 0;
animation: lineAnimation 1s cubic-bezier(0.5, 0.2, .3, 0.9) infinite alternate;
}
@keyframes lineAnimation {
0% { stroke-dashoffset: 0; }
100% { stroke-dashoffset: 38; }
}
#processLine {
stroke-dasharray: 82;
stroke-dashoffset: -82;
animation: processAnimation 4s linear infinite;
}
@keyframes processAnimation {
0% { stroke-dashoffset: -82; }
100% { stroke-dashoffset: -246; }
}
+2 -4
View File
@@ -1,10 +1,8 @@
import React from 'react'
import styles from './Section.module.css'
export default function Section({ isDark, children }) {
export default function Section({children }) {
return (
<section className={[styles.section, ...(isDark ? [styles.darkSection, 'darkSection'] : [])].join(' ')}>
<section style={{padding: '4rem 0', width: '100%' }}>
<div className="container">
<div className="row">
{children}
@@ -1,19 +0,0 @@
.section {
padding: 4rem 0;
width: 100%;
background-color: var(--wdio-section-background-color);
}
.section h3 {
text-align: center;
font-size: 1.7em;
font-weight: 500;
}
.darkSection {
background-color: var(--wdio-dark-section-background-color);
}
html[data-theme=dark] {
background-color: var(--wdio-section-background-color);
}
-31
View File
@@ -1,31 +0,0 @@
import React from 'react'
import styles from './Sponsor.module.css'
import "slick-carousel/slick/slick.css";
import "slick-carousel/slick/slick-theme.css";
const iconCommonUrl = '/img/icons/'
export default class Sponsor extends React.Component {
constructor (props) {
super(props)
}
render () {
return (
<>
<div className={styles.companyUsage} ref={this.containerRef}>
<h2 className={styles.title}>{this.props.headerTitle}</h2>
<div className={styles.cardList}>
<a className={styles.cardItem} style={{backgroundColor: '#9ed3e5'}} href={'https://hertzbeat.com/'}>
<img src={iconCommonUrl + 'logo.svg'} className={styles.zoom} alt={''}/>
<div className={styles.cardItemTextBody}>
<p className={styles.name}>xxx</p>
<p className={styles.desc}>xxx</p>
</div>
</a>
</div>
</div>
</>
)
}
}
@@ -1,69 +0,0 @@
.cardList {
margin: -0.35rem;
display: flex;
justify-content: center;
/* flex-wrap: wrap; */
/* align-items: flex-start; */
width: 100%;
}
.cardItem {
/* width: calc(33.33333% - .7rem); */
margin: 0.35rem;
background: var(--bodyBg);
border-radius: 3px;
color: var(--textColor);
display: flex;
box-shadow: 1px 1px 2px 0 rgb(0 0 0 / 6%);
transition: all .4s;
background-color: var(--wdio-dark-section-background-color);
}
.cardItemTextBody {
flex: 1;
/* display: inline-block; */
/* float: right; */
padding: 1rem 0;
}
.cardItem:hover img {
box-shadow: 3px 2px 7px rgb(0 0 0 / 15%);
}
.name {
margin: 0.2rem 0 0.3rem;
padding: 0 1rem;
transition: text-shadow .4s;
text-align: center;
font-weight: bolder;
}
.desc {
font-size: .8rem;
line-height: 1.1rem;
opacity: .8;
margin-bottom: 0.2rem;
padding: 0 1rem;
transition: text-shadow .4s;
text-align: center;
}
.zoom {
width: 70px;
height: 70px;
border-radius: 50%;
border: 2px solid #fff;
margin: 1rem 0 1rem 1rem;
box-shadow: 3px 2px 5px rgb(0 0 0 / 8%);
transition: all .4s;
}
.companyUsage {
width: 100%;
}
.title {
font-size: large;
font-weight: bolder;
text-align: center;
}
@@ -1,61 +0,0 @@
.featureTitle {
font-size: 36px;
font-weight: 500;
}
.featureContent {
padding: var(--wdio-spacing-vertical) 0 var(--wdio-spacing-vertical) calc(var(--ifm-spacing-horizontal) + 20px)!important;
}
.featureContentReversed {
padding: var(--wdio-spacing-vertical) calc(var(--ifm-spacing-horizontal) + 20px) var(--wdio-spacing-vertical) var(--ifm-spacing-horizontal)!important;
}
.featureImage {
height: 100%;
padding: var(--wdio-spacing-vertical) var(--ifm-spacing-horizontal)!important;
}
.featureImage iframe {
width: 100%;
}
.darkSection {
background-color: var(--wdio-dark-section-background-color);
}
@media (max-width: 996px) {
.featureContent {
padding: var(--wdio-spacing-vertical) 0 calc(var(--wdio-spacing-vertical) * 4) calc(var(--ifm-spacing-horizontal) + 20px)!important;
}
.featureImage {
padding: calc(var(--wdio-spacing-vertical) * 4) var(--ifm-spacing-horizontal) var(--wdio-spacing-vertical)!important;
}
.featureContentReversed {
padding: calc(var(--wdio-spacing-vertical) * 4) calc(var(--ifm-spacing-horizontal) + 20px) var(--wdio-spacing-vertical) var(--ifm-spacing-horizontal)!important;
}
.featureImageReversed {
padding: var(--wdio-spacing-vertical) var(--ifm-spacing-horizontal) calc(var(--wdio-spacing-vertical) * 4)!important;
}
}
@media (max-width: 500px) {
.featureContent {
padding: var(--wdio-spacing-vertical) var(--ifm-spacing-horizontal) calc(var(--wdio-spacing-vertical) * 4) var(--ifm-spacing-horizontal)!important;
}
.featureImage {
padding: calc(var(--wdio-spacing-vertical) * 4) var(--ifm-spacing-horizontal) var(--wdio-spacing-vertical)!important;
}
.featureContentReversed {
padding: calc(var(--wdio-spacing-vertical) * 4) var(--ifm-spacing-horizontal) var(--wdio-spacing-vertical) var(--ifm-spacing-horizontal)!important;
}
.featureImageReversed {
padding: var(--wdio-spacing-vertical) var(--ifm-spacing-horizontal) calc(var(--wdio-spacing-vertical) * 4)!important;
}
}
+6 -35
View File
@@ -4,7 +4,7 @@ import Layout from '@theme/Layout'
import Link from '@docusaurus/Link'
import useDocusaurusContext from '@docusaurus/useDocusaurusContext'
import useBaseUrl from '@docusaurus/useBaseUrl'
import Translate, { translate } from '@docusaurus/Translate'
import Translate from '@docusaurus/Translate'
import { Swiper, SwiperSlide } from 'swiper/react'
import { EffectFade, Navigation, Autoplay } from 'swiper'
@@ -14,12 +14,9 @@ import 'swiper/css/pagination'
import Feature from './components/Feature'
import Section from './components/Section'
import LogoCarousel from './components/LogoCarousel'
import cdnTransfer from '../CdnTransfer'
import styles from './styles.module.css'
import {features, usersLink} from '../constants'
import DiaLog from "./components/DiaLog";
import {features} from '../constants'
function Home() {
const context = useDocusaurusContext()
@@ -31,12 +28,12 @@ function Home() {
title={`${siteConfig.title} · ${siteConfig.tagline}`}
description={`${siteConfig.tagline}`}
>
<header className={clsx('hero hero--primary', styles.heroBanner)}>
<header className={clsx('hero--primary', styles.heroBanner)}>
<div className="container">
<h1 className="hero__title">
<img
style={{ width: '500px', marginTop: '100px' }}
src={cdnTransfer('/img/hertzbeat-brand.svg')}
src={'/img/hertzbeat-brand.svg'}
alt={'#'}
/>
</h1>
@@ -47,8 +44,7 @@ function Home() {
<Link
to="/docs/"
className={clsx(
'button button--primary button--lg',
styles.getStarted
'button button--primary button--lg'
)}
>
<Translate>quickstart</Translate>
@@ -57,7 +53,7 @@ function Home() {
</div>
</header>
<main>
<div className={styles.sectionDashboard}>
<div>
<Swiper
modules={[Autoplay, EffectFade, Navigation]}
watchSlidesProgress={true}
@@ -122,12 +118,6 @@ function Home() {
className="swiper-button-next user-swiper-button-next"
style={{ top: '880px', right: '50px', color: '#000033' }}
/>
{/*who is using*/}
{/*<Section isDark>*/}
{/* <LogoCarousel logos={usersLink}*/}
{/* headerTitle={translate({ message: 'Who uses HertzBeat?' })}>*/}
{/* </LogoCarousel>*/}
{/*</Section>*/}
{features && features.length > 0 && (
<Section>
{features.map((props, idx) => (
@@ -137,31 +127,12 @@ function Home() {
)}
</main>
</Layout>
<DiaLog/>
</>
)
}
export default Home
function loadGitter() {
return new Promise(function (resolve, reject) {
var script = document.createElement('script')
script.type = 'text/javascript'
script.async = true
script.src = 'https://sidecar.gitter.im/dist/sidecar.v1.js'
;((window.gitter = {}).chat = {}).options = {
room: 'hertzbeat/community',
}
script.onload = function () {
;((window.gitter = {}).chat = {}).options = {
room: 'hertzbeat/community',
}
}
document.body.appendChild(script)
})
}
function autoRedirect() {
let lang = global.navigator?.language || navigator?.userLanguage
console.log('Current lang is ' + lang)
-60
View File
@@ -30,28 +30,6 @@
margin: 0 5px;
}
.frameworkLogos {
background-color: transparent!important;
border-bottom: 0!important;
}
.frameworkLogos img {
height: 60px;
padding: 0 10px 0 0;
}
.reactImage {
max-width: 115%;
transform: translateX(-45px);
}
.social {
margin-top: 20px;
}
.social > a {
margin-left: 10px;
}
@media (max-width: 650px) {
.buttons > a {
margin: 10px 5px;
@@ -61,41 +39,3 @@
height: 45px;
}
}
.tweetBtn {
position: relative;
height: 20px;
box-sizing: border-box;
padding: 2px 8px 4px 22px;
background-color: #1b95e0;
color: #fff;
border-radius: 3px;
cursor: pointer;
font-family: "Helvetica Neue", Arial, sans-serif;
font-weight: 900;
font-size: 11px;
font-stretch: 100%;
line-height: 18px;
margin-left: 3px;
margin-right: 20px;
text-decoration-thickness: auto;
vertical-align: top;
zoom: 1;
}
.tweetBtn:hover {
color: white;
text-decoration: none;
background-color: #0c7abf;
}
.tweetBtn::before {
content: '';
position: absolute;
top: 3px;
left: 5px;
display: inline-block;
width: 14px;
height: 14px;
margin: 0 3px 0 0px;
background: transparent 0 0 no-repeat;
background-image: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2072%2072%22%3E%3Cpath%20fill%3D%22none%22%20d%3D%22M0%200h72v72H0z%22%2F%3E%3Cpath%20class%3D%22icon%22%20fill%3D%22%23fff%22%20d%3D%22M68.812%2015.14c-2.348%201.04-4.87%201.744-7.52%202.06%202.704-1.62%204.78-4.186%205.757-7.243-2.53%201.5-5.33%202.592-8.314%203.176C56.35%2010.59%2052.948%209%2049.182%209c-7.23%200-13.092%205.86-13.092%2013.093%200%201.026.118%202.02.338%202.98C25.543%2024.527%2015.9%2019.318%209.44%2011.396c-1.125%201.936-1.77%204.184-1.77%206.58%200%204.543%202.312%208.552%205.824%2010.9-2.146-.07-4.165-.658-5.93-1.64-.002.056-.002.11-.002.163%200%206.345%204.513%2011.638%2010.504%2012.84-1.1.298-2.256.457-3.45.457-.845%200-1.666-.078-2.464-.23%201.667%205.2%206.5%208.985%2012.23%209.09-4.482%203.51-10.13%205.605-16.26%205.605-1.055%200-2.096-.06-3.122-.184%205.794%203.717%2012.676%205.882%2020.067%205.882%2024.083%200%2037.25-19.95%2037.25-37.25%200-.565-.013-1.133-.038-1.693%202.558-1.847%204.778-4.15%206.532-6.774z%22%2F%3E%3C%2Fsvg%3E);
}
+1 -5
View File
@@ -1,3 +1,4 @@
/* Derived from https://github.com/apache/incubator-streampark-website/tree/dev/src/pages/team */
.team_page {
margin-top: 50px!important;
}
@@ -7,7 +8,6 @@
.team_page .team_title {
font-size: 25px;
font-weight: 500;
color: var(--ifm-color-primary-contrast-foreground);
margin-top: 50px;
}
.team_page .team_desc {
@@ -18,7 +18,6 @@
}
.team_page .desc {
font-size: 1rem;
color: var(--ifm-color-gray-700);
margin-left: 1.2rem;
}
.team_page .character_list {
@@ -83,9 +82,6 @@
overflow: hidden;
text-overflow: ellipsis;
}
/*****************************
team
*****************************/
.team-row {
--bs-gutter-x: 1.5rem;
--bs-gutter-y: 0;
+9 -2
View File
@@ -10,7 +10,7 @@ import 'aos/dist/aos.css';
import Translate from '@docusaurus/Translate'
/**
* refer from https://github.com/apache/incubator-streampark-website/tree/dev/src/pages/team
* Derived from https://github.com/apache/incubator-streampark-website/tree/dev/src/pages/team
*/
export default function () {
const dataSource = config;
@@ -125,7 +125,7 @@ export default function () {
<span className="desc"><Translate>team.thanks</Translate></span>
<div className="row" style={{marginTop: '20px', marginLeft: '20px'}}>
{/* ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section */}
<table>
<tbody>
<tr>
@@ -1023,6 +1023,13 @@ export default function () {
alt="feiyang li"/><br/><sub><b>feiyang li</b></sub></a><br/><a
href="https://github.com/apache/hertzbeat/commits?author=HeartLinked" title="Documentation">📖</a>
</td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Aias00"><img
src="https://avatars.githubusercontent.com/u/25810623?v=4?s=100" width="100px;"
alt="aias00"/><br/><sub><b>aias00</b></sub></a><br/><a
href="https://github.com/apache/hertzbeat/commits?author=Aias00" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/westboy"><img
src="https://avatars.githubusercontent.com/u/6385565?v=4?s=100" width="100px;" alt="Jin"/><br/><sub><b>Jin</b></sub></a><br/><a
href="https://github.com/apache/hertzbeat/commits?author=westboy" title="Documentation">📖</a></td>
</tr>
</tbody>
</table>
-17
View File
@@ -1,17 +0,0 @@
import { registerRoute } from 'workbox-routing'
import { StaleWhileRevalidate } from 'workbox-strategies'
export default function swCustom(params) {
if (params.debug) {
console.log('[WebdriverIO-PWA][SW]: running swCustom code', params)
}
// Cache responses from external resources
registerRoute((context) => {
return [
/graph\.facebook\.com\/.*\/picture/,
/netlify\.com\/img/,
/avatars1\.githubusercontent/,
].some((regex) => context.url.href.match(regex))
}, new StaleWhileRevalidate())
}
-54
View File
@@ -1,54 +0,0 @@
import React from 'react'
function TwitterLink ({ url }) {
if (!url) {
return null
}
return (
<a href={ url } className="twitterProfile">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 273.5 222.3" className="octicon"><path d="M273.5 26.3a109.77 109.77 0 0 1-32.2 8.8 56.07 56.07 0 0 0 24.7-31 113.39 113.39 0 0 1-35.7 13.6 56.1 56.1 0 0 0-97 38.4 54 54 0 0 0 1.5 12.8A159.68 159.68 0 0 1 19.1 10.3a56.12 56.12 0 0 0 17.4 74.9 56.06 56.06 0 0 1-25.4-7v.7a56.11 56.11 0 0 0 45 55 55.65 55.65 0 0 1-14.8 2 62.39 62.39 0 0 1-10.6-1 56.24 56.24 0 0 0 52.4 39 112.87 112.87 0 0 1-69.7 24 119 119 0 0 1-13.4-.8 158.83 158.83 0 0 0 86 25.2c103.2 0 159.6-85.5 159.6-159.6 0-2.4-.1-4.9-.2-7.3a114.25 114.25 0 0 0 28.1-29.1" fill="currentColor"></path></svg>
</a>
)
}
function GitHubLink ({ url }) {
if (!url) {
return null
}
return (
<a href={url}
className="githubProfile"
target="_blank"
rel="noopener noreferrer"
aria-label="GitHub profile"
>
</a>
)
}
export default function Card ({
name,
avatar,
github,
twitter,
children
}) {
return (
<div className="avatar teamProfile">
<img
className="avatar__photo avatar__photo--lg"
src={ avatar }
/>
<div className="avatar__intro">
<h4 className="avatar__name">
{ name }
<GitHubLink url={github && `https://github.com/${github}`} />
<TwitterLink url={twitter && `https://twitter.com/${twitter}`} />
</h4>
<small className="avatar__subtitle">{ children }</small>
</div>
</div>
)
}
File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 7.7 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 7.1 KiB

+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "TANCLOUD探云",
"short_name": "TANCLOUD",
"name": "Apache HertzBeat",
"short_name": "Apache HertzBeat",
"theme_color": "#ea5a07",
"background_color": "#efefef",
"display": "standalone",
@@ -2,7 +2,7 @@
"docs": [
{
"type": "category",
"label": "快速入门",
"label": "Quickstart",
"items": [
"introduce",
"start/quickstart",
@@ -36,6 +36,8 @@ import org.springframework.aot.hint.TypeReference;
import org.springframework.util.ClassUtils;
/**
* Derived from SpringCloud org.springframework.cloud.config.server.config.ConfigServerRuntimeHints
* @see <a href="https://github.com/spring-cloud/spring-cloud-config/blob/main/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/config/ConfigServerRuntimeHints.java">ConfigServerRuntimeHints</a>
*/
public class HertzbeatRuntimeHintsRegistrar implements RuntimeHintsRegistrar {
+1 -1
View File
@@ -19,7 +19,7 @@ FROM openjdk:17-slim-buster
ARG VERSION
MAINTAINER tancloud "tomsun28@outlook.com"
MAINTAINER Apache HertzBeat "dev@hertzbeat.apache.org"
# Install SSH
RUN apt-get update && apt-get install -y openssh-server
+1 -1
View File
@@ -20,7 +20,7 @@ FROM openjdk:17-slim-buster
# add args version
ARG VERSION
MAINTAINER tancloud "tomsun28@outlook.com"
MAINTAINER Apache HertzBeat "dev@hertzbeat.apache.org"
# Install SSH And Locales
RUN apt-get update && apt-get install -y openssh-server && apt-get install -y locales
+4 -10
View File
@@ -3,17 +3,11 @@
### Quickly Start
1. Need `Node Yarn` Environment, Make sure `Node.js >= 18`
2. Execute `yarn install` in `web-app`
3. Install angular-cli : `yarn global add @angular/cli@15`
4. Start After Backend Server Available : `ng serve --open`
2. Install yarn if not existed `npm install -g yarn`
3. Execute `yarn install` or `yarn install --registry=https://registry.npmmirror.com` in `web-app`
4. Install angular-cli : `yarn global add @angular/cli@15` or `yarn global add @angular/cli@15 --registry=https://registry.npmmirror.com`
5. Start After Backend Server Available : `ng serve --open`
---
1. 需要nodejs npm环境,下载地址:https://nodejs.org/en/download 确保你的版本 `Node.js >= 18`
2. 安装yarn `npm install -g yarn`
3. 在前端工程目录web-app下执行 `yarn install --registry=https://registry.npmmirror.com`
4. 全局安装angular-cli `yarn global add @angular/cli@15 --registry=https://registry.npmmirror.com`
5. 待本地后端启动后,在web-app目录下启动本地前端 `ng serve --open`
### Build HertzBeat Install Package
+1 -2
View File
@@ -98,8 +98,7 @@
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"options": {
"browserTarget": "hertzbeat-web-app:build",
"proxyConfig": "proxy.conf.js"
"browserTarget": "hertzbeat-web-app:build"
},
"configurations": {
"production": {
-17
View File
@@ -1,17 +0,0 @@
/**
* For more configuration, please refer to https://angular.io/guide/build#proxying-to-a-backend-server
*
* 更多配置描述请参考 https://angular.cn/guide/build#proxying-to-a-backend-server
*
* Note: The proxy is only valid for real requests, Mock does not actually generate requests, so the priority of Mock will be higher than the proxy
*/
module.exports = {
/**
* The following means that all requests are directed to the backend `https://localhost:9000/`
*/
// '/apps/*': {
// target: 'https://localhost:8080',
// secure: false, // Ignore invalid SSL certificates
// changeOrigin: true
// }
};
@@ -31,9 +31,6 @@ export class StartupService {
private storageService: MemoryStorageService
) {
iconSrv.addIcon(...ICONS_AUTO, ...ICONS);
iconSrv.fetchFromIconfont({
scriptUrl: './assets/img/icon-gitee.js'
});
}
public loadConfigResourceViaHttp(): Observable<void> {
@@ -1,22 +1,3 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
@@ -1,22 +1,3 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import { ChangeDetectionStrategy, Component } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { ExceptionType } from '@delon/abc/exception';
@@ -1,22 +1,3 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import { CommonModule } from '@angular/common';
import { NgModule } from '@angular/core';
import { ExceptionModule as DelonExceptionModule } from '@delon/abc/exception';
+23 -23
View File
@@ -1,7 +1,7 @@
{
"app": {
"name": "HertzBeat",
"description": "易用友好的高性能监控云"
"description": " A real-time monitoring system with agentless, performance cluster, prometheus-compatible, custom monitoring and status page building capabilities."
},
"user": {
"name": "Admin",
@@ -10,13 +10,13 @@
},
"menu": [
{
"text": "总览",
"text": "Guide",
"i18n": "menu.main",
"group": true,
"hideInBreadcrumb": true,
"children": [
{
"text": "仪表盘",
"text": "Dashboard",
"i18n": "menu.dashboard",
"icon": "anticon-dashboard",
"link": "/dashboard"
@@ -25,19 +25,19 @@
},
{
"key": "monitoring",
"text": "监控",
"text": "Monitoring",
"i18n": "menu.monitor",
"group": true,
"hideInBreadcrumb": true,
"children": [
{
"text": "monitor-center",
"text": "Monitor-center",
"i18n": "menu.monitor.center",
"icon": "anticon-laptop",
"link": "/monitors"
},
{
"text": "define",
"text": "Define",
"i18n": "menu.advanced.define",
"icon": "anticon-code",
"link": "/setting/define"
@@ -50,110 +50,110 @@
},
{
"key": "service",
"text": "应用服务",
"text": "Service",
"i18n": "menu.monitor.service",
"icon": "anticon-appstore"
},
{
"key": "program",
"text": "应用程序",
"text": "Program",
"i18n": "menu.monitor.program",
"icon": "anticon-code"
},
{
"key": "db",
"text": "数据库",
"text": "Database",
"i18n": "menu.monitor.db",
"icon": "anticon-console-sql"
},
{
"key": "cache",
"text": "缓存",
"text": "Cache",
"i18n": "menu.monitor.cache",
"icon": "anticon-group"
},
{
"key": "os",
"text": "操作系统",
"text": "OS",
"hide": false,
"i18n": "menu.monitor.os",
"icon": "anticon-windows"
},
{
"key": "mid",
"text": "中间件",
"text": "Middleware",
"hide": false,
"i18n": "menu.monitor.mid",
"icon": "anticon-cluster"
},
{
"key": "bigdata",
"text": "大数据",
"text": "Bigdata",
"hide": false,
"i18n": "menu.monitor.bigdata",
"icon": "anticon-dot-chart"
},
{
"key": "webserver",
"text": "Web服务器",
"text": "WebServer",
"hide": false,
"i18n": "menu.monitor.webserver",
"icon": "anticon-database"
},
{
"key": "cn",
"text": "云原生",
"text": "CNCF",
"hide": false,
"i18n": "menu.monitor.cn",
"icon": "anticon-cloud-server"
},
{
"key": "network",
"text": "网络",
"text": "Network",
"hide": false,
"i18n": "menu.monitor.network",
"icon": "anticon-global"
},
{
"key": "custom",
"text": "自定义",
"text": "Custom",
"i18n": "menu.monitor.custom",
"icon": "anticon-project"
}
]
},
{
"text": "告警",
"text": "Alarm",
"i18n": "menu.alert",
"group": true,
"hideInBreadcrumb": true,
"children": [
{
"text": "告警配置",
"text": "Threshold",
"i18n": "menu.alert.setting",
"icon": "anticon-calculator",
"link": "/alert/setting"
},
{
"text": "告警收敛",
"text": "Converge",
"i18n": "menu.alert.converge",
"icon": "anticon-filter",
"link": "/alert/converge"
},
{
"text": "告警静默",
"text": "Silence",
"i18n": "menu.alert.silence",
"icon": "anticon-audio-muted",
"link": "/alert/silence"
},
{
"text": "告警中心",
"text": "Center",
"i18n": "menu.alert.center",
"icon": "anticon-alert",
"link": "/alert/center"
},
{
"text": "告警通知",
"text": "Notice",
"i18n": "menu.alert.dispatch",
"icon": "anticon-notification",
"link": "/alert/notice"
-1
View File
@@ -1 +0,0 @@
!function(e){var t,n,o,a,i,c='<svg><symbol id="icon-gitee" viewBox="0 0 1024 1024"><path d="M512 1024C229.222 1024 0 794.778 0 512S229.222 0 512 0s512 229.222 512 512-229.222 512-512 512z m259.149-568.883h-290.74a25.293 25.293 0 0 0-25.292 25.293l-0.026 63.206c0 13.952 11.315 25.293 25.267 25.293h177.024c13.978 0 25.293 11.315 25.293 25.267v12.646a75.853 75.853 0 0 1-75.853 75.853h-240.23a25.293 25.293 0 0 1-25.267-25.293V417.203a75.853 75.853 0 0 1 75.827-75.853h353.946a25.293 25.293 0 0 0 25.267-25.292l0.077-63.207a25.293 25.293 0 0 0-25.268-25.293H417.152a189.62 189.62 0 0 0-189.62 189.645V771.15c0 13.977 11.316 25.293 25.294 25.293h372.94a170.65 170.65 0 0 0 170.65-170.65V480.384a25.293 25.293 0 0 0-25.293-25.267z" ></path></symbol><symbol id="icon-gitee-black" viewBox="0 0 1024 1024"><path d="M512 1024C229.222 1024 0 794.778 0 512S229.222 0 512 0s512 229.222 512 512-229.222 512-512 512z m259.149-568.883h-290.74a25.293 25.293 0 0 0-25.292 25.293l-0.026 63.206c0 13.952 11.315 25.293 25.267 25.293h177.024c13.978 0 25.293 11.315 25.293 25.267v12.646a75.853 75.853 0 0 1-75.853 75.853h-240.23a25.293 25.293 0 0 1-25.267-25.293V417.203a75.853 75.853 0 0 1 75.827-75.853h353.946a25.293 25.293 0 0 0 25.267-25.292l0.077-63.207a25.293 25.293 0 0 0-25.268-25.293H417.152a189.62 189.62 0 0 0-189.62 189.645V771.15c0 13.977 11.316 25.293 25.294 25.293h372.94a170.65 170.65 0 0 0 170.65-170.65V480.384a25.293 25.293 0 0 0-25.293-25.267z" fill="#2c2c2c" ></path></symbol></svg>',d=(d=document.getElementsByTagName("script"))[d.length-1].getAttribute("data-injectcss"),l=function(e,t){t.parentNode.insertBefore(e,t)};if(d&&!e.__iconfont__svg__cssinject__){e.__iconfont__svg__cssinject__=!0;try{document.write("<style>.svgfont {display: inline-block;width: 1em;height: 1em;fill: currentColor;vertical-align: -0.1em;font-size:16px;}</style>")}catch(e){console&&console.log(e)}}function s(){i||(i=!0,o())}function r(){try{a.documentElement.doScroll("left")}catch(e){return void setTimeout(r,50)}s()}t=function(){var e,t;(t=document.createElement("div")).innerHTML=c,c=null,(e=t.getElementsByTagName("svg")[0])&&(e.setAttribute("aria-hidden","true"),e.style.position="absolute",e.style.width=0,e.style.height=0,e.style.overflow="hidden",t=e,(e=document.body).firstChild?l(t,e.firstChild):e.appendChild(t))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(t,0):(n=function(){document.removeEventListener("DOMContentLoaded",n,!1),t()},document.addEventListener("DOMContentLoaded",n,!1)):document.attachEvent&&(o=t,a=e.document,i=!1,r(),a.onreadystatechange=function(){"complete"==a.readyState&&(a.onreadystatechange=null,s())})}(window);