feat: Move addr to %HOME%, and remove filesystem virtualization exception #2177
Workflow file for this run
This file contains 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: QA | |
on: | |
pull_request: | |
push: | |
branches: [main] | |
workflow_dispatch: | |
concurrency: | |
group: QA-${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
jobs: | |
quality-go: | |
name: "Go Quality checks" | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu, windows] | |
subproject: [ | |
"agentapi", | |
"contractsapi", | |
"mocks", | |
"storeapi/go-wrapper/microsoftstore", | |
"windows-agent", | |
"wsl-pro-service", | |
"end-to-end", | |
"common", | |
] | |
exclude: | |
- os: windows | |
subproject: wsl-pro-service | |
- os: ubuntu | |
subproject: end-to-end | |
include: | |
- subproject: agentapi | |
needs-flutter: true | |
runs-on: ${{ matrix.os }}-latest | |
steps: | |
- name: Set up git | |
# This step needs to be done before checkout so that the checkout respects clrf | |
uses: canonical/ubuntu-pro-for-windows/.github/actions/setup-git@main | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Check out repository | |
uses: actions/checkout@v4 | |
- name: Load flutter version | |
if: matrix.needs-flutter != '' | |
id: load | |
uses: ./.github/actions/load-json | |
with: | |
path: tools/versions.json | |
- name: Set up flutter | |
uses: subosito/flutter-action@v2 | |
if: matrix.needs-flutter != '' | |
with: | |
channel: 'stable' | |
flutter-version: ${{ steps.load.outputs.data.flutter-version }} | |
- name: Install Dart protoc plugin | |
if: matrix.needs-flutter != '' | |
shell: bash | |
working-directory: ${{ matrix.subproject }} | |
run: | | |
dart pub global activate protoc_plugin | |
- name: Quality check | |
uses: canonical/desktop-engineering/gh-actions/go/code-sanity@main | |
with: | |
working-directory: ${{ matrix.subproject }} | |
go-tags: gowslmock | |
tools-directory: ${{ github.workspace }}/tools | |
golangci-lint-configfile: ${{ github.workspace }}/.golangci.yaml | |
- name: Gettext validation | |
shell: bash | |
working-directory: ${{ matrix.subproject }} | |
run: | | |
set -eu | |
tmp=`mktemp` | |
grep -nr --include="*.go" 'i18n.G([^"]' ./* | grep -Pv '_test.go:' > "${tmp}/log" || true | |
[ -z "$(cat "${tmp}/log")" ] && exit 0 | |
echo 'Bad i18n.G calls. Gettext will only detect calls of type G("text"), with double quotes.' | |
cat "${tmp}/log" | |
exit 1 | |
quality-flutter: | |
name: "Flutter Quality checks" | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu, windows] | |
package: ["p4w_ms_store", "ubuntupro"] | |
runs-on: ${{ matrix.os }}-latest | |
steps: | |
- name: Set up git | |
# This step needs to be done before checkout so that the checkout respects clrf | |
uses: canonical/ubuntu-pro-for-windows/.github/actions/setup-git@main | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Ensure dependencies on Ubuntu | |
if: ${{ matrix.os == 'ubuntu' }} | |
run: | | |
sudo DEBIAN_FRONTEND=noninteractive apt update | |
sudo DEBIAN_FRONTEND=noninteractive apt install -y clang cmake ninja-build pkg-config libgtk-3-dev liblzma-dev unzip xvfb | |
- name: Check out repository | |
uses: actions/checkout@v4 | |
- name: Set up Go | |
# We need to set up Go so that the agent can be built for the end-to-end tests | |
if: matrix.package == 'ubuntupro' | |
uses: actions/setup-go@v4 | |
with: | |
go-version-file: windows-agent/go.mod | |
- name: Load flutter version | |
id: load | |
uses: ./.github/actions/load-json | |
with: | |
path: tools/versions.json | |
- name: Flutter QA | |
uses: ./.github/actions/flutter-qa/ | |
with: | |
flutter-version: ${{ steps.load.outputs.data.flutter-version }} | |
package-dir: gui/packages/${{ matrix.package }} | |
run-build-runner: ${{ matrix.package == 'ubuntupro' }} | |
- name: Ensure module files are up to date | |
uses: canonical/desktop-engineering/gh-actions/common/has-diff@main | |
with: | |
working-directory: gui/packages/${{ matrix.package }} | |
paths-to-ignore: ${{ matrix.package == 'ubuntupro' && 'pubspec.lock' || '' }} | |
fail-on-diff: true | |
flutter-integration: | |
name: "Flutter integration tests" | |
strategy: | |
fail-fast: false | |
# For now we don't have a way to run integration test on ubuntu. | |
# It looks silly to keep this matrix, but we'll be able to run this on Linux eventually and there are gotchas already solved here | |
# such as the dependency on xvfb since ubuntu runners on GH don't have graphical capabilities. | |
matrix: | |
os: [windows] | |
runs-on: ${{ matrix.os }}-latest | |
steps: | |
- name: Set up git | |
# This step needs to be done before checkout so that the checkout respects clrf | |
uses: canonical/ubuntu-pro-for-windows/.github/actions/setup-git@main | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Ensure dependencies on Ubuntu | |
if: ${{ matrix.os == 'ubuntu' }} | |
run: | | |
sudo DEBIAN_FRONTEND=noninteractive apt update | |
sudo DEBIAN_FRONTEND=noninteractive apt install -y clang cmake ninja-build pkg-config libgtk-3-dev liblzma-dev unzip xvfb | |
- name: Check out repository | |
uses: actions/checkout@v4 | |
- name: Load flutter version | |
id: load | |
uses: ./.github/actions/load-json | |
with: | |
path: tools/versions.json | |
- name: Flutter QA | |
uses: ./.github/actions/flutter-integration-test/ | |
with: | |
flutter-version: ${{ steps.load.outputs.data.flutter-version }} | |
go-version-file: windows-agent/go.mod | |
# Only the app entry point is expected to have integration tests | |
package-dir: 'gui/packages/ubuntupro' | |
quality-cpp: | |
name: "C++ Quality Checks" | |
runs-on: windows-latest | |
steps: | |
- name: Set up git | |
uses: canonical/ubuntu-pro-for-windows/.github/actions/setup-git@main | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Check out repository | |
uses: actions/checkout@v4 | |
- name: C++ QA | |
uses: ./.github/actions/cpp-qa/ | |
with: | |
subproject-dir: 'storeapi/test' | |
tests-go-with-mocks: | |
name: "Run Go tests with mocks" | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu, windows] | |
subproject: ["storeapi/go-wrapper/microsoftstore", "windows-agent", "wsl-pro-service", "common"] | |
exclude: | |
- os: windows | |
subproject: wsl-pro-service | |
# Excluded because common/i18n depends on gettext | |
- os: ubuntu | |
subproject: "common" | |
# Excluded because microsoftstore_test needs msbuild | |
- os: ubuntu | |
subproject: "storeapi/go-wrapper/microsoftstore" | |
runs-on: ${{ matrix.os }}-latest | |
steps: | |
- name: Check out repository | |
uses: actions/checkout@v4 | |
- name: Set up Go | |
uses: actions/setup-go@v4 | |
with: | |
go-version-file: ${{ matrix.subproject }}/go.mod | |
- name: Set up git | |
uses: ./.github/actions/setup-git | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
# The Windows Store needs to be built. The tests do it automatically, but they need | |
# msbuild in the path. | |
- name: Set up MSBuild | |
uses: microsoft/setup-msbuild@v1 | |
if: matrix.subproject == 'storeapi/go-wrapper/microsoftstore' | |
- name: Run tests | |
shell: bash | |
if: always() && !cancelled() | |
working-directory: ${{ matrix.subproject }} | |
run: | | |
go test -shuffle=on -coverpkg=./... -coverprofile=/tmp/coverage.out -covermode=count ./... -tags=gowslmock | |
- name: Run tests (with race detector) | |
shell: bash | |
# -race not supported on Windows | |
if: matrix.os != 'windows' | |
working-directory: ${{ matrix.subproject }} | |
run: | | |
go test -shuffle=on ./... -race -tags=gowslmock | |
#- name: Upload coverage to Codecov | |
# uses: codecov/codecov-action@v3 | |
# with: | |
# file: /tmp/coverage.out |