3.0.0 Release #1315
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: build | |
on: | |
push: | |
branches: ["master", "release/*", "feature/*"] | |
pull_request_target: | |
branches: ["master", "devops/*"] | |
workflow_dispatch: | |
permissions: | |
contents: read | |
id-token: write # needed by dorny/test-reporter | |
checks: write # needed by dorny/test-reporter | |
env: | |
SOLUTION_NAME: SlimMessageBus.sln | |
SOLUTION_CONFIGURATION: Release | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
# allow to run concurrently within separate branches | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
steps: | |
- name: PR - Checkout | |
if: github.event_name == 'pull_request_target' | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
ref: ${{ github.event.pull_request.head.sha }} | |
- name: Checkout | |
if: github.event_name != 'pull_request_target' | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Setup .NET | |
uses: actions/setup-dotnet@v4 | |
with: | |
dotnet-version: 8.0.x | |
cache: false | |
- name: Restore dependencies | |
run: dotnet restore $SOLUTION_NAME | |
working-directory: ./src | |
- name: SonarCloud - Setup Java17 | |
#if: github.event_name == 'pull_request_target' | |
uses: actions/setup-java@v4 | |
with: | |
distribution: "adopt" | |
java-version: "17" | |
- name: SonarCloud - Install SonarCloud scanner | |
#if: github.event_name == 'pull_request_target' | |
run: dotnet tool update dotnet-sonarscanner --tool-path ./.sonar/scanner | |
- name: SonarCloud - SonarScanner Begin | |
#if: github.event_name == 'pull_request_target' | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any | |
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} | |
run: | | |
params="" | |
pr_number="${{ github.event.pull_request.number }}" | |
if [[ -n "$pr_number" ]]; then | |
params="/d:sonar.pullrequest.key=${pr_number}" | |
fi | |
../.sonar/scanner/dotnet-sonarscanner begin /k:"zarusz_SlimMessageBus" /o:"zarusz" /d:sonar.token="${{ secrets.SONAR_TOKEN }}" /d:sonar.host.url="https://sonarcloud.io" /d:sonar.cs.opencover.reportsPaths="**/coverage.opencover.xml" /d:sonar.exclusions="Samples/**/*,Tests/**/*" $params | |
working-directory: ./src | |
- name: Build | |
run: | | |
dotnet build $SOLUTION_NAME \ | |
--configuration $SOLUTION_CONFIGURATION \ | |
--no-restore | |
working-directory: ./src | |
- name: Unit Tests | |
run: | | |
dotnet test $SOLUTION_NAME \ | |
--configuration $SOLUTION_CONFIGURATION \ | |
--no-build \ | |
--verbosity normal \ | |
--logger "trx;LogFilePrefix=Unit" \ | |
--collect:"XPlat Code Coverage;Format=opencover" \ | |
--filter "Category!=Integration" | |
working-directory: ./src | |
- name: Integration Tests - Infrastructure | |
run: | | |
docker compose -f src/Infrastructure/docker-compose.yml up --detach --force-recreate -V | |
- name: Integration Tests | |
run: | | |
dotnet test $SOLUTION_NAME \ | |
--configuration $SOLUTION_CONFIGURATION \ | |
--no-build \ | |
--verbosity normal \ | |
--logger "trx;LogFilePrefix=Integration" \ | |
--collect:"XPlat Code Coverage;Format=opencover" \ | |
--filter "Category=Integration" | |
working-directory: ./src | |
env: | |
# Connects to the Azure cloud | |
azure_servicebus_connectionstring: ${{ secrets.azure_servicebus_connectionstring }} | |
azure_eventhub_connectionstring: ${{ secrets.azure_eventhub_connectionstring }} | |
azure_storagecontainer_connectionstring: ${{ secrets.azure_storagecontainer_connectionstring }} | |
# Connects to AWS cloud | |
amazon_access_key: ${{ secrets.amazon_access_key }} | |
amazon_secret_access_key: ${{ secrets.amazon_secret_access_key }} | |
_kafka_brokers: ${{ secrets.kafka_brokers }} | |
_kafka_username: ${{ secrets.kafka_username }} | |
_kafka_password: ${{ secrets.kafka_password }} | |
_kafka_secure: ${{ secrets.kafka_secure }} | |
_mqtt_server: ${{ secrets.mqtt_server }} | |
_mqtt_port: ${{ secrets.mqtt_port }} | |
_mqtt_username: ${{ secrets.mqtt_username }} | |
_mqtt_password: ${{ secrets.mqtt_password }} | |
_mqtt_secure: ${{ secrets.mqtt_secure }} | |
_rabbitmq_connectionstring: ${{ secrets.rabbitmq_connectionstring }} | |
_redis_connectionstring: ${{ secrets.redis_connectionstring }} | |
sqlserver_connectionstring: ${{ secrets.sqlserver_connectionstring }} | |
# Connects to the local Test Containers | |
kafka_brokers: localhost:9092 | |
kafka_username: user | |
kafka_password: password | |
kafka_secure: false | |
mqtt_server: localhost | |
mqtt_port: 1883 | |
mqtt_username: "(empty)" | |
mqtt_password: "(empty)" | |
mqtt_secure: false | |
rabbitmq_connectionstring: amqp://localhost | |
redis_connectionstring: localhost:6379 | |
_sqlserver_connectionstring: "Server=localhost;Initial Catalog=SlimMessageBus_Outbox;User ID=sa;Password=SuperSecretP@55word;TrustServerCertificate=true;MultipleActiveResultSets=true;" | |
nats_endpoint: "nats://localhost:4222" | |
- name: SonarCloud - SonarScanner End | |
#if: github.event_name == 'pull_request_target' | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any | |
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} | |
run: ../.sonar/scanner/dotnet-sonarscanner end /d:sonar.token="${{ secrets.SONAR_TOKEN }}" | |
working-directory: ./src | |
- name: Collect test results and rename | |
if: success() || failure() | |
run: | | |
mkdir -p ./test-results | |
# Find all the .trx files recursively and copy them to the test-results folder | |
# Use the grandparent directory name and filename | |
find ./src -name "*.trx" | while read file; do | |
# The grand parent will correspond to the csproj name e.g. SlimMessageBus.Host.Tests | |
grandparent_dir=$(basename $(dirname $(dirname "$file"))) | |
filename=$(basename "$file") | |
# Copy the file and use grandparent_dir and index as the new filename | |
cp "$file" "./test-results/${grandparent_dir}_${filename}" | |
done | |
- name: Upload Test Results | |
if: success() || failure() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: test-results | |
path: ./test-results | |
- name: Publish Test Results | |
if: success() || failure() | |
uses: dorny/test-reporter@v1 | |
with: | |
name: .NET Tests | |
path: ./test-results/*.trx | |
reporter: dotnet-trx | |
fail-on-error: true | |
- name: Copy NuGet packages | |
shell: bash | |
run: | | |
mkdir ./dist | |
find -name "*.nupkg" -exec cp {} ./dist \; | |
find -name "*.snupkg" -exec cp {} ./dist \; | |
find ./dist | |
- name: Archive NuGet packages | |
uses: actions/upload-artifact@v4 | |
with: | |
name: nuget-packages | |
path: "./dist" |