Skip to content

Commit 524cbc5

Browse files
committed
chore: forward-port release-1.3
2 parents 43de0c9 + f89a00e commit 524cbc5

32 files changed

+2045
-344
lines changed

.formatter.exs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
[
2-
inputs: ["{mix,.formatter}.exs", "{config,lib,test}/**/*.{ex,exs}"]
2+
inputs: ["{mix,.formatter}.exs", "{config,lib,test}/**/*.{ex,exs}"],
3+
import_deps: [:stream_data]
34
]

.github/workflows/build-workflow.yaml

Lines changed: 72 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ on:
44
# Run when pushing to stable branches
55
push:
66
branches:
7-
- 'master'
8-
- 'release-*'
7+
- "master"
8+
- "release-*"
99
# Run on branch/tag creation
1010
create:
1111
# Run on pull requests
@@ -24,36 +24,36 @@ jobs:
2424
env:
2525
MIX_ENV: ci
2626
steps:
27-
- uses: actions/checkout@v2
28-
- uses: actions/cache@v1
29-
with:
30-
path: deps
31-
key: ${{ runner.os }}-${{ env.elixir_version }}-${{ env.otp_version }}-mix-${{ hashFiles(format('{0}{1}', github.workspace, '/mix.lock')) }}
32-
- uses: actions/cache@v1
33-
with:
34-
path: _build
35-
key: ${{ runner.os }}-${{ env.elixir_version }}-${{ env.otp_version }}-_build-${{ hashFiles(format('{0}{1}', github.workspace, '/mix.lock')) }}-${{ github.sha }}
36-
restore-keys: |
37-
${{ runner.os }}-${{ env.elixir_version }}-${{ env.otp_version }}-_build-${{ hashFiles(format('{0}{1}', github.workspace, '/mix.lock')) }}
38-
- id: plt_cache
39-
uses: actions/cache@v1
40-
with:
41-
path: dialyzer_cache
42-
key: ${{ runner.os }}-${{ env.elixir_version }}-${{ env.otp_version }}-dialyzer_cache-${{ github.sha }}
43-
restore-keys: |
44-
${{ runner.os }}-${{ env.elixir_version }}-${{ env.otp_version }}-dialyzer_cache-
45-
- uses: erlef/setup-beam@v1.15
46-
with:
47-
otp-version: ${{ env.otp_version }}
48-
elixir-version: ${{ env.elixir_version }}
49-
- name: Install Dependencies
50-
run: mix deps.get
51-
- name: Create PLTs dir
52-
if: ${{steps.plt_cache.outputs.cache-hit != 'true'}}
53-
run: mkdir -p dialyzer_cache && mix dialyzer --plt
54-
- name: Run dialyzer
55-
# FIXME: This should be set to fail when dialyzer issues are fixed
56-
run: mix dialyzer || exit 0
27+
- uses: actions/checkout@v2
28+
- uses: actions/cache@v4
29+
with:
30+
path: deps
31+
key: ${{ runner.os }}-${{ env.elixir_version }}-${{ env.otp_version }}-mix-${{ hashFiles(format('{0}{1}', github.workspace, '/mix.lock')) }}
32+
- uses: actions/cache@v4
33+
with:
34+
path: _build
35+
key: ${{ runner.os }}-${{ env.elixir_version }}-${{ env.otp_version }}-_build-${{ hashFiles(format('{0}{1}', github.workspace, '/mix.lock')) }}-${{ github.sha }}
36+
restore-keys: |
37+
${{ runner.os }}-${{ env.elixir_version }}-${{ env.otp_version }}-_build-${{ hashFiles(format('{0}{1}', github.workspace, '/mix.lock')) }}
38+
- id: plt_cache
39+
uses: actions/cache@v4
40+
with:
41+
path: dialyzer_cache
42+
key: ${{ runner.os }}-${{ env.elixir_version }}-${{ env.otp_version }}-dialyzer_cache-${{ github.sha }}
43+
restore-keys: |
44+
${{ runner.os }}-${{ env.elixir_version }}-${{ env.otp_version }}-dialyzer_cache-
45+
- uses: erlef/setup-beam@v1.15
46+
with:
47+
otp-version: ${{ env.otp_version }}
48+
elixir-version: ${{ env.elixir_version }}
49+
- name: Install Dependencies
50+
run: mix deps.get
51+
- name: Create PLTs dir
52+
if: ${{steps.plt_cache.outputs.cache-hit != 'true'}}
53+
run: mkdir -p dialyzer_cache && mix dialyzer --plt
54+
- name: Run dialyzer
55+
# FIXME: This should be set to fail when dialyzer issues are fixed
56+
run: mix dialyzer || exit 0
5757

