mirror of
https://github.com/wailsapp/wails.git
synced 2026-03-14 14:45:49 +01:00
This cleanup commit resolves the issue where the branch was accidentally based on master instead of v3-alpha. It removes all master-specific files, restores any v3-alpha files to their correct state, and ensures only the 3 intended bugfix changes differ from v3-alpha: - v3/pkg/application/webview_window_windows.go - v3/pkg/w32/constants.go - v3/pkg/w32/user32.go
315 lines
No EOL
9.4 KiB
YAML
315 lines
No EOL
9.4 KiB
YAML
name: Build + Test v3
|
|
|
|
on:
|
|
pull_request:
|
|
types: [opened, synchronize, reopened, ready_for_review]
|
|
branches:
|
|
- v3-alpha
|
|
pull_request_review:
|
|
types: [submitted]
|
|
branches:
|
|
- v3-alpha
|
|
|
|
jobs:
|
|
check_approval:
|
|
name: Check PR Approval
|
|
runs-on: ubuntu-latest
|
|
if: github.base_ref == 'v3-alpha'
|
|
outputs:
|
|
approved: ${{ steps.check.outputs.approved }}
|
|
steps:
|
|
- name: Check if PR is approved
|
|
id: check
|
|
run: |
|
|
if [[ "${{ github.event.review.state }}" == "approved" || "${{ github.event.pull_request.approved }}" == "true" ]]; then
|
|
echo "approved=true" >> $GITHUB_OUTPUT
|
|
else
|
|
echo "approved=false" >> $GITHUB_OUTPUT
|
|
fi
|
|
|
|
test_js:
|
|
name: Run JS Tests
|
|
needs: check_approval
|
|
runs-on: ubuntu-latest
|
|
if: github.base_ref == 'v3-alpha'
|
|
strategy:
|
|
matrix:
|
|
node-version: [20.x]
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Use Node.js ${{ matrix.node-version }}
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: ${{ matrix.node-version }}
|
|
|
|
- name: Install Task
|
|
uses: arduino/setup-task@v2
|
|
with:
|
|
version: 3.x
|
|
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Install dependencies
|
|
working-directory: v3/internal/runtime/desktop/@wailsio/runtime
|
|
run: |
|
|
npm ci
|
|
npx --yes esbuild@latest --version
|
|
|
|
- name: Clean build artifacts
|
|
working-directory: v3/internal/runtime/desktop/@wailsio/runtime
|
|
run: npm run clean
|
|
|
|
- name: Type-check runtime
|
|
working-directory: v3
|
|
run: task runtime:check
|
|
|
|
- name: Test runtime
|
|
working-directory: v3
|
|
run: task runtime:test
|
|
|
|
- name: Check that the bundled runtime builds
|
|
working-directory: v3
|
|
run: task runtime:build
|
|
|
|
- name: Check that the npm package builds
|
|
working-directory: v3/internal/runtime/desktop/@wailsio/runtime
|
|
run: npm run build
|
|
|
|
- name: Pack runtime for template tests
|
|
working-directory: v3/internal/runtime/desktop/@wailsio/runtime
|
|
run: npm pack
|
|
|
|
- name: Store runtime build artifacts
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: runtime-build-artifacts
|
|
path: |
|
|
v3/internal/runtime/desktop/@wailsio/runtime/dist/
|
|
v3/internal/runtime/desktop/@wailsio/runtime/types/
|
|
v3/internal/runtime/desktop/@wailsio/runtime/tsconfig.tsbuildinfo
|
|
|
|
- name: Store runtime package
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: runtime-package
|
|
path: v3/internal/runtime/desktop/@wailsio/runtime/*.tgz
|
|
|
|
test_go:
|
|
name: Run Go Tests v3
|
|
needs: [check_approval, test_js]
|
|
runs-on: ${{ matrix.os }}
|
|
if: github.base_ref == 'v3-alpha'
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os: [windows-latest, ubuntu-latest, macos-latest]
|
|
go-version: [1.24]
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Install linux dependencies (GTK3)
|
|
uses: awalsh128/cache-apt-pkgs-action@latest
|
|
if: matrix.os == 'ubuntu-latest'
|
|
with:
|
|
packages: libgtk-3-dev libwebkit2gtk-4.1-dev libwayland-dev build-essential pkg-config xvfb x11-xserver-utils at-spi2-core xdg-desktop-portal-gtk
|
|
version: 1.0
|
|
|
|
- name: Install linux dependencies (GTK4)
|
|
if: matrix.os == 'ubuntu-latest'
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y libgtk-4-dev libwebkitgtk-6.0-dev
|
|
|
|
- name: Setup Go
|
|
uses: actions/setup-go@v5
|
|
with:
|
|
go-version: ${{ matrix.go-version }}
|
|
cache: true
|
|
cache-dependency-path: "v3/go.sum"
|
|
|
|
- name: Install Task
|
|
uses: arduino/setup-task@v2
|
|
with:
|
|
version: 3.x
|
|
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Retrieve runtime build artifacts
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: runtime-build-artifacts
|
|
path: v3/internal/runtime/desktop/@wailsio/runtime/
|
|
|
|
- name: Build Examples (GTK3 default)
|
|
working-directory: v3
|
|
run: |
|
|
echo "Starting example compilation tests (GTK3)..."
|
|
task test:examples
|
|
echo "Example compilation tests (GTK3) completed successfully"
|
|
|
|
- name: Build Examples (GTK4)
|
|
if: matrix.os == 'ubuntu-latest'
|
|
working-directory: v3
|
|
run: |
|
|
echo "Starting example compilation tests (GTK4)..."
|
|
BUILD_TAGS=gtk4 task test:examples
|
|
echo "Example compilation tests (GTK4) completed successfully"
|
|
|
|
- name: Run tests (mac)
|
|
if: matrix.os == 'macos-latest'
|
|
env:
|
|
CGO_LDFLAGS: -framework UniformTypeIdentifiers -mmacosx-version-min=10.13
|
|
working-directory: v3
|
|
run: go test -v ./...
|
|
|
|
- name: Run tests (windows)
|
|
if: matrix.os == 'windows-latest'
|
|
working-directory: v3
|
|
run: go test -v ./...
|
|
|
|
- name: Run tests (ubuntu) - GTK3 default
|
|
if: matrix.os == 'ubuntu-latest'
|
|
working-directory: v3
|
|
run: >
|
|
xvfb-run --auto-servernum
|
|
sh -c '
|
|
dbus-update-activation-environment --systemd --all &&
|
|
go test -v ./...
|
|
'
|
|
|
|
- name: Run tests (ubuntu) - GTK4
|
|
if: matrix.os == 'ubuntu-latest'
|
|
working-directory: v3
|
|
# Skip service tests that hang in CI due to GTK4 display requirements
|
|
run: >
|
|
xvfb-run --auto-servernum
|
|
sh -c '
|
|
dbus-update-activation-environment --systemd --all &&
|
|
go test -tags gtk4 -v -skip "TestService" ./...
|
|
'
|
|
|
|
- name: Typecheck binding generator output
|
|
working-directory: v3
|
|
run: task generator:test:check
|
|
|
|
cleanup:
|
|
name: Cleanup build artifacts
|
|
if: always()
|
|
needs: [test_js, test_go, test_templates]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: geekyeggo/delete-artifact@v5
|
|
with:
|
|
name: |
|
|
runtime-build-artifacts
|
|
runtime-package
|
|
failOnError: false
|
|
|
|
test_templates:
|
|
name: Test Templates
|
|
needs: [test_js, test_go]
|
|
runs-on: ${{ matrix.os }}
|
|
if: github.base_ref == 'v3-alpha'
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os: [ubuntu-latest, windows-latest, macos-latest]
|
|
template:
|
|
- svelte
|
|
- svelte-ts
|
|
- vue
|
|
- vue-ts
|
|
- react
|
|
- react-ts
|
|
- preact
|
|
- preact-ts
|
|
- lit
|
|
- lit-ts
|
|
- vanilla
|
|
- vanilla-ts
|
|
go-version: [1.24]
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Install linux dependencies (GTK3)
|
|
uses: awalsh128/cache-apt-pkgs-action@latest
|
|
if: matrix.os == 'ubuntu-latest'
|
|
with:
|
|
packages: libgtk-3-dev libwebkit2gtk-4.1-dev libwayland-dev build-essential pkg-config
|
|
version: 1.0
|
|
|
|
- name: Install linux dependencies (GTK4)
|
|
if: matrix.os == 'ubuntu-latest'
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y libgtk-4-dev libwebkitgtk-6.0-dev
|
|
|
|
- name: Setup Go
|
|
uses: actions/setup-go@v5
|
|
with:
|
|
go-version: ${{ matrix.go-version }}
|
|
cache: true
|
|
cache-dependency-path: "v3/go.sum"
|
|
|
|
- name: Install Task
|
|
uses: arduino/setup-task@v2
|
|
with:
|
|
version: 3.x
|
|
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Build Wails3 CLI
|
|
working-directory: v3
|
|
run: |
|
|
task install
|
|
wails3 doctor
|
|
|
|
- name: Download runtime package
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: runtime-package
|
|
path: wails-runtime-temp
|
|
|
|
- name: Generate template '${{ matrix.template }}' (GTK3 default)
|
|
shell: bash
|
|
run: |
|
|
# Get absolute path - use pwd -W on Windows for native paths, pwd elsewhere
|
|
if [[ "$RUNNER_OS" == "Windows" ]]; then
|
|
RUNTIME_TGZ="$(cd wails-runtime-temp && pwd -W)/$(ls wails-runtime-temp/*.tgz | xargs basename)"
|
|
else
|
|
RUNTIME_TGZ="$(cd wails-runtime-temp && pwd)/$(ls wails-runtime-temp/*.tgz | xargs basename)"
|
|
fi
|
|
mkdir -p ./test-${{ matrix.template }}
|
|
cd ./test-${{ matrix.template }}
|
|
wails3 init -n ${{ matrix.template }} -t ${{ matrix.template }}
|
|
cd ${{ matrix.template }}/frontend
|
|
# Replace @wailsio/runtime version with local tarball
|
|
npm pkg set dependencies.@wailsio/runtime="file://$RUNTIME_TGZ"
|
|
cd ..
|
|
wails3 build
|
|
|
|
# GTK4 template builds are covered by the Go example compilation tests above.
|
|
|
|
build_results:
|
|
if: ${{ always() }}
|
|
runs-on: ubuntu-latest
|
|
name: v3 Build Results
|
|
needs: [test_go, test_js, test_templates]
|
|
steps:
|
|
- run: |
|
|
go_result="${{ needs.test_go.result }}"
|
|
js_result="${{ needs.test_js.result }}"
|
|
templates_result="${{ needs.test_templates.result }}"
|
|
|
|
if [[ $go_result == "success" || $go_result == "skipped" ]] && \
|
|
[[ $js_result == "success" || $js_result == "skipped" ]] && \
|
|
[[ $templates_result == "success" || $templates_result == "skipped" ]]; then
|
|
echo "All required jobs succeeded or were skipped"
|
|
exit 0
|
|
else
|
|
echo "One or more required jobs failed"
|
|
exit 1
|
|
fi |