/
vshmidt
/
masstransit
Обзор
Документация
Войти
/
vshmidt
/
masstransit
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
.github/workflows/build.yml
589 строк
17 KB
Chris Patterson
Incremented version to v8.5.10
14 апр 2026, 00:09
14 апр 2026, 00:09
3559057
Код
Авторство
О чём код?
name: MassTransit env: MASSTRANSIT_VERSION: 8.5.10 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