5858
test-coverage:
5959
name: Build and Test
@@ -65,56 +65,56 @@ jobs:
6565
fail-fast: false
6666
matrix:
6767
rabbitmq:
68-
- "rabbitmq:3.12.0-management"
68+
- "rabbitmq:3.12.0-management"
6969
database:
70-
- "cassandra:3.11.15"
71-
- "scylladb/scylla:5.2.2"
70+
- "cassandra:3.11.15"
71+
- "scylladb/scylla:5.2.2"
7272
services:
7373
rabbitmq:
7474
image: ${{ matrix.rabbitmq }}
7575
ports:
76-
- 5672:5672
77-
- 15672:15672
76+
- 5672:5672
77+
- 15672:15672
7878
database:
7979
image: ${{ matrix.database }}
8080
ports:
81-
- 9042:9042
81+
- 9042:9042
8282
env:
8383
MIX_ENV: test
8484
RABBITMQ_HOST: localhost
8585
CASSANDRA_NODES: localhost
8686
steps:
87-
- uses: actions/checkout@v2
88-
- uses: actions/cache@v1
89-
with:
90-
path: deps
91-
key: ${{ runner.os }}-${{ env.elixir_version }}-${{ env.otp_version }}-mix-${{ hashFiles(format('{0}{1}', github.workspace, '/mix.lock')) }}
92-
restore-keys: |
93-
${{ runner.os }}-${{ env.elixir_version }}-${{ env.otp_version }}-mix-
94-
- uses: actions/cache@v1
95-
with:
96-
path: _build
97-
key: ${{ runner.os }}-${{ env.elixir_version }}-${{ env.otp_version }}-_build-${{ github.sha }}
98-
restore-keys: |
99-
${{ runner.os }}-${{ env.elixir_version }}-${{ env.otp_version }}-_build-
100-
- uses: erlef/setup-beam@v1.15
101-
with:
102-
otp-version: ${{ env.otp_version }}
103-
elixir-version: ${{ env.elixir_version }}
104-
- name: Install Dependencies
105-
run: mix deps.get
106-
- name: Check formatting
107-
run: mix format --check-formatted
108-
- name: Compile
109-
run: mix do compile
110-
- name: Wait for Cassandra
111-
run: |
112-
npm install -g wait-for-cassandra
113-
wait-for-cassandra -T 120000 -h $CASSANDRA_NODES
114-
- name: Test and Coverage
115-
run: mix coveralls.json --exclude wip -o coverage_results
116-
- name: Upload Coverage Results to CodeCov
117-
env:
118-
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
119-
run: |
120-
bash <(curl -s https://codecov.io/bash) -t $CODECOV_TOKEN
87+
- uses: actions/checkout@v2
88+
- uses: actions/cache@v4
89+
with:
90+
path: deps
91+
key: ${{ runner.os }}-${{ env.elixir_version }}-${{ env.otp_version }}-mix-${{ hashFiles(format('{0}{1}', github.workspace, '/mix.lock')) }}
92+
restore-keys: |
93+
${{ runner.os }}-${{ env.elixir_version }}-${{ env.otp_version }}-mix-
94+
- uses: actions/cache@v4
95+
with:
96+
path: _build
97+
key: ${{ runner.os }}-${{ env.elixir_version }}-${{ env.otp_version }}-_build-${{ github.sha }}
98+
restore-keys: |
99+
${{ runner.os }}-${{ env.elixir_version }}-${{ env.otp_version }}-_build-
100+
- uses: erlef/setup-beam@v1.15
101+
with:
102+
otp-version: ${{ env.otp_version }}
103+
elixir-version: ${{ env.elixir_version }}
104+
- name: Install Dependencies
105+
run: mix deps.get
106+
- name: Check formatting
107+
run: mix format --check-formatted
108+
- name: Compile
109+
run: mix do compile
110+
- name: Wait for Cassandra
111+
run: |
112+
npm install -g wait-for-cassandra
113+
wait-for-cassandra -T 120000 -h $CASSANDRA_NODES
114+
- name: Test and Coverage
115+
run: mix coveralls.json --exclude wip -o coverage_results
116+
- name: Upload Coverage Results to CodeCov
117+
env:
118+
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
119+
run: |
120+
bash <(curl -s https://codecov.io/bash) -t $CODECOV_TOKEN

CHANGELOG.md

Lines changed: 68 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,53 @@
11
# Changelog
2+
23
All notable changes to this project will be documented in this file.
34

45
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
56
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
67

7-
## [Unreleased]
8+
## [1.3.0-rc.1] - 2026-01-23
9+
10+
## [1.3.0-rc.0] - 2025-11-21
11+
812
### Added
13+
14+
- Add the option to enable keepalive for scylladb connections, using the environment variable
15+
`DOCKER_VERNEMQ_ASTARTE_VMQ_PLUGIN__CASSANDRA__ENABLE_KEEPALIVE`. Defaults to `true`
16+
- Devices can now declare support for optional Astarte MQTT v1 features to Astarte via capabilities
17+
18+
## [1.2.1-rc.0] - 2025-08-22
19+
20+
### Changed
21+
22+
- RPC now uses erlang clustering instead of `astarte_rpc`
23+
24+
## [1.2.1-alpha.0] - 2025-04-10
25+
26+
### Added
27+
28+
- Allow to set the Erlang cookie via the `RELEASE_COOKIE`
29+
env var. Default to `vmq` for backwards compatibility.
30+
31+
## [1.2.0] - 2024-07-01
32+
33+
## [1.2.0-rc.0] - 2024-05-29
34+
35+
### Added
36+
937
- The plugin now accesses the Astarte database. The following
1038
env variables have been added:
1139
- `DOCKER_VERNEMQ_ASTARTE_VMQ_PLUGIN__CASSANDRA__NODES`
12-
(defaults to `localhost:9042`)
40+
(defaults to `localhost:9042`)
1341
- `DOCKER_VERNEMQ_ASTARTE_VMQ_PLUGIN__CASSANDRA__USERNAME`
14-
(defaults to `cassandra`)
42+
(defaults to `cassandra`)
1543
- `DOCKER_VERNEMQ_ASTARTE_VMQ_PLUGIN__CASSANDRA__PASSWORD`
16-
(defaults to `cassandra`)
44+
(defaults to `cassandra`)
1745
- `DOCKER_VERNEMQ_ASTARTE_VMQ_PLUGIN__CASSANDRA__POOL_SIZE`
18-
(defaults to 10)
46+
(defaults to 10)
1947
- `DOCKER_VERNEMQ_ASTARTE_VMQ_PLUGIN__CASSANDRA__SSL_ENABLED`
20-
(defaults to `false`)
48+
(defaults to `false`)
2149
- `DOCKER_VERNEMQ_ASTARTE_VMQ_PLUGIN__CASSANDRA__SSL_DISABLE_SNI`
22-
(defaults to `true`)
50+
(defaults to `true`)
2351
- `DOCKER_VERNEMQ_ASTARTE_VMQ_PLUGIN__CASSANDRA__SSL_CUSTOM_SNI`
2452
- `DOCKER_VERNEMQ_ASTARTE_VMQ_PLUGIN__CASSANDRA__SSL_CA_FILE`
2553
- Added support for device deletion. During deletion, a device is
@@ -33,6 +61,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
3361
- Added support for `capabilities` message topic at `/<realm name>/<device name>/capabilities`
3462

3563
### Changed
64+
3665
- Update Elixir to 1.15.7.
3766
- Update Erlang/OTP to 26.1.
3867
- Update VerneMQ to master (1cc57fa) to support OTP 26.
@@ -42,12 +71,16 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
4271
## [1.1.0] - 2023-06-20
4372

4473
## [1.1.0-rc.0] - 2023-06-09
74+
4575
### Changed
76+
4677
- Use the `internal` event type for device heartbeat.
4778
- Update Elixir to 1.14.5 and Erlang/OTP to 25.3.2.
4879

4980
## [1.1.0-alpha.0] - 2022-11-24
81+
5082
### Fixed
83+
5184
- Correctly serialize disconnection/reconnection events if VerneMQ hooks are called in
5285
the wrong order. Fix https://github.com/astarte-platform/astarte/issues/668.
5386

@@ -56,38 +89,52 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
5689
## [1.0.5] - 2023-09-25
5790

5891
## [1.0.4] - 2022-09-26
92+
5993
### Fixed
94+
6095
- Do not let VerneMQ container start unless the CA cert is retrieved from CFSSL.
6196
- Prevent the connection from timing out when the client takes more than 5 seconds to perform the
6297
SSL handshake
98+
6399
### Security
100+
64101
- Rebuild official docker image (updates OTP to 23.3.4.17), in order to fix CVE-2022-37026.
65102

66103
## [1.0.3] - 2022-04-07
67104

68105
## [1.0.2] - 2022-03-30
69106

70107
## [1.0.1] - 2021-12-16
108+
71109
### Fixed
110+
72111
- Do not override VerneMQ config `max_message_rate` value.
73112

74113
## [1.0.0] - 2021-06-30
114+
75115
### Changed
116+
76117
- Log plugin version when the application is starting.
77118

78119
## [1.0.0-rc.0] - 2021-05-05
79120

80121
## [1.0.0-beta.2] - 2021-03-24
122+
81123
### Changed
124+
82125
- Update Elixir to 1.11.4 and Erlang/OTP to 23.2
83126
- Do not authorize non-devices blindly in `auth_on_publish` and `auth_on_subscribe`.
84127

85128
## [1.0.0-beta.1] - 2021-02-16
129+
86130
### Changed
131+
87132
- Default data_queue_count to 128.
88133

89134
## [1.0.0-alpha.1] - 2020-06-19
135+
90136
### Added
137+
91138
- Send a periodic heartbeat for every connected device.
92139
- Support SSL for RabbitMQ connections.
93140
- Default max certificate chain length to 10.
@@ -96,19 +143,27 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
96143
variables
97144

98145
## [0.11.4] - 2021-01-26
146+
99147
### Fixed
148+
100149
- Fix a bug where the plugin would remain unfunctional after suddenly disconnecting from RabbitMQ.
101150

102151
## [0.11.3] - 2020-09-24
152+
103153
### Fixed
154+
104155
- Fix bug that prevented property unset
105156

106157
## [0.11.2] - 2020-08-14
158+
107159
### Added
160+
108161
- Update Elixir to 1.8.2
109162

110163
## [0.11.1] - 2020-05-18
164+
111165
### Added
166+
112167
- Enhance docker build process
113168

114169
## [0.11.0] - 2020-04-13
@@ -120,7 +175,9 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
120175
## [0.11.0-beta.2] - 2020-01-24
121176

122177
## [0.11.0-beta.1] - 2019-12-26
178+
123179
### Added
180+
124181
- Add support to multiple queues with consistent hashing
125182

126183
## [0.10.2] - 2019-12-09
@@ -130,7 +187,9 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
130187
## [0.10.0] - 2019-04-16
131188

132189
## [0.10.0-rc.1] - 2019-04-10
190+
133191
### Fixed
192+
134193
- Re-enable SSL listener, which broke Docker Compose.
135194

136195
## [0.10.0-rc.0] - 2019-04-03
@@ -140,5 +199,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
140199
## [0.10.0-beta.2] - 2018-10-19
141200

142201
## [0.10.0-beta.1] - 2018-08-27
202+
143203
### Added
204+
144205
- First Astarte release.

0 commit comments

Comments
 (0)