Merge remote-tracking branch 'origin/master' into dev/v4.3.0
This commit is contained in:
commit
0336cca600
|
@ -0,0 +1,119 @@
|
||||||
|
# Edit this file as you like.
|
||||||
|
#
|
||||||
|
# All these sections are optional. Each section with the exception of [general] represents
|
||||||
|
# one rule and each key in it is an option for that specific rule.
|
||||||
|
#
|
||||||
|
# Rules and sections can be referenced by their full name or by id. For example
|
||||||
|
# section "[body-max-line-length]" could also be written as "[B1]". Full section names are
|
||||||
|
# used in here for clarity.
|
||||||
|
#
|
||||||
|
[general]
|
||||||
|
# Ignore certain rules, this example uses both full name and id
|
||||||
|
ignore=title-trailing-punctuation, T1, T2, T3, T4, T5, T6, T8, B1, B2, B3, B4, B5, B6, B7, B8
|
||||||
|
|
||||||
|
# verbosity should be a value between 1 and 3, the commandline -v flags take precedence over this
|
||||||
|
# verbosity = 2
|
||||||
|
|
||||||
|
# By default gitlint will ignore merge, revert, fixup and squash commits.
|
||||||
|
# ignore-merge-commits=true
|
||||||
|
# ignore-revert-commits=true
|
||||||
|
# ignore-fixup-commits=true
|
||||||
|
# ignore-squash-commits=true
|
||||||
|
|
||||||
|
# Ignore any data send to gitlint via stdin
|
||||||
|
# ignore-stdin=true
|
||||||
|
|
||||||
|
# Fetch additional meta-data from the local repository when manually passing a
|
||||||
|
# commit message to gitlint via stdin or --commit-msg. Disabled by default.
|
||||||
|
# staged=true
|
||||||
|
|
||||||
|
# Enable debug mode (prints more output). Disabled by default.
|
||||||
|
# debug=true
|
||||||
|
|
||||||
|
# Enable community contributed rules
|
||||||
|
# See http://jorisroovers.github.io/gitlint/contrib_rules for details
|
||||||
|
# contrib=contrib-title-conventional-commits,CC1
|
||||||
|
|
||||||
|
# Set the extra-path where gitlint will search for user defined rules
|
||||||
|
# See http://jorisroovers.github.io/gitlint/user_defined_rules for details
|
||||||
|
# extra-path=examples/
|
||||||
|
|
||||||
|
# This is an example of how to configure the "title-max-length" rule and
|
||||||
|
# set the line-length it enforces to 80
|
||||||
|
# [title-max-length]
|
||||||
|
# line-length=50
|
||||||
|
|
||||||
|
# Conversely, you can also enforce minimal length of a title with the
|
||||||
|
# "title-min-length" rule:
|
||||||
|
# [title-min-length]
|
||||||
|
# min-length=5
|
||||||
|
|
||||||
|
# [title-must-not-contain-word]
|
||||||
|
# Comma-separated list of words that should not occur in the title. Matching is case
|
||||||
|
# insensitive. It's fine if the keyword occurs as part of a larger word (so "WIPING"
|
||||||
|
# will not cause a violation, but "WIP: my title" will.
|
||||||
|
# words=wip
|
||||||
|
|
||||||
|
[title-match-regex]
|
||||||
|
# python-style regex that the commit-msg title must match
|
||||||
|
# Note that the regex can contradict with other rules if not used correctly
|
||||||
|
# (e.g. title-must-not-contain-word).
|
||||||
|
regex=^(feat|fix|docs|style|refactor|test|chore|perf)\(.+\): .+
|
||||||
|
|
||||||
|
# [body-max-line-length]
|
||||||
|
# line-length=72
|
||||||
|
|
||||||
|
# [body-min-length]
|
||||||
|
# min-length=5
|
||||||
|
|
||||||
|
# [body-is-missing]
|
||||||
|
# Whether to ignore this rule on merge commits (which typically only have a title)
|
||||||
|
# default = True
|
||||||
|
# ignore-merge-commits=false
|
||||||
|
|
||||||
|
# [body-changed-file-mention]
|
||||||
|
# List of files that need to be explicitly mentioned in the body when they are changed
|
||||||
|
# This is useful for when developers often erroneously edit certain files or git submodules.
|
||||||
|
# By specifying this rule, developers can only change the file when they explicitly reference
|
||||||
|
# it in the commit message.
|
||||||
|
# files=gitlint/rules.py,README.md
|
||||||
|
|
||||||
|
# [body-match-regex]
|
||||||
|
# python-style regex that the commit-msg body must match.
|
||||||
|
# E.g. body must end in My-Commit-Tag: foo
|
||||||
|
# regex=My-Commit-Tag: foo$
|
||||||
|
|
||||||
|
# [author-valid-email]
|
||||||
|
# python-style regex that the commit author email address must match.
|
||||||
|
# For example, use the following regex if you only want to allow email addresses from foo.com
|
||||||
|
# regex=[^@]+@foo.com
|
||||||
|
|
||||||
|
[ignore-by-title]
|
||||||
|
# Ignore certain rules for commits of which the title matches a regex
|
||||||
|
# E.g. Match commit titles that start with "Release"
|
||||||
|
# regex=^Release(.*)
|
||||||
|
|
||||||
|
# Ignore certain rules, you can reference them by their id or by their full name
|
||||||
|
# Use 'all' to ignore all rules
|
||||||
|
# ignore=T1,body-min-length
|
||||||
|
|
||||||
|
[ignore-by-body]
|
||||||
|
# Ignore certain rules for commits of which the body has a line that matches a regex
|
||||||
|
# E.g. Match bodies that have a line that that contain "release"
|
||||||
|
# regex=(.*)release(.*)
|
||||||
|
#
|
||||||
|
# Ignore certain rules, you can reference them by their id or by their full name
|
||||||
|
# Use 'all' to ignore all rules
|
||||||
|
# ignore=T1,body-min-length
|
||||||
|
|
||||||
|
# [ignore-body-lines]
|
||||||
|
# Ignore certain lines in a commit body that match a regex.
|
||||||
|
# E.g. Ignore all lines that start with 'Co-Authored-By'
|
||||||
|
# regex=^Co-Authored-By
|
||||||
|
|
||||||
|
# This is a contrib rule - a community contributed rule. These are disabled by default.
|
||||||
|
# You need to explicitly enable them one-by-one by adding them to the "contrib" option
|
||||||
|
# under [general] section above.
|
||||||
|
# [contrib-title-conventional-commits]
|
||||||
|
# Specify allowed commit types. For details see: https://www.conventionalcommits.org/
|
||||||
|
# types = bugfix,user-story,epic
|
|
@ -0,0 +1,11 @@
|
||||||
|
name: Elvis Linter
|
||||||
|
|
||||||
|
on: [pull_request]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v1
|
||||||
|
- run: |
|
||||||
|
./elvis-check.sh $GITHUB_BASE_REF
|
|
@ -0,0 +1,34 @@
|
||||||
|
name: Run gitlint
|
||||||
|
|
||||||
|
on: [pull_request]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
run_gitlint:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout source code
|
||||||
|
uses: actions/checkout@master
|
||||||
|
- name: Install gitlint
|
||||||
|
run: |
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt install gitlint
|
||||||
|
- name: Run gitlint
|
||||||
|
run: |
|
||||||
|
pr_number=$(echo $GITHUB_REF | awk 'BEGIN { FS = "/" } ; { print $3 }')
|
||||||
|
messages=$(curl "https://api.github.com/repos/${GITHUB_REPOSITORY}/pulls/${pr_number}/commits")
|
||||||
|
len=$(echo $messages | jq length)
|
||||||
|
result=true
|
||||||
|
for i in $( seq 0 $(($len - 1)) ); do
|
||||||
|
message=$(echo $messages | jq -r .[$i].commit.message)
|
||||||
|
echo commit message: $message
|
||||||
|
status=0
|
||||||
|
echo $message | gitlint -C ./.github/workflows/.gitlint || status=$?
|
||||||
|
if [ $status -ne 0 ]; then
|
||||||
|
result=false
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if ! ${result} ; then
|
||||||
|
echo "Some of the commit messages are not structured as The Conventional Commits specification. Please check CONTRIBUTING.md for our process on PR."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "success"
|
|
@ -39,3 +39,4 @@ rebar.lock
|
||||||
.stamp
|
.stamp
|
||||||
tmp/
|
tmp/
|
||||||
_packages
|
_packages
|
||||||
|
elvis
|
||||||
|
|
|
@ -0,0 +1,38 @@
|
||||||
|
# Contributing
|
||||||
|
|
||||||
|
You are welcome to submit any bugs, issues and feature requests on this repository.
|
||||||
|
|
||||||
|
## Pull Request Process
|
||||||
|
|
||||||
|
1. Update the README.md with details of changes to the interface.
|
||||||
|
|
||||||
|
2. Ensure that each of the commit messages are in the following style:
|
||||||
|
|
||||||
|
Format: `<type>(<scope>): <subject>`
|
||||||
|
|
||||||
|
Type:
|
||||||
|
|
||||||
|
- `feat`: (new feature for the user, not a new feature for build script)
|
||||||
|
- `fix`: (bug fix for the user, not a fix to a build script)
|
||||||
|
- `docs`: (changes to the documentation)
|
||||||
|
- `style`: (formatting, missing semi colons, etc; no production code change)
|
||||||
|
- `refactor`: (refactoring production code, eg. renaming a variable)
|
||||||
|
- `test`: (adding missing tests, refactoring tests; no production code change)
|
||||||
|
- `chore`: (updating grunt tasks etc; no production code change)
|
||||||
|
- `perf`: (performance improvements)
|
||||||
|
|
||||||
|
**Example**
|
||||||
|
|
||||||
|
```
|
||||||
|
feat(build): deterministic compile option
|
||||||
|
^--^ ^---^ ^--------------------------^
|
||||||
|
| | |
|
||||||
|
| | +-> Summary in present tense.
|
||||||
|
| |
|
||||||
|
| |
|
||||||
|
| +-------> Scope of the change.
|
||||||
|
|
|
||||||
|
+-------> Type: chore, docs, feat, fix, perf, refactor, style, or test.
|
||||||
|
```
|
||||||
|
|
||||||
|
[Reference](https://gist.github.com/joshbuchea/6f47e86d2510bce28f8e7f42ae84c716)
|
|
@ -9,7 +9,7 @@
|
||||||
|
|
||||||
[](https://www.emqx.io/cn/careers)
|
[](https://www.emqx.io/cn/careers)
|
||||||
|
|
||||||
[English](./README.md) | 简体中文
|
[English](./README.md) | 简体中文 | [日本語](./README-JP.md)
|
||||||
|
|
||||||
*EMQ X* 是一款完全开源,高度可伸缩,高可用的分布式 MQTT 消息服务器,适用于 IoT、M2M 和移动应用程序,可处理千万级别的并发客户端。
|
*EMQ X* 是一款完全开源,高度可伸缩,高可用的分布式 MQTT 消息服务器,适用于 IoT、M2M 和移动应用程序,可处理千万级别的并发客户端。
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,98 @@
|
||||||
|
# EMQ X Broker
|
||||||
|
|
||||||
|
[](https://github.com/emqx/emqx/releases)
|
||||||
|
[](https://travis-ci.org/emqx/emqx)
|
||||||
|
[](https://coveralls.io/github/emqx/emqx)
|
||||||
|
[](https://hub.docker.com/r/emqx/emqx)
|
||||||
|
[](https://slack-invite.emqx.io)
|
||||||
|
[](https://twitter.com/emqtt)
|
||||||
|
|
||||||
|
[](https://www.emqx.io/careers)
|
||||||
|
|
||||||
|
[English](./README.md) | [简体中文](./README-CN.md) | 日本語
|
||||||
|
|
||||||
|
*EMQ X* ブローカーは、数千万のクライアントを同時に処理できるIoT、M2M、モバイルアプリケーション向けの、完全なオープンソース、高拡張性、高可用性、分散型MQTTメッセージングブローカーです。
|
||||||
|
|
||||||
|
バージョン3.0以降、*EMQ X* ブローカーはMQTTV5.0プロトコル仕様を完全にサポートし、MQTT V3.1およびV3.1.1と下位互換性があります。MQTT-SN、CoAP、LwM2M、WebSocket、STOMPなどの通信プロトコルをサポートしています。 1つのクラスター上で1,000万以上の同時MQTT接続に拡張することができます。
|
||||||
|
|
||||||
|
- 新機能の一覧については、[EMQ Xリリースノート](https://github.com/emqx/emqx/releases)を参照してください。
|
||||||
|
- 詳細はこちら[EMQ X公式ウェブサイト](https://www.emqx.io/)をご覧ください。
|
||||||
|
|
||||||
|
## インストール
|
||||||
|
|
||||||
|
*EMQ X* ブローカーはクロスプラットフォームで、Linux、Unix、macOS、Windowsをサポートしています。これは、*EMQ X* ブローカーをx86_64アーキテクチャサーバー、またはRaspberryPiなどのARMデバイスにデプロイできることを意味します。
|
||||||
|
|
||||||
|
#### EMQ X Dockerイメージによるインストール
|
||||||
|
|
||||||
|
```
|
||||||
|
docker run -d --name emqx -p 1883:1883 -p 8083:8083 -p 8883:8883 -p 8084:8084 -p 18083:18083 emqx/emqx
|
||||||
|
```
|
||||||
|
|
||||||
|
#### バイナリパッケージによるインストール
|
||||||
|
|
||||||
|
対応するオペレーティングシステムのバイナリソフトウェアパッケージは、[EMQ Xのダウンロード](https://www.emqx.io/downloads)ページから取得できます。
|
||||||
|
|
||||||
|
- [シングルノードインストール](https://docs.emqx.io/broker/latest/en/getting-started/installation.html)
|
||||||
|
- [マルチノードインストール](https://docs.emqx.io/broker/latest/en/advanced/cluster.html)
|
||||||
|
|
||||||
|
## ソースからビルド
|
||||||
|
|
||||||
|
バージョン3.0以降、*EMQ X* ブローカーをビルドするには Erlang/OTP R21+ が必要です。
|
||||||
|
|
||||||
|
```
|
||||||
|
git clone https://github.com/emqx/emqx-rel.git
|
||||||
|
|
||||||
|
cd emqx-rel && make
|
||||||
|
|
||||||
|
cd _rel/emqx && ./bin/emqx console
|
||||||
|
```
|
||||||
|
|
||||||
|
## クイックスタート
|
||||||
|
|
||||||
|
```
|
||||||
|
# Start emqx
|
||||||
|
./bin/emqx start
|
||||||
|
|
||||||
|
# Check Status
|
||||||
|
./bin/emqx_ctl status
|
||||||
|
|
||||||
|
# Stop emqx
|
||||||
|
./bin/emqx stop
|
||||||
|
```
|
||||||
|
|
||||||
|
*EMQ X* ブローカーを起動したら、ブラウザで http://localhost:18083 にアクセスしてダッシュボードを表示できます。
|
||||||
|
|
||||||
|
## FAQ
|
||||||
|
|
||||||
|
よくある質問については、[EMQ X FAQ](https://docs.emqx.io/broker/latest/en/faq/faq.html)にアクセスしてください。
|
||||||
|
|
||||||
|
## ロードマップ
|
||||||
|
|
||||||
|
[EMQ X Roadmap uses Github milestones](https://github.com/emqx/emqx/milestones)からプロジェクトの進捗状況を追跡できます。
|
||||||
|
|
||||||
|
## コミュニティ、ディスカッション、貢献、サポート
|
||||||
|
|
||||||
|
次のチャネルを通じて、EMQコミュニティおよび開発者に連絡できます。
|
||||||
|
|
||||||
|
- [Slack](https://slack-invite.emqx.io/)
|
||||||
|
- [Twitter](https://twitter.com/emqtt)
|
||||||
|
- [Facebook](https://www.facebook.com/emqxmqtt)
|
||||||
|
- [Reddit](https://www.reddit.com/r/emqx/)
|
||||||
|
- [Forum](https://groups.google.com/d/forum/emqtt)
|
||||||
|
- [Blog](https://medium.com/@emqtt)
|
||||||
|
|
||||||
|
バグ、問題、機能のリクエストは、[emqx/emqx](https://github.com/emqx/emqx/issues)に送信してください。
|
||||||
|
|
||||||
|
## MQTT仕様
|
||||||
|
|
||||||
|
次のリンクから、MQTTプロトコルについて学習および確認できます。
|
||||||
|
|
||||||
|
[MQTT Version 3.1.1](https://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html)
|
||||||
|
|
||||||
|
[MQTT Version 5.0](https://docs.oasis-open.org/mqtt/mqtt/v5.0/cs02/mqtt-v5.0-cs02.html)
|
||||||
|
|
||||||
|
[MQTT SN](http://mqtt.org/new/wp-content/uploads/2009/06/MQTT-SN_spec_v1.2.pdf)
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
Apache License 2.0, see [LICENSE](https://github.com/emqx/MQTTX/blob/master/LICENSE).
|
|
@ -9,7 +9,7 @@
|
||||||
|
|
||||||
[](https://www.emqx.io/careers)
|
[](https://www.emqx.io/careers)
|
||||||
|
|
||||||
English | [简体中文](./README-CN.md)
|
English | [简体中文](./README-CN.md) | [日本語](./README-JP.md)
|
||||||
|
|
||||||
*EMQ X* broker is a fully open source, highly scalable, highly available distributed MQTT messaging broker for IoT, M2M and Mobile applications that can handle tens of millions of concurrent clients.
|
*EMQ X* broker is a fully open source, highly scalable, highly available distributed MQTT messaging broker for IoT, M2M and Mobile applications that can handle tens of millions of concurrent clients.
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@ docker run -d --name emqx -p 1883:1883 -p 8083:8083 -p 8883:8883 -p 8084:8084 -p
|
||||||
|
|
||||||
Get the binary package of the corresponding OS from [EMQ X Download](https://www.emqx.io/downloads) page.
|
Get the binary package of the corresponding OS from [EMQ X Download](https://www.emqx.io/downloads) page.
|
||||||
|
|
||||||
- [Single Node Install](https://docs.emqx.io/broker/latest/en/getting-started/installation.html)
|
- [Single Node Install](https://docs.emqx.io/broker/latest/en/getting-started/install.html)
|
||||||
- [Multi Node Install](https://docs.emqx.io/broker/latest/en/advanced/cluster.html)
|
- [Multi Node Install](https://docs.emqx.io/broker/latest/en/advanced/cluster.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
ELVIS_VERSION='1.0.0-emqx-1'
|
||||||
|
|
||||||
|
base=${GITHUB_BASE_REF:-$1}
|
||||||
|
elvis_version="${2:-$ELVIS_VERSION}"
|
||||||
|
|
||||||
|
echo "elvis -v: $elvis_version"
|
||||||
|
echo "git diff base: $base"
|
||||||
|
|
||||||
|
if [ ! -f ./elvis ] || [ "$(./elvis -v | grep -oE '[1-9]+\.[0-9]+\.[0-9]+\-emqx-[0-9]+')" != "$elvis_version" ]; then
|
||||||
|
curl -fLO "https://github.com/emqx/elvis/releases/download/$elvis_version/elvis"
|
||||||
|
chmod +x ./elvis
|
||||||
|
fi
|
||||||
|
|
||||||
|
git fetch origin "$base"
|
||||||
|
|
||||||
|
git_diff() {
|
||||||
|
git diff --name-only origin/"$base"...HEAD
|
||||||
|
}
|
||||||
|
|
||||||
|
bad_file_count=0
|
||||||
|
for n in $(git_diff); do
|
||||||
|
if ! ./elvis rock "$n"; then
|
||||||
|
bad_file_count=$(( bad_file_count + 1))
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if [ $bad_file_count -gt 0 ]; then
|
||||||
|
echo "elvis: $bad_file_count errors"
|
||||||
|
exit 1
|
||||||
|
fi
|
|
@ -0,0 +1,31 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
elvis,
|
||||||
|
[
|
||||||
|
{config,
|
||||||
|
[
|
||||||
|
{dirs => ["apps"],
|
||||||
|
filter => "*.erl",
|
||||||
|
ruleset => erl_files,
|
||||||
|
# rules => [
|
||||||
|
# {elvis_style, max_module_length, #{}},
|
||||||
|
# {elvis_style, no_common_caveats_call, #{}}
|
||||||
|
# ]
|
||||||
|
},
|
||||||
|
{dirs => ["."],
|
||||||
|
filter => "Makefile",
|
||||||
|
ruleset => makefiles
|
||||||
|
},
|
||||||
|
{dirs => ["."],
|
||||||
|
filter => "rebar.config",
|
||||||
|
ruleset => rebar_config
|
||||||
|
},
|
||||||
|
{dirs => ["."],
|
||||||
|
filter => "elvis.config",
|
||||||
|
ruleset => elvis_config
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
].
|
|
@ -1324,10 +1324,11 @@ listener.ssl.external.access.1 = allow all
|
||||||
## Value: Duration
|
## Value: Duration
|
||||||
listener.ssl.external.handshake_timeout = 15s
|
listener.ssl.external.handshake_timeout = 15s
|
||||||
|
|
||||||
## Maximum number of non-self-issued intermediate certificates that can follow the peer certificate in a valid certification path.
|
## Maximum number of non-self-issued intermediate certificates that
|
||||||
|
## can follow the peer certificate in a valid certification path.
|
||||||
##
|
##
|
||||||
## Value: Number
|
## Value: Number
|
||||||
#listener.ssl.external.depth = 10
|
## listener.ssl.external.depth = 10
|
||||||
|
|
||||||
## String containing the user's password. Only used if the private keyfile
|
## String containing the user's password. Only used if the private keyfile
|
||||||
## is password-protected.
|
## is password-protected.
|
||||||
|
|
Loading…
Reference in New Issue