Skip to content

Retarget tests to .NET 10 and fix AsyncEnumerable.Take breaking change #1

Retarget tests to .NET 10 and fix AsyncEnumerable.Take breaking change

Retarget tests to .NET 10 and fix AsyncEnumerable.Take breaking change #1

Workflow file for this run

name: MassTransit
env:
MASSTRANSIT_VERSION: 8.5.8
on:
push:
paths:
- 'src/**'
- 'tests/**'
- 'MassTransit.sln'
- 'Directory.Build.props'
- 'Directory.Packages.props'
- '**/build.yml'
branches:
- '**'
pull_request:
paths:
- 'src/**'
- 'tests/**'
- 'MassTransit.sln'
- 'Directory.Build.props'
- 'Directory.Packages.props'
- '**/build.yml'
workflow_dispatch:
jobs:
compile:
name: Build
timeout-minutes: 15
strategy:
max-parallel: 2
matrix:
os: ['ubuntu-latest', 'windows-latest']
runs-on: ${{ matrix.os }}
steps:
- name: Check out code
uses: actions/checkout@v5
- name: Install .NET Core SDK
uses: actions/setup-dotnet@v5
with:
dotnet-version: '10.0.x'
- name: Restore NuGet packages
run: dotnet restore
working-directory: ./
- name: Build
run: dotnet build -c Release --no-restore
working-directory: ./
test-ubuntu:
name: Unit Tests
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: Check out code
uses: actions/checkout@v5
- name: Install .NET Core SDK
uses: actions/setup-dotnet@v5
with:
dotnet-version: '10.0.x'
- name: Unit Tests
run: dotnet test -c Release -f net9.0 --logger GitHubActions --filter Category!=Flaky
working-directory: tests/MassTransit.Tests
- name: Test Abstractions
run: dotnet test -c Release -f net9.0 --logger GitHubActions --filter Category!=Flaky
working-directory: tests/MassTransit.Abstractions.Tests
test-activemq:
name: "Transports: ActiveMQ"
timeout-minutes: 10
runs-on: ubuntu-latest
services:
activemq:
image: masstransit/activemq:latest
ports:
- "61616:61616"
- "8161:8161"
- "5672:5672"
steps:
- name: Check out code
uses: actions/checkout@v5
- name: Install .NET Core SDK
uses: actions/setup-dotnet@v5
with:
dotnet-version: '10.0.x'
- name: Test ActiveMQ
run: dotnet test -c Release --logger GitHubActions --filter Category!=Flaky
working-directory: tests/MassTransit.ActiveMqTransport.Tests
test-sql-transport:
name: "Transport: SQL"
timeout-minutes: 10
runs-on: ubuntu-latest
services:
mssql:
image: mcr.microsoft.com/azure-sql-edge
env:
ACCEPT_EULA: Y
SA_PASSWORD: "Password12!"
ports:
- 1433:1433
postgres:
image: postgres:14.7
env:
POSTGRES_PASSWORD: "Password12!"
ports:
- 5432:5432
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
env:
DOTNET_SYSTEM_GLOBALIZATION_INVARIANT: false
steps:
- name: Check out code
uses: actions/checkout@v5
- name: Install .NET Core SDK
uses: actions/setup-dotnet@v5
with:
dotnet-version: '10.0.x'
- name: Test Database Transport
run: dotnet test -c Release --logger GitHubActions --filter "Category!=Flaky&Category!=Integration"
working-directory: tests/MassTransit.SqlTransport.Tests
test-azure-service-bus:
name: "Transports: Azure Service Bus"
if: false # too flaky at this point
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v5
- name: Install .NET Core SDK
uses: actions/setup-dotnet@v5
with:
dotnet-version: '10.0.x'
- name: Test Azure Service Bus
env:
MT_ASB_KEYVALUE: ${{ secrets.AZURE_SERVICEBUS }}
MT_AZURE_STORAGE_ACCOUNT: ${{ secrets.AZURE_STORAGE }}
run: dotnet test -c Release --logger GitHubActions --filter Category!=Flaky
working-directory: tests/MassTransit.Azure.ServiceBus.Core.Tests
test-rabbitmq:
name: "Transports: RabbitMQ"
timeout-minutes: 10
runs-on: ubuntu-latest
services:
rabbitmq:
image: masstransit/rabbitmq:latest
ports:
- "5672:5672"
- "15672:15672"
options: --health-cmd "rabbitmqctl node_health_check" --health-interval 10s --health-timeout 5s --health-retries 5
steps:
- name: Check out code
uses: actions/checkout@v5
- name: Install .NET Core SDK
uses: actions/setup-dotnet@v5
with:
dotnet-version: '10.0.x'
- name: Test RabbitMQ
run: dotnet test -c Release --logger GitHubActions --filter Category!=Flaky
working-directory: tests/MassTransit.RabbitMqTransport.Tests
test-sqs:
name: "Transports: SQS (+S3)"
timeout-minutes: 10
runs-on: ubuntu-latest
services:
localstack:
image: localstack/localstack:3.0.2
ports:
- "4566:4566"
- "4571:4571"
options: --health-cmd "curl --fail http://localhost:4566/health || exit 1" --health-interval 10s --health-timeout 5s --health-retries 5 --health-start-period 15s
steps:
- name: Check out code
uses: actions/checkout@v5
- name: Install .NET Core SDK
uses: actions/setup-dotnet@v5
with:
dotnet-version: '10.0.x'
- name: Test SQS
run: dotnet test -c Release --logger GitHubActions --filter Category!=Flaky
working-directory: tests/MassTransit.AmazonSqsTransport.Tests
test-azure-table:
name: "Storage: Azure Table"
timeout-minutes: 10
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v5
- name: Install .NET Core SDK
uses: actions/setup-dotnet@v5
with:
dotnet-version: '10.0.x'
- name: Spin up test environment
run: |
docker compose -f docker-compose.yml up -d
working-directory: tests/MassTransit.Azure.Table.Tests
- name: Test Azure Table
env:
MT_AZURE_STORAGE_ACCOUNT: ${{ secrets.AZURE_STORAGE }}
run: dotnet test -c Release --logger GitHubActions --filter "Category!=Flaky&Category!=Integration"
working-directory: tests/MassTransit.Azure.Table.Tests
- name: Stop test environment
run: |
docker compose -f docker-compose.yml down
working-directory: tests/MassTransit.Azure.Table.Tests
test-cosmosdb:
name: "Storage: CosmosDB"
timeout-minutes: 10
runs-on: ubuntu-latest
if: (github.ref == 'refs/heads/master' || github.ref == 'refs/heads/develop') && github.repository == 'MassTransit/MassTransit'
steps:
- name: Check out code
uses: actions/checkout@v5
- name: Install .NET Core SDK
uses: actions/setup-dotnet@v5
with:
dotnet-version: '10.0.x'
- name: Test CosmosDB
env:
MT_COSMOS_ENDPOINT: ${{ secrets.AZURE_COSMOSENDPOINT }}
MT_COSMOS_KEY: ${{ secrets.AZURE_COSMOSKEY }}
run: dotnet test -c Release --logger GitHubActions --filter "Category!=Flaky&Category!=Integration"
working-directory: tests/MassTransit.Azure.Cosmos.Tests
test-dapper:
name: "Storage: Dapper"
timeout-minutes: 10
runs-on: ubuntu-latest
services:
mssql:
image: mcr.microsoft.com/azure-sql-edge
env:
ACCEPT_EULA: Y
SA_PASSWORD: "Password12!"
ports:
- 1433:1433
env:
# otherwise the client barks
DOTNET_SYSTEM_GLOBALIZATION_INVARIANT: false
steps:
- name: Check out code
uses: actions/checkout@v5
- name: Install .NET Core SDK
uses: actions/setup-dotnet@v5
with:
dotnet-version: '10.0.x'
- name: Test Dapper
run: dotnet test -c Release --logger GitHubActions --filter "Category!=Flaky&Category!=Integration"
working-directory: tests/MassTransit.DapperIntegration.Tests
test-entity-framework:
name: "Storage: EntityFramework"
timeout-minutes: 10
runs-on: ubuntu-latest
services:
mssql:
image: mcr.microsoft.com/azure-sql-edge
env:
ACCEPT_EULA: Y
SA_PASSWORD: "Password12!"
ports:
- 1433:1433
postgres:
image: postgres
env:
POSTGRES_PASSWORD: "Password12!"
ports:
- 5432:5432
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
env:
# otherwise the client barks
DOTNET_SYSTEM_GLOBALIZATION_INVARIANT: false
steps:
- name: Check out code
uses: actions/checkout@v5
- name: Install .NET Core SDK
uses: actions/setup-dotnet@v5
with:
dotnet-version: '10.0.x'
- name: Test EntityFrameworkCore
run: dotnet test -c Release --logger GitHubActions --filter "Category!=Flaky&Category!=Integration"
working-directory: tests/MassTransit.EntityFrameworkCoreIntegration.Tests
- name: Test EntityFramework
run: dotnet test -c Release --logger GitHubActions --filter "Category!=Flaky&Category!=Integration"
working-directory: tests/MassTransit.EntityFrameworkIntegration.Tests
test-marten:
name: "Storage: Marten"
timeout-minutes: 10
runs-on: ubuntu-latest
services:
postgres:
image: postgres
env:
POSTGRES_PASSWORD: "Password12!"
ports:
- 5432:5432
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
steps:
- name: Check out code
uses: actions/checkout@v5
- name: Install .NET Core SDK
uses: actions/setup-dotnet@v5
with:
dotnet-version: '10.0.x'
- name: Test Marten
run: dotnet test -c Release --logger GitHubActions --filter Category!=Flaky
working-directory: tests/MassTransit.MartenIntegration.Tests
test-mongo:
name: "Storage: MongoDB"
timeout-minutes: 10
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v5
- name: Install .NET Core SDK
uses: actions/setup-dotnet@v5
with:
dotnet-version: '10.0.x'
- name: Spin up test environment
run: |
docker compose -f docker-compose.yml up -d
working-directory: tests/MassTransit.MongoDbIntegration.Tests
- name: Test MongoDB
run: dotnet test -c Release --logger GitHubActions --filter Category!=Flaky
working-directory: tests/MassTransit.MongoDbIntegration.Tests
- name: Stop test environment
run: |
docker compose -f docker-compose.yml down
working-directory: tests/MassTransit.MongoDbIntegration.Tests
test-nhibernate:
name: "Storage: NHibernate"
timeout-minutes: 10
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v5
- name: Install .NET Core SDK
uses: actions/setup-dotnet@v5
with:
dotnet-version: '10.0.x'
- name: Test NHibernate
run: dotnet test -c Release --logger GitHubActions --filter Category!=Flaky
working-directory: tests/MassTransit.NHibernateIntegration.Tests
test-redis:
name: "Storage: Redis"
timeout-minutes: 10
runs-on: ubuntu-latest
services:
redis:
image: redis
ports:
- '6379:6379'
options: --health-cmd "redis-cli ping" --health-interval 10s --health-timeout 5s --health-retries 5
steps:
- name: Check out code
uses: actions/checkout@v5
- name: Install .NET Core SDK
uses: actions/setup-dotnet@v5
with:
dotnet-version: '10.0.x'
- name: Test Redis
run: dotnet test -c Release --logger GitHubActions --filter Category!=Flaky
working-directory: tests/MassTransit.RedisIntegration.Tests
test-valkey:
name: "Storage: Valkey"
timeout-minutes: 10
runs-on: ubuntu-latest
services:
valkey:
image: valkey/valkey:8
ports:
- '6379:6379'
options: --health-cmd "redis-cli ping" --health-interval 10s --health-timeout 5s --health-retries 5
steps:
- name: Check out code
uses: actions/checkout@v5
- name: Install .NET Core SDK
uses: actions/setup-dotnet@v5
with:
dotnet-version: '10.0.x'
- name: Test Valkey
run: dotnet test -c Release --logger GitHubActions --filter Category!=Flaky
working-directory: tests/MassTransit.RedisIntegration.Tests
test-hangfire:
name: "Scheduler: Hangfire"
timeout-minutes: 10
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v5
- name: Install .NET Core SDK
uses: actions/setup-dotnet@v5
with:
dotnet-version: '10.0.x'
- name: Test Hangfire
run: dotnet test -c Release --logger GitHubActions --filter Category!=Flaky
working-directory: tests/MassTransit.HangfireIntegration.Tests
test-quartz:
name: "Scheduler: Quartz"
timeout-minutes: 10
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v5
- name: Install .NET Core SDK
uses: actions/setup-dotnet@v5
with:
dotnet-version: '10.0.x'
- name: Test Quartz
run: dotnet test -c Release --logger GitHubActions --filter Category!=Flaky
working-directory: tests/MassTransit.QuartzIntegration.Tests
test-eventhub:
name: "Rider: EventHub"
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v5
- name: Install .NET Core SDK
uses: actions/setup-dotnet@v5
with:
dotnet-version: '10.0.x'
- name: Spin up test environment
run: |
docker compose -f docker-compose.yml up -d
working-directory: tests/MassTransit.EventHubIntegration.Tests
- name: Test EventHub
run: dotnet test -c Release --logger GitHubActions --filter Category!=Flaky
env:
MT_EH_NAMESPACE: ${{ secrets.AZURE_EVENTHUB }}
MT_AZURE_STORAGE_ACCOUNT: ${{ secrets.AZURE_STORAGE }}
working-directory: tests/MassTransit.EventHubIntegration.Tests
- name: Stop test environment
run: |
docker compose -f docker-compose.yml down
working-directory: tests/MassTransit.EventHubIntegration.Tests
test-kafka:
name: "Rider: Kafka"
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v5
- name: Install .NET Core SDK
uses: actions/setup-dotnet@v5
with:
dotnet-version: '10.0.x'
- name: Spin up test environment
run: |
docker compose -f docker-compose.yml up -d
working-directory: tests/MassTransit.KafkaIntegration.Tests
- name: Test Kafka
run: dotnet test -c Release --logger GitHubActions --filter Category!=Flaky
working-directory: tests/MassTransit.KafkaIntegration.Tests
- name: Stop test environment
run: |
docker compose -f docker-compose.yml down
working-directory: tests/MassTransit.KafkaIntegration.Tests
test-signalr:
name: SignalR
timeout-minutes: 10
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v5
- name: Install .NET Core SDK
uses: actions/setup-dotnet@v5
with:
dotnet-version: '10.0.x'
- name: Test SignalR
run: dotnet test -c Release --logger GitHubActions --filter Category!=Flaky
working-directory: tests/MassTransit.SignalR.Tests
calc-version:
name: Calculate Version
runs-on: ubuntu-latest
needs:
- compile
- test-ubuntu
- test-activemq
# - test-azure-service-bus
- test-rabbitmq
- test-sqs
- test-sql-transport
- test-azure-table
- test-cosmosdb
- test-dapper
- test-entity-framework
- test-marten
- test-mongo
- test-nhibernate
- test-redis
- test-valkey
- test-hangfire
- test-quartz
# - test-eventhub
- test-kafka
- test-signalr
outputs:
version: ${{ steps.v.outputs.version }}
steps:
- id: v
run: |
if [ "${{ github.ref }}" = 'refs/heads/master' ]; then
echo "version=${MASSTRANSIT_VERSION}" >> $GITHUB_OUTPUT
else
echo "version=${MASSTRANSIT_VERSION}-develop.${{ github.run_number }}" >> $GITHUB_OUTPUT
fi
publish:
name: Build and Publish NuGets
timeout-minutes: 60
runs-on: windows-latest
if: (github.ref == 'refs/heads/master' || github.ref == 'refs/heads/develop') && github.repository == 'MassTransit/MassTransit' && success()
env:
DOTNET_INSTALL_DIR: D:\dotnet
NUGET_PACKAGES: D:\.nuget\packages
needs:
- calc-version
steps:
- name: Version Output Check
run: |
echo "${{ needs.calc-version.outputs.version }}"
- name: Check out code
uses: actions/checkout@v5
- name: Install .NET Core SDK
uses: actions/setup-dotnet@v5
with:
dotnet-version: '10.0.x'
- name: Build and Pack Solution
run: |
dotnet build -c Release -p:Version=${{ needs.calc-version.outputs.version }}
dotnet pack --no-build -c Release -p:PackageVersion=${{ needs.calc-version.outputs.version }} -o ./artifacts
- name: Publish NuGets
working-directory: artifacts
run: |
dotnet nuget push * -s https://api.nuget.org/v3/index.json -k ${{secrets.NUGET_API_KEY}} --skip-duplicate --no-symbols