Skip to content

Updating latest ra.exe + wiring up RADownloader #174

Updating latest ra.exe + wiring up RADownloader

Updating latest ra.exe + wiring up RADownloader #174

Workflow file for this run

# yaml-language-server: $schema=https://json.schemastore.org/github-workflow.json
name: cdp
on:
push:
branches: [master]
pull_request:
branches: [master]
types: [opened, synchronize, reopened]
workflow_dispatch:
branches: [master]
env:
VsixFileName: RustAnalyzer.vsix
SolutionPath: src\RustAnalyzer.sln
VsixManifestPath: src\RustAnalyzer\source.extension.vsixmanifest
VsixManifestSourcePath: src\RustAnalyzer\source.extension.cs
TestAdapterNameNoExt: KS.RustAnalyzer.TestAdapter
RUSTANALYZER_TELEMETRY_DISABLED: 1
jobs:
build-test-deploy:
outputs:
version: ${{ steps.vsix_version.outputs.version-number }}
name: Build, Test & Deploy
runs-on: windows-2022
env:
Configuration: Release
DeployExtension: False
OutDir: \_built\
steps:
- uses: actions/checkout@v2
- name: Setup .NET build dependencies
uses: timheuer/bootstrap-dotnet@v1
with:
nuget: 'false'
sdk: 'false'
msbuild: 'true'
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: nightly
target: x86_64-pc-windows-msvc
default: true
components: rustfmt, clippy
- name: Increment VSIX version
id: vsix_version
uses: timheuer/vsix-version-stamp@v1
with:
manifest-file: ${{ env.VsixManifestPath }}
vsix-token-source-file: ${{ env.VsixManifestSourcePath }}
- name: Build
run: msbuild $env:SolutionPath /m /t:rebuild /restore /p:OutDir=$env:OutDir
- name: Zip TestAdapter
run: |
$files = @("${env:OutDir}${env:TestAdapterNameNoExt}.dll", "${env:OutDir}${env:TestAdapterNameNoExt}.pdb", "${env:OutDir}Microsoft.ApplicationInsights.dll", "${env:OutDir}Microsoft.ApplicationInsights.pdb", "${env:OutDir}Ensure.That.dll")
$dst = "${env:OutDir}${env:TestAdapterNameNoExt}.zip"
Compress-Archive -Path $files -DestinationPath $dst
# List contents for debugging purposes
Add-Type -assembly "system.io.compression.filesystem"
echo "listing files in zip..."
[io.compression.zipfile]::OpenRead($dst).Entries.Name | % { "- $_"}
shell: pwsh
- name: Test
uses: microsoft/[email protected]
with:
testAssembly: '*.UnitTests.dll'
searchFolder: '${{ env.OutDir }}'
runInParallel: true
resultLogsArtifactName: unit-tests-results-log
- name: Generate test report
uses: dorny/test-reporter@v1
with:
name: Tests Results
path: TestResults/*.trx
reporter: dotnet-trx
fail-on-error: true
- name: Upload VSIX
uses: actions/upload-artifact@v3
with:
name: ${{ github.event.repository.name }}.zip
path: ${{ env.OutDir }}${{ env.VsixFileName }}
if-no-files-found: error
- name: Upload TestAdapter
uses: actions/upload-artifact@v3
with:
name: ${{ env.TestAdapterNameNoExt }}.zip
path: ${{ env.OutDir }}${{ env.TestAdapterNameNoExt }}.zip
if-no-files-found: warn
run-integration-tests:
name: Integration tests
needs: build-test-deploy
runs-on: windows-2022
env:
TestAdapterLocation: \testadapter
steps:
- uses: actions/checkout@v2
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: nightly
target: x86_64-pc-windows-msvc
default: true
components: rustfmt, clippy
- uses: darenm/[email protected]
- name: Download TestAdapter
id: itdownloadta
uses: actions/download-artifact@v3
with:
name: ${{ env.TestAdapterNameNoExt }}.zip
- name: Prepare for integration tests
run: |
$adapterPathNoExt = "${env:itdownloadta}\${env:TestAdapterNameNoExt}"
mkdir $env:TestAdapterLocation
Expand-Archive "${env:itdownloadta}\${env:TestAdapterNameNoExt}.zip" -DestinationPath $env:TestAdapterLocation
shell: pwsh
env:
itdownloadta: ${{ steps.itdownloadta.outputs.download-path }}
- name: Run integration tests
run: |
.\src\TestProjects\run-integrationtests.ps1 .\src\TestProjects\workspace_with_tests $env:TestAdapterLocation
shell: pwsh
publish:
name: Publish
if: ${{ github.event_name == 'push' || github.event_name == 'workflow_dispatch' }}
needs: [build-test-deploy, run-integration-tests]
runs-on: windows-2022
steps:
- uses: actions/checkout@v2
- name: Download VSIX
id: downloadvx
uses: actions/download-artifact@v3
with:
name: ${{ github.event.repository.name }}.zip
- name: Download TestAdapter
id: downloadta
uses: actions/download-artifact@v3
with:
name: ${{ env.TestAdapterNameNoExt }}.zip
- name: Upload to Open VSIX
uses: timheuer/openvsixpublish@v1
with:
vsix-file: '${{ steps.downloadvx.outputs.download-path }}\\${{ env.VsixFileName }}'
- name: Tag and Release
if: ${{ github.event_name == 'workflow_dispatch' || contains(github.event.head_commit.message, '[release]') }}
id: tag_release
uses: softprops/[email protected]
with:
generate_release_notes: true
tag_name: ${{ needs.build-test-deploy.outputs.version }}
name: Release ${{ needs.build-test-deploy.outputs.version }}
files: |
'${{ steps.downloadvx.outputs.download-path }}\\${{ env.VsixFileName }}'
'${{ steps.downloadta.outputs.download-path }}\\${{ env.TestAdapterNameNoExt }}.zip'
- name: Publish extension to Marketplace
if: ${{ github.event_name == 'workflow_dispatch' || contains(github.event.head_commit.message, '[release]') }}
uses: cezarypiatek/[email protected]
with:
extension-file: '${{ steps.downloadvx.outputs.download-path }}\\${{ env.VsixFileName }}'
publish-manifest-file: 'vs-publish.json'
personal-access-code: ${{ secrets.VS_PUBLISHER_ACCESS_TOKEN }}