| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- 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
- - name: Build Unit Tests .NET
- run: dotnet build -f net9.0 test/Renci.SshNet.Tests/
- - name: Build IntegrationTests .NET
- run: dotnet build -f net9.0 test/Renci.SshNet.IntegrationTests/
- - name: Run Unit Tests .NET
- run: |
- dotnet test \
- -f net9.0 \
- --no-build \
- --logger "console;verbosity=normal" \
- --logger GitHubActions \
- -p:CollectCoverage=true \
- -p:CoverletOutputFormat=cobertura \
- -p:CoverletOutput=../../coverlet/linux_unit_test_net_9_coverage.xml \
- test/Renci.SshNet.Tests/
- - name: Run Integration Tests .NET
- run: |
- dotnet test \
- -f net9.0 \
- --no-build \
- --logger "console;verbosity=normal" \
- --logger GitHubActions \
- -p:CollectCoverage=true \
- -p:CoverletOutputFormat=cobertura \
- -p:CoverletOutput=../../coverlet/linux_integration_test_net_9_coverage.xml \
- test/Renci.SshNet.IntegrationTests/
- - name: Archive Coverlet Results
- uses: actions/upload-artifact@v4
- with:
- name: Coverlet Results Linux
- path: coverlet
- Windows:
- runs-on: windows-2025
- steps:
- - name: Checkout
- uses: actions/checkout@v4
- with:
- fetch-depth: 0 # needed for Nerdbank.GitVersioning
- - name: Setup .NET
- uses: actions/setup-dotnet@v4
- - 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 net9.0 `
- --no-build `
- --logger "console;verbosity=normal" `
- --logger GitHubActions `
- -p:CollectCoverage=true `
- -p:CoverletOutputFormat=cobertura `
- -p:CoverletOutput=../../coverlet/windows_unit_test_net_9_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/
- Windows-Integration-Tests:
- name: Windows Integration Tests
- runs-on: windows-2025
- steps:
- - name: Checkout
- uses: actions/checkout@v4
- with:
- fetch-depth: 0 # needed for Nerdbank.GitVersioning
- - name: Setup .NET
- uses: actions/setup-dotnet@v4
- - name: Setup WSL2
- uses: Vampire/setup-wsl@3b46b44374d5d0ae94654c45d114a3ed7a0e07a8 # v5.0.1
- with:
- distribution: Ubuntu-24.04
- - name: Setup SSH Server
- shell: wsl-bash {0}
- run: |
- apt-get update && apt-get upgrade -y
- apt-get install -y podman
- podman build -t renci-ssh-tests-server-image -f test/Renci.SshNet.IntegrationTests/Dockerfile test/Renci.SshNet.IntegrationTests/
- podman run --rm -h renci-ssh-tests-server -d -p 2222:22 renci-ssh-tests-server-image
- - name: Run Integration Tests .NET Framework
- run:
- dotnet test `
- -f net48 `
- --logger "console;verbosity=normal" `
- --logger GitHubActions `
- -p:CollectCoverage=true `
- -p:CoverletOutputFormat=cobertura `
- -p:CoverletOutput=..\..\coverlet\windows_integration_test_net_4_8_coverage.xml `
- test\Renci.SshNet.IntegrationTests\
- - 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 }}
|