331 lines
12 KiB
YAML
331 lines
12 KiB
YAML
name: Compatibility Test Suite
|
|
|
|
on:
|
|
push:
|
|
tags:
|
|
- v*
|
|
release:
|
|
types:
|
|
- published
|
|
pull_request:
|
|
|
|
jobs:
|
|
ldap:
|
|
runs-on: ubuntu-20.04
|
|
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
ldap_tag:
|
|
- 2.4.50
|
|
network_type:
|
|
- ipv4
|
|
- ipv6
|
|
|
|
steps:
|
|
- uses: actions/checkout@v1
|
|
- name: setup
|
|
env:
|
|
LDAP_TAG: ${{ matrix.ldap_tag }}
|
|
run: |
|
|
docker-compose -f .ci/apps_tests/docker-compose.yaml build --no-cache
|
|
docker-compose -f .ci/compatibility_tests/docker-compose-ldap.yaml up -d
|
|
- name: setup
|
|
if: matrix.network_type == 'ipv4'
|
|
run: |
|
|
echo EMQX_AUTH__LDAP__SERVERS=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' ldap) >> "$GITHUB_ENV"
|
|
- name: setup
|
|
if: matrix.network_type == 'ipv6'
|
|
run: |
|
|
echo EMQX_AUTH__LDAP__SERVERS=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.GlobalIPv6Address}}{{end}}' ldap) >> "$GITHUB_ENV"
|
|
- name: run test cases
|
|
run: |
|
|
export CUTTLEFISH_ENV_OVERRIDE_PREFIX=EMQX_
|
|
printenv > .env
|
|
docker exec -i erlang sh -c "make ensure-rebar3"
|
|
docker exec -i erlang sh -c "./rebar3 eunit --dir apps/emqx_auth_ldap"
|
|
docker exec --env-file .env -i erlang sh -c "./rebar3 ct --dir apps/emqx_auth_ldap"
|
|
- uses: actions/upload-artifact@v1
|
|
if: failure()
|
|
with:
|
|
name: logs_ldap${{ matrix.ldap_tag }}_${{ matrix.network_type }}
|
|
path: _build/test/logs
|
|
|
|
mongo:
|
|
runs-on: ubuntu-20.04
|
|
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
mongo_tag:
|
|
- 3
|
|
- 4
|
|
network_type:
|
|
- ipv4
|
|
- ipv6
|
|
connect_type:
|
|
- tls
|
|
- tcp
|
|
|
|
steps:
|
|
- uses: actions/checkout@v1
|
|
- name: setup
|
|
env:
|
|
MONGO_TAG: ${{ matrix.mongo_tag }}
|
|
if: matrix.connect_type == 'tls'
|
|
run: |
|
|
docker-compose -f .ci/compatibility_tests/docker-compose-mongo-tls.yaml up -d
|
|
cat <<-EOF >> "$GITHUB_ENV"
|
|
EMQX_AUTH__MONGO__SSL=on
|
|
EMQX_AUTH__MONGO__CACERTFILE=/emqx/apps/emqx_auth_mongo/test/emqx_auth_mongo_SUITE_data/ca.pem
|
|
EMQX_AUTH__MONGO__CERTFILE=/emqx/apps/emqx_auth_mongo/test/emqx_auth_mongo_SUITE_data/client-cert.pem
|
|
EMQX_AUTH__MONGO__KEYFILE=/emqx/apps/emqx_auth_mongo/test/emqx_auth_mongo_SUITE_data/client-key.pem
|
|
EOF
|
|
- name: setup
|
|
env:
|
|
MONGO_TAG: ${{ matrix.mongo_tag }}
|
|
if: matrix.connect_type == 'tcp'
|
|
run: |
|
|
docker-compose -f .ci/compatibility_tests/docker-compose-mongo.yaml up -d
|
|
echo EMQX_AUTH__MONGO__SSL=off >> "$GITHUB_ENV"
|
|
- name: setup
|
|
if: matrix.network_type == 'ipv4'
|
|
run: |
|
|
echo "EMQX_AUTH__MONGO__SERVER=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mongo):27017" >> "$GITHUB_ENV"
|
|
- name: setup
|
|
if: matrix.network_type == 'ipv6'
|
|
run: |
|
|
echo "EMQX_AUTH__MONGO__SERVER=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.GlobalIPv6Address}}{{end}}' mongo):27017" >> "$GITHUB_ENV"
|
|
- name: run test cases
|
|
run: |
|
|
export CUTTLEFISH_ENV_OVERRIDE_PREFIX=EMQX_
|
|
printenv > .env
|
|
docker exec -i erlang sh -c "make ensure-rebar3"
|
|
docker exec -i erlang sh -c "./rebar3 eunit --dir apps/emqx_auth_mongo"
|
|
docker exec --env-file .env -i erlang sh -c "./rebar3 ct --dir apps/emqx_auth_mongo"
|
|
- uses: actions/upload-artifact@v1
|
|
if: failure()
|
|
with:
|
|
name: logs_mongo${{ matrix.mongo_tag }}_${{ matrix.network_type }}_${{ matrix.connect_type }}
|
|
path: _build/test/logs
|
|
|
|
mysql:
|
|
runs-on: ubuntu-20.04
|
|
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
mysql_tag:
|
|
- 5.7
|
|
- 8
|
|
network_type:
|
|
- ipv4
|
|
- ipv6
|
|
connect_type:
|
|
- tls
|
|
- tcp
|
|
|
|
steps:
|
|
- uses: actions/checkout@v1
|
|
- name: setup
|
|
env:
|
|
MYSQL_TAG: ${{ matrix.mysql_tag }}
|
|
if: matrix.connect_type == 'tls'
|
|
run: |
|
|
docker-compose -f .ci/compatibility_tests/docker-compose-mysql-tls.yaml up -d
|
|
cat <<-EOF >> "$GITHUB_ENV"
|
|
EMQX_AUTH__MYSQL__SSL=on
|
|
EMQX_AUTH__MYSQL__SSL__CACERTFILE=/emqx/apps/emqx_auth_mysql/test/emqx_auth_mysql_SUITE_data/ca.pem
|
|
EMQX_AUTH__MYSQL__SSL__CERTFILE=/emqx/apps/emqx_auth_mysql/test/emqx_auth_mysql_SUITE_data/client-cert.pem
|
|
EMQX_AUTH__MYSQL__SSL__KEYFILE=/emqx/apps/emqx_auth_mysql/test/emqx_auth_mysql_SUITE_data/client-key.pem
|
|
EOF
|
|
- name: setup
|
|
env:
|
|
MYSQL_TAG: ${{ matrix.mysql_tag }}
|
|
if: matrix.connect_type == 'tcp'
|
|
run: |
|
|
docker-compose -f .ci/compatibility_tests/docker-compose-mysql.yaml up -d
|
|
echo EMQX_AUTH__MYSQL__SSL=off >> "$GITHUB_ENV"
|
|
- name: setup
|
|
if: matrix.network_type == 'ipv4'
|
|
run: |
|
|
echo "EMQX_AUTH__MYSQL__SERVER=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mysql):3306" >> "$GITHUB_ENV"
|
|
- name: setup
|
|
if: matrix.network_type == 'ipv6'
|
|
run: |
|
|
echo "EMQX_AUTH__MYSQL__SERVER=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.GlobalIPv6Address}}{{end}}' mysql):3306" >> "$GITHUB_ENV"
|
|
- name: run test cases
|
|
run: |
|
|
export EMQX_AUTH__MYSQL__USERNAME=root \
|
|
EMQX_AUTH__MYSQL__PASSWORD=public \
|
|
EMQX_AUTH__MYSQL__DATABASE=mqtt \
|
|
CUTTLEFISH_ENV_OVERRIDE_PREFIX=EMQX_
|
|
printenv > .env
|
|
docker exec -i erlang sh -c "make ensure-rebar3"
|
|
docker exec -i erlang sh -c "./rebar3 eunit --dir apps/emqx_auth_mysql"
|
|
docker exec --env-file .env -i erlang sh -c "./rebar3 ct --dir apps/emqx_auth_mysql"
|
|
- uses: actions/upload-artifact@v1
|
|
if: failure()
|
|
with:
|
|
name: logs_mysql${{ matrix.mysql_tag }}_${{ matrix.network_type }}_${{ matrix.connect_type }}
|
|
path: _build/test/logs
|
|
|
|
pgsql:
|
|
runs-on: ubuntu-20.04
|
|
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
pgsql_tag:
|
|
- 9
|
|
- 10
|
|
- 11
|
|
- 12
|
|
- 13
|
|
network_type:
|
|
- ipv4
|
|
- ipv6
|
|
connect_type:
|
|
- tls
|
|
- tcp
|
|
steps:
|
|
- uses: actions/checkout@v1
|
|
- name: setup
|
|
env:
|
|
PGSQL_TAG: ${{ matrix.pgsql_tag }}
|
|
if: matrix.connect_type == 'tls'
|
|
run: |
|
|
docker-compose -f .ci/compatibility_tests/docker-compose-pgsql-tls.yaml build --no-cache
|
|
docker-compose -f .ci/compatibility_tests/docker-compose-pgsql-tls.yaml up -d
|
|
cat <<-EOF >> "$GITHUB_ENV"
|
|
EMQX_AUTH__PGSQL__SSL=on
|
|
EMQX_AUTH__PGSQL__SSL__CACERTFILE=/emqx/apps/emqx_auth_pgsql/test/emqx_auth_pgsql_SUITE_data/root.crt
|
|
EOF
|
|
- name: setup
|
|
env:
|
|
PGSQL_TAG: ${{ matrix.pgsql_tag }}
|
|
if: matrix.connect_type == 'tcp'
|
|
run: |
|
|
docker-compose -f .ci/compatibility_tests/docker-compose-pgsql.yaml up -d
|
|
echo EMQX_AUTH__PGSQL__SSL=off >> "$GITHUB_ENV"
|
|
- name: setup
|
|
if: matrix.network_type == 'ipv4'
|
|
run: |
|
|
echo "EMQX_AUTH__PGSQL__SERVER=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' pgsql):5432" >> "$GITHUB_ENV"
|
|
- name: setup
|
|
if: matrix.network_type == 'ipv6'
|
|
run: |
|
|
echo "EMQX_AUTH__PGSQL__SERVER=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.GlobalIPv6Address}}{{end}}' pgsql):5432" >> "$GITHUB_ENV"
|
|
- name: run test cases
|
|
run: |
|
|
export EMQX_AUTH__PGSQL__USERNAME=root \
|
|
EMQX_AUTH__PGSQL__PASSWORD=public \
|
|
EMQX_AUTH__PGSQL__DATABASE=mqtt \
|
|
CUTTLEFISH_ENV_OVERRIDE_PREFIX=EMQX_
|
|
printenv > .env
|
|
docker exec -i erlang sh -c "make ensure-rebar3"
|
|
docker exec -i erlang sh -c "./rebar3 eunit --dir apps/emqx_auth_pgsql"
|
|
docker exec --env-file .env -i erlang sh -c "./rebar3 ct --dir apps/emqx_auth_pgsql"
|
|
- uses: actions/upload-artifact@v1
|
|
if: failure()
|
|
with:
|
|
name: logs_pgsql${{ matrix.pgsql_tag }}_${{ matrix.network_type }}_${{ matrix.connect_type }}
|
|
path: _build/test/logs
|
|
|
|
redis:
|
|
runs-on: ubuntu-20.04
|
|
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
redis_tag:
|
|
- 5
|
|
- 6
|
|
network_type:
|
|
- ipv4
|
|
- ipv6
|
|
connect_type:
|
|
- tls
|
|
- tcp
|
|
node_type:
|
|
- single
|
|
- cluster
|
|
|
|
steps:
|
|
- uses: actions/checkout@v1
|
|
- name: setup
|
|
env:
|
|
REDIS_TAG: ${{ matrix.redis_tag }}
|
|
if: matrix.connect_type == 'tls' && matrix.redis_tag != '5'
|
|
run: |
|
|
set -exu
|
|
docker-compose -f .ci/compatibility_tests/docker-compose-redis-${{ matrix.node_type }}-tls.yaml up -d
|
|
cat <<-EOF >> "$GITHUB_ENV"
|
|
EMQX_AUTH__REDIS__SSL=on
|
|
EMQX_AUTH__REDIS__SSL__CACERTFILE=/emqx/apps/emqx_auth_redis/test/emqx_auth_redis_SUITE_data/certs/ca.crt
|
|
EMQX_AUTH__REDIS__SSL__CERTFILE=/emqx/apps/emqx_auth_redis/test/emqx_auth_redis_SUITE_data/certs/redis.crt
|
|
EMQX_AUTH__REDIS__SSL__KEYFILE=/emqx/apps/emqx_auth_redis/test/emqx_auth_redis_SUITE_data/certs/redis.key
|
|
EOF
|
|
- name: setup
|
|
env:
|
|
REDIS_TAG: ${{ matrix.redis_tag }}
|
|
if: matrix.connect_type == 'tcp'
|
|
run: |
|
|
docker-compose -f .ci/compatibility_tests/docker-compose-redis-${{ matrix.node_type }}.yaml up -d
|
|
echo EMQX_AUTH__REDIS__SSL=off >> "$GITHUB_ENV"
|
|
- name: get server address
|
|
if: matrix.connect_type == 'tcp' || (matrix.connect_type == 'tls' && matrix.redis_tag != '5')
|
|
run: |
|
|
set -exu
|
|
ipv4_address=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' redis)
|
|
ipv6_address=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.GlobalIPv6Address}}{{end}}' redis)
|
|
cat <<-EOF >> "$GITHUB_ENV"
|
|
redis_ipv4_address=$ipv4_address
|
|
redis_ipv6_address=$ipv6_address
|
|
EOF
|
|
- name: setup
|
|
if: matrix.node_type == 'single' && matrix.connect_type == 'tcp'
|
|
run: |
|
|
set -exu
|
|
cat <<-EOF >> "$GITHUB_ENV"
|
|
EMQX_AUTH__REDIS__TYPE=single
|
|
EMQX_AUTH__REDIS__SERVER=${redis_${{ matrix.network_type }}_address}:6379
|
|
EOF
|
|
- name: setup
|
|
if: matrix.node_type == 'single' && matrix.connect_type == 'tls' && matrix.redis_tag != '5'
|
|
run: |
|
|
set -exu
|
|
cat <<-EOF >> "$GITHUB_ENV"
|
|
EMQX_AUTH__REDIS__TYPE=single
|
|
EMQX_AUTH__REDIS__SERVER=${redis_${{ matrix.network_type }}_address}:6380
|
|
EOF
|
|
- name: setup
|
|
if: matrix.node_type == 'cluster' && matrix.connect_type == 'tcp'
|
|
run: |
|
|
set -exu
|
|
cat <<-EOF >> "$GITHUB_ENV"
|
|
EMQX_AUTH__REDIS__TYPE=cluster
|
|
EMQX_AUTH__REDIS__SERVER=${redis_${{ matrix.network_type }}_address}:7000
|
|
EOF
|
|
- name: setup
|
|
if: matrix.node_type == 'cluster' && matrix.connect_type == 'tls' && matrix.redis_tag != '5'
|
|
run: |
|
|
set -exu
|
|
cat <<-EOF >> "$GITHUB_ENV"
|
|
EMQX_AUTH__REDIS__TYPE=cluster
|
|
EMQX_AUTH__REDIS__SERVER=${redis_${{ matrix.network_type }}_address}:8000
|
|
EOF
|
|
- name: run test cases
|
|
if: matrix.connect_type == 'tcp' || (matrix.connect_type == 'tls' && matrix.redis_tag != '5')
|
|
run: |
|
|
export CUTTLEFISH_ENV_OVERRIDE_PREFIX=EMQX_
|
|
printenv > .env
|
|
docker exec -i erlang sh -c "make ensure-rebar3"
|
|
docker exec -i erlang sh -c "./rebar3 eunit --dir apps/emqx_auth_redis"
|
|
docker exec --env-file .env -i erlang sh -c "./rebar3 ct --dir apps/emqx_auth_redis"
|
|
- uses: actions/upload-artifact@v1
|
|
if: failure()
|
|
with:
|
|
name: logs_redis${{ matrix.redis_tag }}_${{ matrix.node_type }}_${{ matrix.network_type }}_${{ matrix.connect_type }}
|
|
path: _build/test/logs
|