Skip to content

Commit

Permalink
Select targets to run tests on in GitHub Actions
Browse files Browse the repository at this point in the history
  • Loading branch information
dlon committed Nov 28, 2023
1 parent e28609b commit a3f9fa9
Showing 1 changed file with 72 additions and 9 deletions.
81 changes: 72 additions & 9 deletions .github/workflows/desktop-e2e.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,66 @@ on:
schedule:
- cron: '0 0 * * *'
workflow_dispatch:
inputs:
oses:
description: 'List of OSes to run tests on, e.g. "debian11 debian12"'
default: ''
required: false
type: string
jobs:
prepare-matrices:
runs-on: ubuntu-latest
steps:
- name: Generate matrix for Linux builds
shell: bash
run: |
all='["debian11","debian12","ubuntu2004","ubuntu2204","ubuntu2304","fedora38","fedora37","fedora36"]'
oses="${{ github.event.inputs.oses }}"
echo "OSES: $oses"
if [[ -z "$oses" || "$oses" == "null" ]]; then
selected="$all"
else
oses=$(printf '%s\n' $oses | jq . -R | jq . -s)
selected=$(jq -cn --argjson oses "$oses" --argjson all "$all" '$all - ($all - $oses)')
fi
echo "Selected targets: $selected"
echo "linux_matrix=$selected" >> $GITHUB_ENV
- name: Generate matrix for Windows builds
shell: bash
run: |
all='["windows10","windows11"]'
oses="${{ github.event.inputs.oses }}"
if [[ -z "$oses" || "$oses" == "null" ]]; then
selected="$all"
else
oses=$(printf '%s\n' $oses | jq . -R | jq . -s)
selected=$(jq -cn --argjson oses "$oses" --argjson all "$all" '$all - ($all - $oses)')
fi
echo "Selected targets: $selected"
echo "windows_matrix=$selected" >> $GITHUB_ENV
- name: Generate matrix for macOS builds
shell: bash
run: |
all='["macos12","macos13","macos14"]'
oses="${{ github.event.inputs.oses }}"
if [[ -z "$oses" || "$oses" == "null" ]]; then
selected="$all"
else
oses=$(printf '%s\n' $oses | jq . -R | jq . -s)
selected=$(jq -cn --argjson oses "$oses" --argjson all "$all" '$all - ($all - $oses)')
fi
echo "Selected targets: $selected"
echo "macos_matrix=$selected" >> $GITHUB_ENV
outputs:
linux_matrix: ${{ env.linux_matrix }}
windows_matrix: ${{ env.windows_matrix }}
macos_matrix: ${{ env.macos_matrix }}

prepare-linux:
if: ${{ !startsWith(github.ref, 'refs/tags/') && github.ref != 'refs/heads/main' }}
needs: prepare-matrices
if: |
needs.prepare-matrices.outputs.linux_matrix != '[]' &&
!startsWith(github.ref, 'refs/tags/') && github.ref != 'refs/heads/main'
runs-on: ubuntu-latest
steps:
- name: Checkout repository
Expand Down Expand Up @@ -54,14 +111,14 @@ jobs:
e2e-test-linux:
name: Linux end-to-end tests
needs: build-linux
needs: [prepare-matrices, build-linux]
if: '!cancelled()'
runs-on: [self-hosted, desktop-test, Linux] # app-test-linux
timeout-minutes: 240
strategy:
fail-fast: false
matrix:
os: [debian11, debian12, ubuntu2004, ubuntu2204, ubuntu2304, fedora38, fedora37, fedora36]
os: ${{ fromJSON(needs.prepare-matrices.outputs.linux_matrix) }}
steps:
- uses: actions/download-artifact@v3
if: ${{ needs.build-linux.result == 'success' }}
Expand All @@ -82,7 +139,10 @@ jobs:
path: ./test/.ci-logs/${{ matrix.os }}_report

build-windows:
if: ${{ !startsWith(github.ref, 'refs/tags/') && github.ref != 'refs/heads/main' }}
needs: prepare-matrices
if: |
needs.prepare-matrices.outputs.windows_matrix != '[]' &&
!startsWith(github.ref, 'refs/tags/') && github.ref != 'refs/heads/main'
runs-on: windows-latest
steps:
- name: Checkout repository
Expand Down Expand Up @@ -122,15 +182,15 @@ jobs:
path: .\dist\*.exe

e2e-test-windows:
needs: build-windows
needs: [prepare-matrices, build-windows]
if: '!cancelled()'
name: Windows end-to-end tests
runs-on: [self-hosted, desktop-test, Linux] # app-test-linux
timeout-minutes: 240
strategy:
fail-fast: false
matrix:
os: [windows10, windows11]
os: ${{ fromJSON(needs.prepare-matrices.outputs.windows_matrix) }}
steps:
- uses: actions/download-artifact@v3
if: ${{ needs.build-windows.result == 'success' }}
Expand All @@ -151,7 +211,10 @@ jobs:
path: ./test/.ci-logs/${{ matrix.os }}_report

build-macos:
if: ${{ !startsWith(github.ref, 'refs/tags/') && github.ref != 'refs/heads/main' }}
needs: prepare-matrices
if: |
needs.prepare-matrices.outputs.macos_matrix != '[]' &&
!startsWith(github.ref, 'refs/tags/') && github.ref != 'refs/heads/main'
runs-on: [self-hosted, desktop-test, macOS] # app-test-macos-arm
steps:
- name: Checkout repository
Expand Down Expand Up @@ -185,15 +248,15 @@ jobs:
./dist/app-e2e-*
e2e-test-macos:
needs: build-macos
needs: [prepare-matrices, build-macos]
if: '!cancelled()'
name: macOS end-to-end tests
runs-on: [self-hosted, desktop-test, macOS] # app-test-macos-arm
timeout-minutes: 240
strategy:
fail-fast: false
matrix:
os: [macos-14, macos-13, macos-12]
os: ${{ fromJSON(needs.prepare-matrices.outputs.macos_matrix) }}
steps:
- uses: actions/download-artifact@v3
if: ${{ needs.build-macos.result == 'success' }}
Expand Down

0 comments on commit a3f9fa9

Please sign in to comment.