Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
b0471e9
Change version from 1.2-dev to 1.2-rc.0
eddbbt May 28, 2024
f8e89a5
Add v1.2.x to SECURITY.md
eddbbt May 28, 2024
6a45fd0
Update astarte_core and astarte_rpc deps
eddbbt May 28, 2024
afcc251
Merge pull request #90 from eddbbt/prepare-1.2rc0
Annopaolo May 29, 2024
6d57098
Update dependencies
eddbbt Jul 1, 2024
e2ab3b2
Prepare 1.2.0 release
eddbbt Jul 1, 2024
3a0a965
Merge pull request #92 from eddbbt/prepare-1.2
Annopaolo Jul 1, 2024
2f1e9fd
ci: fix cache
lusergit Apr 3, 2025
17c62c8
Merge pull request #103 from lusergit/fix/ci
davidebriani Apr 3, 2025
a089e35
feat(docker): allow dynamic Erlang cookie via environment variable
davidebriani Apr 3, 2025
220631c
Merge pull request #104 from davidebriani/erlang-cookie-via-env-variable
Annopaolo Apr 4, 2025
4407345
refactor: add RPC server to handle calls
lusergit Apr 3, 2025
e2f3772
Merge pull request #102 from lusergit/ref/rpc_server
davidebriani Apr 7, 2025
68049a0
fix: wrong lookup behavior
lusergit Apr 8, 2025
f2cfe8a
Merge pull request #105 from lusergit/fix/horde_lookup_case
davidebriani Apr 9, 2025
5a18cf1
Update version to 1.2.1-alpha.0 in mix.exs
Annopaolo Apr 10, 2025
19ae7fa
Update CHANGELOG.md
Annopaolo Apr 10, 2025
463b5e6
Merge pull request #107 from Annopaolo/prepare-1.2.1-α.0
davidebriani Apr 10, 2025
27ac938
Merge pull request #106 from lusergit/release-1.2
Annopaolo Apr 10, 2025
7f68931
Tests: add dependencies for property-based testing
Annopaolo Apr 16, 2025
186e974
Tests: improve Plugin module coverage
Annopaolo Apr 23, 2025
15339e0
Merge pull request #108 from Annopaolo/property-tests
matt-mazzucato Apr 30, 2025
83ace05
Tests: test what happens after a device is deleted
Annopaolo May 2, 2025
7cd8d67
Tests: test Utils module
Annopaolo Apr 30, 2025
8b5b49b
Tests: mock VerneMQ API
Annopaolo Apr 29, 2025
c6ce3f9
Tests: test RPC server
Annopaolo Apr 29, 2025
e46f4b1
Merge pull request #110 from Annopaolo/rpc-server-tests
matt-mazzucato May 5, 2025
184834b
Merge pull request #111 from Annopaolo/test-leftovers
matt-mazzucato May 5, 2025
5ca2e23
fix: ensure rpc server always starts (#112)
eddbbt Jul 9, 2025
575bb08
feat: suppoort capabilities messages
lusergit Jul 21, 2025
0e1a95c
chore: ensure Dockerfile sticks to best practices
lucamarchiori Aug 19, 2025
ff81f47
Merge pull request #113 from lusergit/push-vqnonxpyutmm
davidebriani Aug 20, 2025
d2d9c5e
chore: prepare v1.2.1-rc.0
noaccOS Aug 22, 2025
4815279
Merge pull request #116 from noaccOS/push-upsuyvvmnuln
davidebriani Aug 22, 2025
04c5732
chore: merge release-1.2 into release-1.3
noaccOS Sep 17, 2025
68d2fe9
feat: add keepalive option
noaccOS Sep 17, 2025
2abcf21
Merge pull request #117 from noaccOS/push-vltswvqwlwoo
davidebriani Sep 17, 2025
f44f6aa
chore: correcly format CHANGELOG.md dates
Annopaolo Nov 17, 2025
bfa493f
chore: prepare release 1.3.0-rc.0
Annopaolo Nov 17, 2025
4af59d6
Merge pull request #120 from Annopaolo/prepare-1.3.0-rc.0
Annopaolo Nov 21, 2025
cd6644c
chore: prepare v1.3.0-rc.1
noaccOS Jan 23, 2026
f89a00e
Merge pull request #121 from noaccOS/push-myvsqqtvllkk
Annopaolo Jan 26, 2026
01ec228
chore: forward-port release-1.3
mizzet1 Mar 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .formatter.exs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
[
inputs: ["{mix,.formatter}.exs", "{config,lib,test}/**/*.{ex,exs}"]
inputs: ["{mix,.formatter}.exs", "{config,lib,test}/**/*.{ex,exs}"],
import_deps: [:stream_data]
]
146 changes: 74 additions & 72 deletions .github/workflows/build-workflow.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ on:
# Run when pushing to stable branches
push:
branches:
- 'master'
- 'release-*'
- "master"
- "release-*"
# Run on branch/tag creation
create:
# Run on pull requests
Expand All @@ -24,36 +24,36 @@ jobs:
env:
MIX_ENV: ci
steps:
- uses: actions/checkout@v2
- uses: actions/cache@v1
with:
path: deps
key: ${{ runner.os }}-${{ env.elixir_version }}-${{ env.otp_version }}-mix-${{ hashFiles(format('{0}{1}', github.workspace, '/mix.lock')) }}
- uses: actions/cache@v1
with:
path: _build
key: ${{ runner.os }}-${{ env.elixir_version }}-${{ env.otp_version }}-_build-${{ hashFiles(format('{0}{1}', github.workspace, '/mix.lock')) }}-${{ github.sha }}
restore-keys: |
${{ runner.os }}-${{ env.elixir_version }}-${{ env.otp_version }}-_build-${{ hashFiles(format('{0}{1}', github.workspace, '/mix.lock')) }}
- id: plt_cache
uses: actions/cache@v1
with:
path: dialyzer_cache
key: ${{ runner.os }}-${{ env.elixir_version }}-${{ env.otp_version }}-dialyzer_cache-${{ github.sha }}
restore-keys: |
${{ runner.os }}-${{ env.elixir_version }}-${{ env.otp_version }}-dialyzer_cache-
- uses: erlef/setup-beam@v1.15
with:
otp-version: ${{ env.otp_version }}
elixir-version: ${{ env.elixir_version }}
- name: Install Dependencies
run: mix deps.get
- name: Create PLTs dir
if: ${{steps.plt_cache.outputs.cache-hit != 'true'}}
run: mkdir -p dialyzer_cache && mix dialyzer --plt
- name: Run dialyzer
# FIXME: This should be set to fail when dialyzer issues are fixed
run: mix dialyzer || exit 0
- uses: actions/checkout@v2
- uses: actions/cache@v4
with:
path: deps
key: ${{ runner.os }}-${{ env.elixir_version }}-${{ env.otp_version }}-mix-${{ hashFiles(format('{0}{1}', github.workspace, '/mix.lock')) }}
- uses: actions/cache@v4
with:
path: _build
key: ${{ runner.os }}-${{ env.elixir_version }}-${{ env.otp_version }}-_build-${{ hashFiles(format('{0}{1}', github.workspace, '/mix.lock')) }}-${{ github.sha }}
restore-keys: |
${{ runner.os }}-${{ env.elixir_version }}-${{ env.otp_version }}-_build-${{ hashFiles(format('{0}{1}', github.workspace, '/mix.lock')) }}
- id: plt_cache
uses: actions/cache@v4
with:
path: dialyzer_cache
key: ${{ runner.os }}-${{ env.elixir_version }}-${{ env.otp_version }}-dialyzer_cache-${{ github.sha }}
restore-keys: |
${{ runner.os }}-${{ env.elixir_version }}-${{ env.otp_version }}-dialyzer_cache-
- uses: erlef/setup-beam@v1.15
with:
otp-version: ${{ env.otp_version }}
elixir-version: ${{ env.elixir_version }}
- name: Install Dependencies
run: mix deps.get
- name: Create PLTs dir
if: ${{steps.plt_cache.outputs.cache-hit != 'true'}}
run: mkdir -p dialyzer_cache && mix dialyzer --plt
- name: Run dialyzer
# FIXME: This should be set to fail when dialyzer issues are fixed
run: mix dialyzer || exit 0

test-coverage:
name: Build and Test
Expand All @@ -65,56 +65,58 @@ jobs:
fail-fast: false
matrix:
rabbitmq:
- "rabbitmq:3.12.0-management"
- "rabbitmq:3.12.0-management"
database:
- "cassandra:3.11.15"
- "scylladb/scylla:5.2.2"
- "cassandra:3.11.15"
- "scylladb/scylla:5.2.2"
services:
rabbitmq:
image: ${{ matrix.rabbitmq }}
ports:
- 5672:5672
- 15672:15672
- 5672:5672
- 15672:15672
database:
image: ${{ matrix.database }}
ports:
- 9042:9042
- 9042:9042
env:
MIX_ENV: test
RABBITMQ_HOST: localhost
CASSANDRA_NODES: localhost
steps:
- uses: actions/checkout@v2
- uses: actions/cache@v1
with:
path: deps
key: ${{ runner.os }}-${{ env.elixir_version }}-${{ env.otp_version }}-mix-${{ hashFiles(format('{0}{1}', github.workspace, '/mix.lock')) }}
restore-keys: |
${{ runner.os }}-${{ env.elixir_version }}-${{ env.otp_version }}-mix-
- uses: actions/cache@v1
with:
path: _build
key: ${{ runner.os }}-${{ env.elixir_version }}-${{ env.otp_version }}-_build-${{ github.sha }}
restore-keys: |
${{ runner.os }}-${{ env.elixir_version }}-${{ env.otp_version }}-_build-
- uses: erlef/setup-beam@v1.15
with:
otp-version: ${{ env.otp_version }}
elixir-version: ${{ env.elixir_version }}
- name: Install Dependencies
run: mix deps.get
- name: Check formatting
run: mix format --check-formatted
- name: Compile
run: mix do compile
- name: Wait for Cassandra
run: |
npm install -g wait-for-cassandra
wait-for-cassandra -T 120000 -h $CASSANDRA_NODES
- name: Test and Coverage
run: mix coveralls.json --exclude wip -o coverage_results
- name: Upload Coverage Results to CodeCov
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
run: |
bash <(curl -s https://codecov.io/bash) -t $CODECOV_TOKEN
- uses: actions/checkout@v2
- uses: actions/cache@v4
with:
path: deps
key: ${{ runner.os }}-${{ env.elixir_version }}-${{ env.otp_version }}-mix-${{ hashFiles(format('{0}{1}', github.workspace, '/mix.lock')) }}
restore-keys: |
${{ runner.os }}-${{ env.elixir_version }}-${{ env.otp_version }}-mix-
- uses: actions/cache@v4
with:
path: _build
key: ${{ runner.os }}-${{ env.elixir_version }}-${{ env.otp_version }}-_build-${{ github.sha }}
restore-keys: |
${{ runner.os }}-${{ env.elixir_version }}-${{ env.otp_version }}-_build-
- uses: erlef/setup-beam@v1.15
with:
otp-version: ${{ env.otp_version }}
elixir-version: ${{ env.elixir_version }}
- name: Install Dependencies
run: mix deps.get
- name: Check formatting
run: mix format --check-formatted
- name: Compile
run: mix do compile
- name: Wait for Cassandra
run: |
npm install -g wait-for-cassandra
wait-for-cassandra -T 120000 -h $CASSANDRA_NODES
- name: Test and Coverage
run: mix coveralls.json --exclude wip -o coverage_results
- name: Upload Coverage Results to CodeCov
uses: codecov/codecov-action@v5
with:
fail_ci_if_error: true
token: ${{ secrets.CODECOV_TOKEN }}
verbose: true
directory: coverage_results
75 changes: 68 additions & 7 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,25 +1,53 @@
# Changelog

All notable changes to this project will be documented in this file.

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

## [Unreleased]
## [1.3.0-rc.1] - 2026-01-23

## [1.3.0-rc.0] - 2025-11-21

### Added

- Add the option to enable keepalive for scylladb connections, using the environment variable
`DOCKER_VERNEMQ_ASTARTE_VMQ_PLUGIN__CASSANDRA__ENABLE_KEEPALIVE`. Defaults to `true`
- Devices can now declare support for optional Astarte MQTT v1 features to Astarte via capabilities

## [1.2.1-rc.0] - 2025-08-22

### Changed

- RPC now uses erlang clustering instead of `astarte_rpc`

## [1.2.1-alpha.0] - 2025-04-10

### Added

- Allow to set the Erlang cookie via the `RELEASE_COOKIE`
env var. Default to `vmq` for backwards compatibility.

## [1.2.0] - 2024-07-01

## [1.2.0-rc.0] - 2024-05-29

### Added

- The plugin now accesses the Astarte database. The following
env variables have been added:
- `DOCKER_VERNEMQ_ASTARTE_VMQ_PLUGIN__CASSANDRA__NODES`
(defaults to `localhost:9042`)
(defaults to `localhost:9042`)
- `DOCKER_VERNEMQ_ASTARTE_VMQ_PLUGIN__CASSANDRA__USERNAME`
(defaults to `cassandra`)
(defaults to `cassandra`)
- `DOCKER_VERNEMQ_ASTARTE_VMQ_PLUGIN__CASSANDRA__PASSWORD`
(defaults to `cassandra`)
(defaults to `cassandra`)
- `DOCKER_VERNEMQ_ASTARTE_VMQ_PLUGIN__CASSANDRA__POOL_SIZE`
(defaults to 10)
(defaults to 10)
- `DOCKER_VERNEMQ_ASTARTE_VMQ_PLUGIN__CASSANDRA__SSL_ENABLED`
(defaults to `false`)
(defaults to `false`)
- `DOCKER_VERNEMQ_ASTARTE_VMQ_PLUGIN__CASSANDRA__SSL_DISABLE_SNI`
(defaults to `true`)
(defaults to `true`)
- `DOCKER_VERNEMQ_ASTARTE_VMQ_PLUGIN__CASSANDRA__SSL_CUSTOM_SNI`
- `DOCKER_VERNEMQ_ASTARTE_VMQ_PLUGIN__CASSANDRA__SSL_CA_FILE`
- Added support for device deletion. During deletion, a device is
Expand All @@ -33,6 +61,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
- Added support for `capabilities` message topic at `/<realm name>/<device name>/capabilities`

### Changed

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

## [1.1.0-rc.0] - 2023-06-09

### Changed

- Use the `internal` event type for device heartbeat.
- Update Elixir to 1.14.5 and Erlang/OTP to 25.3.2.

## [1.1.0-alpha.0] - 2022-11-24

### Fixed

- Correctly serialize disconnection/reconnection events if VerneMQ hooks are called in
the wrong order. Fix https://github.com/astarte-platform/astarte/issues/668.

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

## [1.0.4] - 2022-09-26

### Fixed

- Do not let VerneMQ container start unless the CA cert is retrieved from CFSSL.
- Prevent the connection from timing out when the client takes more than 5 seconds to perform the
SSL handshake

### Security

- Rebuild official docker image (updates OTP to 23.3.4.17), in order to fix CVE-2022-37026.

## [1.0.3] - 2022-04-07

## [1.0.2] - 2022-03-30

## [1.0.1] - 2021-12-16

### Fixed

- Do not override VerneMQ config `max_message_rate` value.

## [1.0.0] - 2021-06-30

### Changed

- Log plugin version when the application is starting.

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

## [1.0.0-beta.2] - 2021-03-24

### Changed

- Update Elixir to 1.11.4 and Erlang/OTP to 23.2
- Do not authorize non-devices blindly in `auth_on_publish` and `auth_on_subscribe`.

## [1.0.0-beta.1] - 2021-02-16

### Changed

- Default data_queue_count to 128.

## [1.0.0-alpha.1] - 2020-06-19

### Added

- Send a periodic heartbeat for every connected device.
- Support SSL for RabbitMQ connections.
- Default max certificate chain length to 10.
Expand All @@ -96,19 +143,27 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
variables

## [0.11.4] - 2021-01-26

### Fixed

- Fix a bug where the plugin would remain unfunctional after suddenly disconnecting from RabbitMQ.

## [0.11.3] - 2020-09-24

### Fixed

- Fix bug that prevented property unset

## [0.11.2] - 2020-08-14

### Added

- Update Elixir to 1.8.2

## [0.11.1] - 2020-05-18

### Added

- Enhance docker build process

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

## [0.11.0-beta.1] - 2019-12-26

### Added

- Add support to multiple queues with consistent hashing

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

## [0.10.0-rc.1] - 2019-04-10

### Fixed

- Re-enable SSL listener, which broke Docker Compose.

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

## [0.10.0-beta.1] - 2018-08-27

### Added

- First Astarte release.
Loading
Loading