| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 |
- name: Build
- on:
- - push
- - pull_request
- - workflow_dispatch
- jobs:
- Linux:
- runs-on: ubuntu-24.04
- steps:
- - name: Checkout
- uses: actions/checkout@v4
- with:
- fetch-depth: 0 # needed for Nerdbank.GitVersioning
- - name: Setup .NET
- uses: actions/setup-dotnet@v4
- with:
- dotnet-version: 8.0.x
- - name: Build Unit Tests .NET
- run: dotnet build -f net8.0 test/Renci.SshNet.Tests/
- - name: Build IntegrationTests .NET
- run: dotnet build -f net8.0 test/Renci.SshNet.IntegrationTests/
- - name: Build IntegrationTests .NET Framework
- run: dotnet build -f net48 test/Renci.SshNet.IntegrationTests/
- - name: Run Unit Tests .NET
- run: |
- dotnet test \
- -f net8.0 \
- --no-build \
- --logger "console;verbosity=normal" \
- --logger GitHubActions \
- -p:CollectCoverage=true \
- -p:CoverletOutputFormat=cobertura \
- -p:CoverletOutput=../../coverlet/linux_unit_test_net_8_coverage.xml \
- test/Renci.SshNet.Tests/
- - name: Run Integration Tests .NET
- run: |
- dotnet test \
- -f net8.0 \
- --no-build \
- --logger "console;verbosity=normal" \
- --logger GitHubActions \
- -p:CollectCoverage=true \
- -p:CoverletOutputFormat=cobertura \
- -p:CoverletOutput=../../coverlet/linux_integration_test_net_8_coverage.xml \
- test/Renci.SshNet.IntegrationTests/
- # Also run a subset of the integration tests targeting netfx using mono. This is a temporary measure to get
- # some coverage until a proper solution for running the .NET Framework integration tests in CI is found.
- # Running all the tests causes problems which are not worth solving in this rare configuration.
- # See https://github.com/sshnet/SSH.NET/pull/1462 and related links
- - name: Run Integration Tests Mono
- run: |
- sudo apt-get install ca-certificates gnupg
- sudo gpg --homedir /tmp --no-default-keyring --keyring /usr/share/keyrings/mono-official-archive-keyring.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
- echo "deb [signed-by=/usr/share/keyrings/mono-official-archive-keyring.gpg] https://download.mono-project.com/repo/ubuntu stable-focal main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list
- sudo apt-get update
- sudo apt-get install mono-devel
- dotnet test \
- -f net48 \
- --no-build \
- --logger "console;verbosity=normal" \
- --logger GitHubActions \
- -p:CollectCoverage=true \
- -p:CoverletOutputFormat=cobertura \
- -p:CoverletOutput=../../coverlet/linux_integration_test_net_48_coverage.xml \
- --filter "Name~Ecdh|Name~ECDsa|Name~Zlib|Name~Gcm" \
- test/Renci.SshNet.IntegrationTests/
- - name: Archive Coverlet Results
- uses: actions/upload-artifact@v4
- with:
- name: Coverlet Results Linux
- path: coverlet
- Windows:
- runs-on: windows-2022
- steps:
- - name: Checkout
- uses: actions/checkout@v4
- with:
- fetch-depth: 0 # needed for Nerdbank.GitVersioning
- - name: Setup .NET
- uses: actions/setup-dotnet@v4
- with:
- dotnet-version: 9.0.x
- - name: Build Solution
- run: dotnet build Renci.SshNet.sln
- - name: Publish AOT Compatibility Test App
- run: dotnet publish -r win-x64 /warnaserror test/Renci.SshNet.AotCompatibilityTestApp/
- - name: Create NuGet Package
- run: dotnet pack
- - name: Archive NuGet Package
- uses: actions/upload-artifact@v4
- with:
- name: NuGet Package
- path: src/Renci.SshNet/bin/Release/*.*nupkg
- - name: Run Unit Tests .NET
- run: |
- dotnet test `
- -f net8.0 `
- --no-build `
- --logger "console;verbosity=normal" `
- --logger GitHubActions `
- -p:CollectCoverage=true `
- -p:CoverletOutputFormat=cobertura `
- -p:CoverletOutput=../../coverlet/windows_unit_test_net_8_coverage.xml `
- test/Renci.SshNet.Tests/
- - name: Run Unit Tests .NET Framework
- run: |
- dotnet test `
- -f net462 `
- --no-build `
- --logger "console;verbosity=normal" `
- --logger GitHubActions `
- -p:CollectCoverage=true `
- -p:CoverletOutputFormat=cobertura `
- -p:CoverletOutput=../../coverlet/windows_unit_test_net_4_6_2_coverage.xml `
- test/Renci.SshNet.Tests/
- - name: Archive Coverlet Results
- uses: actions/upload-artifact@v4
- with:
- name: Coverlet Results Windows
- path: coverlet
- Publish:
- runs-on: ubuntu-24.04
- if: github.ref == 'refs/heads/develop'
- permissions:
- packages: write
- needs:
- - Windows
- - Linux
- steps:
- - name: Download NuGet Package
- uses: actions/download-artifact@v4
- with:
- name: NuGet Package
- - name: Publish to GitHub NuGet Registry
- run: |
- dotnet nuget add source \
- --username $GITHUB_ACTOR \
- --password ${{ secrets.GITHUB_TOKEN }} \
- --store-password-in-clear-text \
- --name github \
- "https://nuget.pkg.github.com/$GITHUB_REPOSITORY_OWNER/index.json"
- dotnet nuget push "*.nupkg" \
- --source github \
- --api-key ${{ secrets.GITHUB_TOKEN }}
|