Integration Tests #101
This file contains hidden or 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: Integration Tests | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| pr_number: | |
| type: number | |
| required: true | |
| sha: | |
| type: string | |
| required: true | |
| permissions: | |
| contents: read | |
| checks: write | |
| pull-requests: write | |
| jobs: | |
| build-for-e2e-test: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| target-os: [windows-latest, ubuntu-latest, macos-latest] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| ref: 'refs/pull/${{ github.event.inputs.pr_number }}/merge' | |
| fetch-depth: 0 | |
| - name: Check SHA | |
| run: | | |
| git fetch origin refs/pull/${{ github.event.inputs.pr_number }}/head:pr-head | |
| prsha=`git rev-parse pr-head | awk '{ print $1 }'` | |
| echo "PR SHA: $prsha" | |
| echo "expected SHA: ${{ github.event.inputs.SHA }}" | |
| if [ "$prsha" != "${{ github.event.inputs.SHA }}" ]; then | |
| echo "SHA must match" >&2 | |
| exit 1 | |
| fi | |
| - name: Setup .NET | |
| uses: actions/setup-dotnet@v2 | |
| with: | |
| global-json-file: global.json | |
| - name: Build Artifacts (Linux) | |
| if: matrix.target-os == 'ubuntu-latest' | |
| run: ./publish.ps1 | |
| shell: pwsh | |
| env: | |
| SKIP_WINDOWS: "true" | |
| SKIP_MACOS: "true" | |
| - name: Build Artifacts (Windows) | |
| if: matrix.target-os == 'windows-latest' | |
| run: ./publish.ps1 | |
| shell: pwsh | |
| env: | |
| SKIP_LINUX: "true" | |
| SKIP_MACOS: "true" | |
| - name: Build Artifacts (MacOS) | |
| if: matrix.target-os == 'macos-latest' | |
| run: ./publish.ps1 | |
| shell: pwsh | |
| env: | |
| SKIP_WINDOWS: "true" | |
| SKIP_LINUX: "true" | |
| - name: Upload Binaries | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: binaries-${{ matrix.target-os }} | |
| path: | | |
| dist/linux-x64/ado2gh-linux-amd64 | |
| dist/linux-x64/bbs2gh-linux-amd64 | |
| dist/linux-x64/gei-linux-amd64 | |
| dist/osx-x64/ado2gh-darwin-amd64 | |
| dist/osx-x64/bbs2gh-darwin-amd64 | |
| dist/osx-x64/gei-darwin-amd64 | |
| dist/win-x64/ado2gh-windows-amd64.exe | |
| dist/win-x64/bbs2gh-windows-amd64.exe | |
| dist/win-x64/gei-windows-amd64.exe | |
| e2e-test: | |
| needs: [ build-for-e2e-test ] | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| runner-os: [windows-latest, ubuntu-latest, macos-latest] | |
| source-vcs: [AdoBasic, AdoCsv, Bbs, Ghes, Github] | |
| runs-on: ${{ matrix.runner-os }} | |
| concurrency: integration-test-${{ matrix.source-vcs }}-${{ matrix.runner-os }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| ref: 'refs/pull/${{ github.event.inputs.pr_number }}/merge' | |
| fetch-depth: 0 | |
| - name: Get PR Commit | |
| if: always() && matrix.runner-os == 'ubuntu-latest' | |
| run: | | |
| prsha=`git ls-remote origin refs/pull/${{ github.event.inputs.pr_number }}/head | awk '{ print $1 }'` | |
| echo "SHA: $prsha" | |
| echo "PR_SHA=$(echo $prsha)" >> $GITHUB_ENV | |
| - name: Setup .NET | |
| uses: actions/setup-dotnet@v2 | |
| with: | |
| global-json-file: global.json | |
| - name: Download Binaries | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: binaries-${{ matrix.runner-os }} | |
| path: dist | |
| - name: Copy binary to root (linux) | |
| if: matrix.runner-os == 'ubuntu-latest' | |
| run: | | |
| New-Item -Path "./" -Name "gh-gei" -ItemType "directory" | |
| New-Item -Path "./" -Name "gh-ado2gh" -ItemType "directory" | |
| New-Item -Path "./" -Name "gh-bbs2gh" -ItemType "directory" | |
| Copy-Item ./dist/linux-x64/gei-linux-amd64 ./gh-gei/gh-gei | |
| Copy-Item ./dist/linux-x64/ado2gh-linux-amd64 ./gh-ado2gh/gh-ado2gh | |
| Copy-Item ./dist/linux-x64/bbs2gh-linux-amd64 ./gh-bbs2gh/gh-bbs2gh | |
| shell: pwsh | |
| - name: Copy binary to root (windows) | |
| if: matrix.runner-os == 'windows-latest' | |
| run: | | |
| New-Item -Path "./" -Name "gh-gei" -ItemType "directory" | |
| New-Item -Path "./" -Name "gh-ado2gh" -ItemType "directory" | |
| New-Item -Path "./" -Name "gh-bbs2gh" -ItemType "directory" | |
| Copy-Item ./dist/win-x64/gei-windows-amd64.exe ./gh-gei/gh-gei.exe | |
| Copy-Item ./dist/win-x64/ado2gh-windows-amd64.exe ./gh-ado2gh/gh-ado2gh.exe | |
| Copy-Item ./dist/win-x64/bbs2gh-windows-amd64.exe ./gh-bbs2gh/gh-bbs2gh.exe | |
| shell: pwsh | |
| - name: Copy binary to root (macos) | |
| if: matrix.runner-os == 'macos-latest' | |
| run: | | |
| New-Item -Path "./" -Name "gh-gei" -ItemType "directory" | |
| New-Item -Path "./" -Name "gh-ado2gh" -ItemType "directory" | |
| New-Item -Path "./" -Name "gh-bbs2gh" -ItemType "directory" | |
| Copy-Item ./dist/osx-x64/gei-darwin-amd64 ./gh-gei/gh-gei | |
| Copy-Item ./dist/osx-x64/ado2gh-darwin-amd64 ./gh-ado2gh/gh-ado2gh | |
| Copy-Item ./dist/osx-x64/bbs2gh-darwin-amd64 ./gh-bbs2gh/gh-bbs2gh | |
| shell: pwsh | |
| - name: Set execute permissions | |
| run: | | |
| chmod +x ./gh-gei/gh-gei | |
| chmod +x ./gh-ado2gh/gh-ado2gh | |
| chmod +x ./gh-bbs2gh/gh-bbs2gh | |
| - name: Install gh-gei extension | |
| run: gh extension install . | |
| shell: pwsh | |
| working-directory: ./gh-gei | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Install gh-ado2gh extension | |
| run: gh extension install . | |
| shell: pwsh | |
| working-directory: ./gh-ado2gh | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Install gh-bbs2gh extension | |
| run: gh extension install . | |
| shell: pwsh | |
| working-directory: ./gh-bbs2gh | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Integration Test | |
| env: | |
| ADO_PAT: ${{ secrets.ADO_PAT }} | |
| GHEC_PAT: ${{ secrets.GHEC_PAT }} | |
| GHES_PAT: ${{ secrets.GHES_PAT }} | |
| ADO_SERVER_PAT: ${{ secrets.ADO_SERVER_PAT }} | |
| BBS_USERNAME: ${{ secrets.BBS_USERNAME }} | |
| BBS_PASSWORD: ${{ secrets.BBS_PASSWORD }} | |
| SSH_KEY_BBS_8_5_0: ${{ secrets.SSH_KEY_BBS_8_5_0 }} | |
| SSH_KEY_BBS_5_14_0: ${{ secrets.SSH_KEY_BBS_5_14_0 }} | |
| SMB_PASSWORD: ${{ secrets.SMB_PASSWORD }} | |
| AZURE_STORAGE_CONNECTION_STRING_BBS_LINUX: ${{ secrets.AZURE_STORAGE_CONNECTION_STRING_BBS_LINUX }} | |
| AZURE_STORAGE_CONNECTION_STRING_BBS_MACOS: ${{ secrets.AZURE_STORAGE_CONNECTION_STRING_BBS_MACOS }} | |
| AZURE_STORAGE_CONNECTION_STRING_BBS_WINDOWS: ${{ secrets.AZURE_STORAGE_CONNECTION_STRING_BBS_WINDOWS }} | |
| AZURE_STORAGE_CONNECTION_STRING_GHES_LINUX: ${{ secrets.AZURE_STORAGE_CONNECTION_STRING_GHES_LINUX }} | |
| AZURE_STORAGE_CONNECTION_STRING_GHES_MACOS: ${{ secrets.AZURE_STORAGE_CONNECTION_STRING_GHES_MACOS }} | |
| AZURE_STORAGE_CONNECTION_STRING_GHES_WINDOWS: ${{ secrets.AZURE_STORAGE_CONNECTION_STRING_GHES_WINDOWS }} | |
| AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
| AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
| AWS_BUCKET_NAME: ${{ secrets.AWS_BUCKET_NAME }} | |
| GEI_DEBUG_MODE: 'true' | |
| LD_LIBRARY_PATH: '$LD_LIBRARY_PATH:${{ github.workspace }}/src/OctoshiftCLI.IntegrationTests/bin/Debug/net8.0/runtimes/ubuntu.18.04-x64/native' | |
| run: dotnet test src/OctoshiftCLI.IntegrationTests/OctoshiftCLI.IntegrationTests.csproj --filter "${{ matrix.source-vcs }}ToGithub" --logger:"junit;LogFilePath=integration-tests.xml" --logger "console;verbosity=normal" /p:VersionPrefix=9.9 | |
| - name: Publish Integration Test Results | |
| uses: EnricoMi/publish-unit-test-result-action@v2 | |
| if: always() && matrix.runner-os == 'ubuntu-latest' | |
| with: | |
| files: "**/*-tests.xml" | |
| check_name: "Integration Test Results - ${{ matrix.source-vcs }}" | |
| comment_mode: off | |
| commit: ${{ env.PR_SHA }} | |
| - name: Upload test logs | |
| uses: actions/upload-artifact@v4 | |
| if: always() | |
| with: | |
| name: integration-test-logs-${{ matrix.source-vcs }}-${{ matrix.runner-os }} | |
| path: dist/**/*.log | |
| - name: Test Logs | |
| if: always() | |
| run: Get-ChildItem . -Filter *.octoshift.log -Recurse | ForEach-Object { Get-Content -Path $_.FullName } | |
| working-directory: ./dist | |
| shell: pwsh | |
| - name: Test Logs (Verbose) | |
| if: always() | |
| run: Get-ChildItem . -Filter *.octoshift.verbose.log -Recurse | ForEach-Object { Get-Content -Path $_.FullName } | |
| working-directory: ./dist | |
| shell: pwsh |