WIP: remove windows #1
Workflow file for this run
This file contains hidden or 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: Matrix | ||
on: | ||
workflow_call: | ||
inputs: | ||
name: | ||
type: string | ||
description: "The name of the workflow used for the concurrency group." | ||
required: true | ||
matrix_path: | ||
type: string | ||
description: "The path of the test matrix definition." | ||
default: "" | ||
matrix_string: | ||
type: string | ||
description: "The test matrix definition." | ||
default: "" | ||
# We will cancel previously triggered workflow runs | ||
concurrency: | ||
group: ${{ github.workflow }}-${{ github.ref }}-${{ inputs.name }} | ||
cancel-in-progress: true | ||
jobs: | ||
generate-matrix: | ||
name: Prepare matrices | ||
runs-on: ubuntu-latest | ||
outputs: | ||
linux-matrix: ${{ steps.load-matrix.outputs.linux-matrix }} | ||
windows-matrix: ${{ steps.load-matrix.outputs.windows-matrix }} | ||
steps: | ||
- name: Checkout repository | ||
uses: actions/checkout@v4 | ||
with: | ||
persist-credentials: false | ||
- name: Mark the workspace as safe | ||
# https://github.com/actions/checkout/issues/766 | ||
run: git config --global --add safe.directory ${GITHUB_WORKSPACE} | ||
- id: file_check | ||
run: | | ||
if [ ! -z '${{ inputs.matrix_string }}' ]; then | ||
echo "matrix_string_populated=true" >> $GITHUB_ENV | ||
else | ||
echo "matrix_string_populated=false" >> $GITHUB_ENV | ||
fi | ||
- id: cat-matrix | ||
if: ${{ env.matrix_string_populated == 'false' }} | ||
run: | | ||
jq -c '{linux: .linux}' ${{ inputs.matrix_path }} >| __linux_coverage_matrix.json | ||
jq -c '{windows: .windows}' ${{ inputs.matrix_path }} >| __windows_coverage_matrix.json | ||
- id: write-matrix | ||
if: ${{ env.matrix_string_populated == 'true' }} | ||
run: | | ||
echo '${{ inputs.matrix_string }}' | jq -c '{linux: .linux}' >| __linux_coverage_matrix.json | ||
echo '${{ inputs.matrix_string }}' | jq -c '{windows: .windows}' >| __windows_coverage_matrix.json | ||
- id: load-matrix | ||
run: | | ||
{ | ||
echo 'linux-matrix<<EOF' | ||
echo "$(cat __linux_coverage_matrix.json)" | ||
echo EOF | ||
} >> "$GITHUB_OUTPUT" | ||
{ | ||
echo 'windows-matrix<<EOF' | ||
echo EOF | ||
} >> "$GITHUB_OUTPUT" | ||
linux: | ||
name: Linux (${{ matrix.linux.name }}) | ||
needs: generate-matrix | ||
runs-on: ${{ matrix.linux.runner }} | ||
strategy: | ||
fail-fast: false | ||
matrix: ${{ fromJson(needs.generate-matrix.outputs.linux-matrix) }} | ||
container: | ||
image: ${{ matrix.linux.image }} | ||
steps: | ||
- name: Checkout repository | ||
uses: actions/checkout@v4 | ||
with: | ||
persist-credentials: false | ||
- name: Mark the workspace as safe | ||
# https://github.com/actions/checkout/issues/766 | ||
run: git config --global --add safe.directory ${GITHUB_WORKSPACE} | ||
- name: Pre-build | ||
if: ${{ matrix.linux.setup_command }} | ||
run: | | ||
${{ matrix.linux.setup_command }} | ||
- name: Run matrix job | ||
run: | | ||
${{ matrix.linux.command }} ${{ matrix.linux.command_arguments }} | ||
check-for-windows-jobs: | ||
name: Check for Windows jobs | ||
needs: generate-matrix | ||
if: ${{ needs.generate-matrix.outputs.windows-matrix }} | ||
windows: | ||
name: Windows (${{ matrix.windows.name}}) | ||
needs: check-for-windows-jobs | ||
runs-on: ${{ matrix.windows.runner }} | ||
strategy: | ||
fail-fast: false | ||
matrix: ${{ fromJson(needs.generate-matrix.outputs.windows-matrix) }} | ||
steps: | ||
- name: Pull Docker image | ||
run: docker pull ${{ matrix.windows.image }} | ||
- name: Checkout repository | ||
uses: actions/checkout@v4 | ||
with: | ||
persist-credentials: false | ||
submodules: true | ||
- name: Run matrix job | ||
run: | | ||
if (-not [string]::IsNullOrEmpty("${{ matrix.windows.setup_command }}")) { | ||
$setup_command_expression = "${{ matrix.windows.setup_command }};" | ||
} else { | ||
$setup_command_expression = "" | ||
} | ||
docker run -v ${{ github.workspace }}:C:\source ${{ matrix.windows.image }} cmd /s /c "swift --version & cd C:\source\ & powershell Invoke-Expression ""$($setup_command_expression) ${{ matrix.windows.command }} ${{ matrix.windows.command_arguments }}""" |