diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 177591fcc..a56d9bbe0 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -28,7 +28,7 @@ jobs: strategy: fail-fast: false matrix: - dotnet: ['net8.0','net6.0', 'net472', 'net471'] + dotnet: ['net6.0', 'net472', 'net471'] cloud_env: ['AZURE', 'GCP', 'AWS'] steps: - name: Checkout code @@ -36,7 +36,7 @@ jobs: - name: Setup Dotnet uses: actions/setup-dotnet@v3 with: - dotnet-version: '8.0.x' + dotnet-version: '6.0.x' dotnet-quality: 'ga' - name: Setup Python uses: actions/setup-python@v4 @@ -87,14 +87,14 @@ jobs: strategy: fail-fast: false matrix: - dotnet: ['net8.0','net6.0'] + dotnet: ['net6.0'] cloud_env: ['AZURE', 'GCP', 'AWS'] steps: - uses: actions/checkout@v3 - name: Setup Dotnet uses: actions/setup-dotnet@v3 with: - dotnet-version: '8.0.x' + dotnet-version: '6.0.x' dotnet-quality: 'ga' - name: Setup Python uses: actions/setup-python@v4 @@ -144,14 +144,14 @@ jobs: strategy: fail-fast: false matrix: - dotnet: ['net8.0','net6.0'] + dotnet: ['net6.0'] cloud_env: ['AZURE', 'GCP', 'AWS'] steps: - uses: actions/checkout@v3 - name: Setup Dotnet uses: actions/setup-dotnet@v3 with: - dotnet-version: '8.0.x' + dotnet-version: '6.0.x' dotnet-quality: 'ga' - name: Setup Python uses: actions/setup-python@v4 diff --git a/.github/workflows/mainDotNet8.yml b/.github/workflows/mainDotNet8.yml new file mode 100644 index 000000000..df7ff4079 --- /dev/null +++ b/.github/workflows/mainDotNet8.yml @@ -0,0 +1,196 @@ +name: DotNet 8 Build and Test + +# Triggers the workflow on push or pull request events but only for the master branch +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + workflow_dispatch: + inputs: + logLevel: + default: warning + description: "Log level" + required: true + tags: + description: "Test scenario tags" + required: false + +concurrency: + # older builds for the same pull request number or branch should be cancelled + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + +jobs: + test-windows: + name: Tests on Windows + runs-on: windows-latest + strategy: + fail-fast: false + matrix: + dotnet: ['net8.0'] + cloud_env: ['AZURE', 'GCP', 'AWS'] + steps: + - name: Checkout code + uses: actions/checkout@v3 + - name: Setup Dotnet + uses: actions/setup-dotnet@v3 + with: + dotnet-version: '8.0.x' + dotnet-quality: 'ga' + - name: Setup Python + uses: actions/setup-python@v4 + with: + python-version: '3.x' + - name: Setup dotnet-coverage + run: dotnet tool install --global dotnet-coverage --version 17.8.4 + - name: Decrypt Parameters + shell: bash + env: + PARAMETER_SECRET: ${{ secrets.PARAMETER_SECRET }} + run: | + gpg --quiet --batch --yes --decrypt --passphrase="$PARAMETER_SECRET" \ + ./.github/workflows/parameters/parameters_${{ matrix.cloud_env }}.json.gpg > Snowflake.Data.Tests/parameters.json + - name: Build Driver + run: | + cd Snowflake.Data.Tests + dotnet restore + dotnet build -f ${{ matrix.dotnet }} + - name: Run Tests + run: | + cd Snowflake.Data.Tests + dotnet-coverage collect "dotnet test --framework ${{ matrix.dotnet }} --no-build -l console;verbosity=normal" --output windows_${{ matrix.dotnet }}_${{ matrix.cloud_env }}_coverage.xml --output-format cobertura --settings coverage.config + env: + snowflake_cloud_env: ${{ matrix.cloud_env }} + net_version: ${{ matrix.dotnet }} + - name: Upload Code Coverage Report + uses: actions/upload-artifact@v3 + with: + name: code-coverage-report + path: Snowflake.Data.Tests\windows_${{ matrix.dotnet }}_${{ matrix.cloud_env }}_coverage.xml + - name: Upload Test Performance Report + uses: actions/upload-artifact@v3 + with: + name: tests-performance + path: Snowflake.Data.Tests\windows_${{ matrix.dotnet }}_${{ matrix.cloud_env }}_performance.csv + - name: Upload coverage reports to Codecov + uses: codecov/codecov-action@v3 + with: + # without the token code cov may fail because of Github limits https://github.com/codecov/codecov-action/issues/557 + token: ${{ secrets.CODE_COV_UPLOAD_TOKEN }} + fail_ci_if_error: true + files: Snowflake.Data.Tests\windows_${{ matrix.dotnet }}_${{ matrix.cloud_env }}_coverage.xml + + test-linux: + name: Tests on Linux + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + dotnet: ['net8.0'] + cloud_env: ['AZURE', 'GCP', 'AWS'] + steps: + - uses: actions/checkout@v3 + - name: Setup Dotnet + uses: actions/setup-dotnet@v3 + with: + dotnet-version: '8.0.x' + dotnet-quality: 'ga' + - name: Setup Python + uses: actions/setup-python@v4 + with: + python-version: '3.x' + - name: Setup dotnet-coverage + run: dotnet tool install --global dotnet-coverage --version 17.8.4 + - name: Decrypt Parameters + shell: bash + env: + PARAMETER_SECRET: ${{ secrets.PARAMETER_SECRET }} + run: | + gpg --quiet --batch --yes --decrypt --passphrase="$PARAMETER_SECRET" \ + ./.github/workflows/parameters/parameters_${{ matrix.cloud_env }}.json.gpg > Snowflake.Data.Tests/parameters.json + - name: Build Driver + run: | + dotnet restore + dotnet build + - name: Run Tests + run: | + cd Snowflake.Data.Tests + dotnet-coverage collect "dotnet test --framework ${{ matrix.dotnet }} --no-build -l console;verbosity=normal" --output linux_${{ matrix.dotnet }}_${{ matrix.cloud_env }}_coverage.xml --output-format cobertura --settings coverage.config + env: + snowflake_cloud_env: ${{ matrix.cloud_env }} + net_version: ${{ matrix.dotnet }} + - name: Upload Code Coverage Report + uses: actions/upload-artifact@v3 + with: + name: code-coverage-report + path: Snowflake.Data.Tests/linux_${{ matrix.dotnet }}_${{ matrix.cloud_env }}_coverage.xml + - name: Upload Test Performance Report + uses: actions/upload-artifact@v3 + with: + name: tests-performance + path: Snowflake.Data.Tests/linux_${{ matrix.dotnet }}_${{ matrix.cloud_env }}_performance.csv + - name: Upload coverage reports to Codecov + uses: codecov/codecov-action@v3 + with: + # without the token code cov may fail because of Github limits https://github.com/codecov/codecov-action/issues/557 + token: ${{ secrets.CODE_COV_UPLOAD_TOKEN }} + fail_ci_if_error: true + files: Snowflake.Data.Tests/linux_${{ matrix.dotnet }}_${{ matrix.cloud_env }}_coverage.xml + + test-mac: + name: Tests on MAC + runs-on: macos-latest + strategy: + fail-fast: false + matrix: + dotnet: ['net8.0'] + cloud_env: ['AZURE', 'GCP', 'AWS'] + steps: + - uses: actions/checkout@v3 + - name: Setup Dotnet + uses: actions/setup-dotnet@v3 + with: + dotnet-version: '8.0.x' + dotnet-quality: 'ga' + - name: Setup Python + uses: actions/setup-python@v4 + with: + python-version: '3.x' + - name: Setup dotnet-coverage + run: dotnet tool install --global dotnet-coverage --version 17.8.4 + - name: Decrypt Parameters + shell: bash + env: + PARAMETER_SECRET: ${{ secrets.PARAMETER_SECRET }} + run: | + gpg --quiet --batch --yes --decrypt --passphrase="$PARAMETER_SECRET" \ + ./.github/workflows/parameters/parameters_${{ matrix.cloud_env }}.json.gpg > Snowflake.Data.Tests/parameters.json + - name: Build Driver + run: | + dotnet restore + dotnet build + - name: Run Tests + run: | + cd Snowflake.Data.Tests + dotnet-coverage collect "dotnet test --framework ${{ matrix.dotnet }} --no-build -l console;verbosity=normal" --output macos_${{ matrix.dotnet }}_${{ matrix.cloud_env }}_coverage.xml --output-format cobertura --settings coverage.config + env: + snowflake_cloud_env: ${{ matrix.cloud_env }} + net_version: ${{ matrix.dotnet }} + - name: Upload Code Coverage Report + uses: actions/upload-artifact@v3 + with: + name: code-coverage-report + path: Snowflake.Data.Tests/macos_${{ matrix.dotnet }}_${{ matrix.cloud_env }}_coverage.xml + - name: Upload Test Performance Report + uses: actions/upload-artifact@v3 + with: + name: tests-performance + path: Snowflake.Data.Tests/macos_${{ matrix.dotnet }}_${{ matrix.cloud_env }}_performance.csv + - name: Upload coverage reports to Codecov + uses: codecov/codecov-action@v3 + with: + # without the token code cov may fail because of Github limits https://github.com/codecov/codecov-action/issues/557 + token: ${{ secrets.CODE_COV_UPLOAD_TOKEN }} + fail_ci_if_error: true + files: Snowflake.Data.Tests/macos_${{ matrix.dotnet }}_${{ matrix.cloud_env }}_coverage.xml