Skip to content

Run End-To-End tests in our CI #35

Run End-To-End tests in our CI

Run End-To-End tests in our CI #35

Workflow file for this run

name: QA on Azure
# QA checks on Azure, allowing the use of a real WSL back-en
concurrency: azure-vm
on:
pull_request:
workflow_dispatch:
push:
branches: [main]
env:
az_name: wsl-ci-3
az_resource_group: wsl
jobs:
vm-setup:
name: Set up Azure VM
runs-on: ubuntu-latest
steps:
- name: Azure login
uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_VM_CREDS }}
- name: Start the Runner
shell: bash
run: |
az vm start --name ${{ env.az_name }} --resource-group ${{ env.az_resource_group }}
qa:
name: Run end-to-end tests on the Azure VM
runs-on: [self-hosted, Windows]
needs: vm-setup
steps:
- name: Set up git
uses: canonical/ubuntu-pro-for-windows/.github/actions/setup-git@main
with:
token: ${{ secrets.GITHUB_TOKEN }}
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Ubuntu
uses: Ubuntu/WSL/.github/actions/wsl-install@main
with:
distro: "Ubuntu"
- name: Set up Ubuntu-Preview
uses: Ubuntu/WSL/.github/actions/wsl-install@main
with:
distro: "Ubuntu-Preview"
- name: Set up Go
uses: actions/setup-go@v4
with:
go-version-file: "go.work"
- name: Set up Flutter
uses: subosito/flutter-action@v2
with:
channel: 'stable'
flutter-version: '3.13.x'
- name: Set up MSBuild
uses: microsoft/[email protected]
- name: Set up the certfificate
shell: powershell
run: |
New-Item -ItemType directory -Path certificate
Set-Content -Path certificate\certificate.txt -Value '${{ secrets.CERTIFICATE }}'
certutil -decode certificate\certificate.txt certificate\certificate.pfx
$pwd = ConvertTo-SecureString '${{ secrets.CERTIFICATE_PASSWORD }}' -AsPlainText -Force
Import-PfxCertificate -Password $pwd -CertStoreLocation Cert:LocalMachine\Trust -FilePath certificate\certificate.pfx
Import-PfxCertificate -Password $pwd -CertStoreLocation Cert:CurrentUser\My -FilePath certificate\certificate.pfx
- name: Build Appx
shell: powershell
run: |
New-Item -ItemType Directory "ci-build/windows-agent"
Get-AppxPackage -Name "CanonicalGroupLimited.UbuntuProForWindows" | Remove-AppxPackage
.\tools\build\build-appx.ps1 -OutputDir "ci-build/windows-agent" -SkipInstall
- name: Point WSL-Pro-Service to current branch
uses: ./.github/actions/update-workspace-dependencies
with:
module: ubuntu-pro-for-windows
target_ref: ${{ github.ref_name }}
- name: Build WSL-Pro-Service
shell: powershell
run: |
Copy-Item -Path "${HOME}/.gitconfig" -Destination "\\wsl$\Ubuntu-Preview\etc\gitconfig"
New-Item -ItemType Directory "ci-build/wsl-pro-service"
.\tools\build\build-deb.ps1 -OutputDir "ci-build/wsl-pro-service"
- name: Test
shell: powershell
env:
GIT_TERMINAL_PROMPT: "0"
UP4W_TEST_OVERRIDE_DESTRUCTIVE_CHECKS: "1"
UP4W_TEST_BUILD_PATH: "ci-build"
UP4W_TEST_PRO_TOKEN: "${{ secrets.UBUNTU_PRO_TOKEN }}"
run: |
go env -w "GOPRIVATE=github.com/${{ github.repository }}"
go test .\end-to-end -shuffle=on -timeout 20m
if ( "$LastExitCode" -ne "0" ) { Exit(1) }
- name: Clean up
if: always()
shell: powershell
run: |
# Clean up artifacts
# For some reason, this file interferes with setup-go
Remove-Item -Recurse -Path 'C:\actions-runner\_work\_tool\go' -ErrorAction Ignore
# Remove .gitconfig so that the github URL overrides do not stack
Remove-Item -Recurse -Path "${HOME}\.gitconfig" -ErrorAction Ignore
# Uninstall Appx
Get-AppxPackage -Name "CanonicalGroupLimited.UbuntuProForWindows" | Remove-AppxPackage -ErrorAction Ignore
stop-vm:
name: Clean up the Azure VM
runs-on: ubuntu-latest
needs: [vm-setup, qa]
if: always()
steps:
- name: Azure login
uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_VM_CREDS }}
- name: Deallocate the Runner
shell: bash
run: |
az vm deallocate --name ${{ env.az_name }} --resource-group ${{ env.az_resource_group }}