mirror of
https://github.com/dromara/hertzbeat.git
synced 2026-09-17 09:40:58 +00:00
[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:
@@ -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,
|
||||
|
||||
@@ -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
|
||||
@@ -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/**'
|
||||
|
||||
@@ -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/**
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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" == "" ]
|
||||
|
||||
@@ -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.
|
||||
|
||||

|
||||
|
||||
If the query results are as follows, it means that the key is successfully created.
|
||||
|
||||

|
||||
|
||||
#### 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.
|
||||
|
||||

|
||||
|
||||
#### 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.
|
||||
|
||||

|
||||
|
||||
#### 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
|
||||
|
||||

|
||||
|
||||
## 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 release,Please 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
|
||||

|
||||
|
||||
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?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
|
||||

|
||||
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.
|
||||
|
||||

|
||||
|
||||
#### 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
|
||||
```
|
||||
|
||||

|
||||
|
||||
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
|
||||
|
||||
@@ -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 displayed,popup [please configure dependency service on TDengine time series database]
|
||||
> As shown in the popup window,the 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
|
||||
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
|
||||
+125
-291
@@ -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' 按钮,查看是否有对应名称的密钥。
|
||||
|
||||

|
||||
|
||||
如果查询结果如下,表示密钥创建成功。
|
||||
|
||||

|
||||
|
||||
#### 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的标签,并将此标签设置为预发布。
|
||||
|
||||

|
||||
|
||||
#### 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,说明发布成功。
|
||||
|
||||

|
||||
|
||||
#### 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/ , 检查是否有新的版本内容
|
||||
|
||||

|
||||
## 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 release,Please 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 查看获取
|
||||
|
||||

|
||||
|
||||
右键点击标题,点击复制链接地址获取链接
|
||||
|
||||

|
||||
|
||||
#### 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 , 找到邮件标题并点击显示投票内容
|
||||
|
||||

|
||||
|
||||
右键点击标题,点击复制链接地址获取链接
|
||||
邮件内容中的一项是`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/ 查看是否有新版本的下载
|
||||
|
||||
> 需要注意的是,下载链接可能需要一个小时后才会生效,请注意。
|
||||
|
||||

|
||||
#### 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
|
||||
```
|
||||
|
||||

|
||||
|
||||
然后点击`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鉴权校验,"Authorization:Bearer eyJhbGciOiJIUzI1....",配置后测试,提示“StatusCode 401”。服务端应用收到的token为"Authorization:Bearer%20eyJhbGciOiJIUzI1....",hertzbeat对空格进行转义为“%20”,服务器没有转义导致鉴权失败,建议转义功能作为可选项。
|
||||
|
||||
5. 配置http api监控,用于进行业务接口探测,确保业务可以用,另外接口有进行token鉴权校验,"Authorization:Bearer eyJhbGciOiJIUzI1....",配置后测试,提示“StatusCode 401”。服务端应用收到的token为"Authorization:Bearer%20eyJhbGciOiJIUzI1....",hertzbeat对空格进行转义为“%20”,服务器没有转义导致鉴权失败,建议转义功能作为可选项。
|
||||
|
||||
|
||||
### Docker部署常见问题
|
||||
|
||||
+7
-7
@@ -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"
|
||||
]
|
||||
},
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -67,7 +67,7 @@ export const features = [
|
||||
|
||||
export const usersLink = [
|
||||
{
|
||||
img: 'tancloud_logo.svg',
|
||||
img: 'tancloud-logo.svg',
|
||||
alt: 'tancloud',
|
||||
}
|
||||
]
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
html[data-theme=dark] .button {
|
||||
--ifm-button-border-color: transparent;
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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>
|
||||
)
|
||||
}
|
||||
@@ -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
@@ -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; }
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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
@@ -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)
|
||||
|
||||
@@ -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,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;
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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())
|
||||
}
|
||||
@@ -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 |
@@ -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",
|
||||
|
||||
+2
@@ -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 {
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
|
||||
@@ -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": {
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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 +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);
|
||||
Reference in New Issue
Block a user