Allow Fable 5 to be used with Fable 4 plugins #1652
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: build | |
on: | |
push: | |
branches: [ main ] | |
pull_request: | |
branches: [ main ] | |
permissions: | |
id-token: write | |
security-events: write | |
jobs: | |
# Separate job that verifies if all code was formatted correctly | |
# Run `dotnet fantomas .` to format all code. | |
verify-linting: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup .NET | |
uses: actions/setup-dotnet@v3 | |
- name: Restore tools | |
run: dotnet tool restore | |
- name: Check F# code | |
run: dotnet fantomas . --check | |
# Verify that Fable.sln can be restored | |
# See: https://github.com/fable-compiler/Fable/issues/3687 | |
restore-project: | |
name: Check that solution can be restored | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup .NET | |
uses: actions/setup-dotnet@v3 | |
- name: Restore project | |
run: dotnet restore Fable.sln | |
# Separate build job for JavaScript | |
build-javascript: | |
strategy: | |
matrix: | |
platform: [ubuntu-latest, windows-latest] | |
runs-on: ${{ matrix.platform }} | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Setup .NET | |
uses: actions/setup-dotnet@v1 | |
with: | |
dotnet-version: '8.0.x' | |
- name: Setup Node.js environment | |
uses: actions/setup-node@v2.4.1 | |
- name: Fable Tests - JavaScript (linux) | |
if: matrix.platform == 'ubuntu-latest' | |
run: ./build.sh test javascript | |
- name: Fable Tests - JavaScript (Windows) | |
if: matrix.platform == 'windows-latest' | |
run: .\build.bat test javascript | |
# Separate build job for TypeScript | |
build-typescript: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup .NET | |
uses: actions/setup-dotnet@v3 | |
with: | |
dotnet-version: '8.0.x' | |
- name: Setup Node.js environment | |
uses: actions/setup-node@v2.4.1 | |
- name: Fable Tests - TypeScript | |
run: ./build.sh test typescript | |
# - name: Fable Tests - TypeScript | |
# run: dotnet fsi build.fsx test-ts | |
# Separate build job for Integration | |
build-integration: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup .NET | |
uses: actions/setup-dotnet@v3 | |
with: | |
dotnet-version: '8.0.x' | |
- name: Setup Node.js environment | |
uses: actions/setup-node@v2.4.1 | |
- name: Fable Tests | |
run: ./build.sh test integration | |
# Separate build job for Standalone | |
build-standalone: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup .NET | |
uses: actions/setup-dotnet@v3 | |
with: | |
dotnet-version: '8.0.x' | |
- name: Setup Node.js environment | |
uses: actions/setup-node@v2.4.1 | |
- name: Fable Tests | |
run: ./build.sh test standalone | |
# Separate build job for Python since we use a test matrix (will run in parallell) | |
build-python: | |
strategy: | |
matrix: | |
platform: [ubuntu-latest, windows-latest] | |
python-version: ["3.10", 3.11, 3.12] | |
runs-on: ${{ matrix.platform }} | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Setup .NET | |
uses: actions/setup-dotnet@v1 | |
with: | |
dotnet-version: '8.0.x' | |
- name: Setup dotnet tools | |
run: dotnet tool restore | |
# - name: Check F# formatting (fantomas) | |
# run: dotnet fantomas src/Fable.Transforms/Python --check | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v2 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install poetry | |
run: | | |
pip install poetry | |
- name: Fable Library - Python (linux) | |
if: matrix.platform == 'ubuntu-latest' | |
run: ./build.sh fable-library --python | |
- name: Fable Library - Python (Windows) | |
if: matrix.platform == 'windows-latest' | |
run: .\build.bat fable-library --python | |
- name: Fable Tests - Python (linux) | |
if: matrix.platform == 'ubuntu-latest' | |
run: ./build.sh test python --skip-fable-library | |
- name: Fable Tests - Python (Windows) | |
if: matrix.platform == 'windows-latest' | |
run: .\build.bat test python --skip-fable-library | |
# Separate build job for Rust (will run in parallel) | |
build-rust: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
test: ["default", "no_std", "threaded"] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup .NET | |
uses: actions/setup-dotnet@v3 | |
with: | |
dotnet-version: '8.0.x' | |
- name: Setup Node.js environment | |
uses: actions/setup-node@v2.4.1 | |
- name: Setup Rust toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: stable | |
- name: Fable Library - Rust | |
run: ./build.sh fable-library --rust | |
- name: Fable Tests - Rust | |
run: ./build.sh test rust --skip-fable-library --${{ matrix.test }} | |
# Separate build job for Dart | |
build-dart: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup .NET | |
uses: actions/setup-dotnet@v3 | |
with: | |
dotnet-version: '8.0.x' | |
- name: Setup Dart SDK | |
uses: dart-lang/setup-dart@v1.3 | |
- name: Fable Tests - Dart | |
run: ./build.sh test dart | |
# Separate job to run F# analyzers | |
analyzers: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup .NET | |
uses: actions/setup-dotnet@v3 | |
with: | |
dotnet-version: '8.0.x' | |
- name: Restore tools | |
run: dotnet tool restore | |
- name: Build solution | |
run: dotnet build -c Release Fable.sln | |
- name: Run analyzers for Fable.AST | |
run: dotnet msbuild /t:AnalyzeFSharpProject src/Fable.AST/Fable.AST.fsproj | |
continue-on-error: true | |
- name: Run analyzers for Rust.AST | |
run: dotnet msbuild /t:AnalyzeFSharpProject src/Fable.Transforms/Rust/AST/Rust.AST.fsproj | |
continue-on-error: true | |
- name: Run analyzers Fable.Transforms | |
run: dotnet msbuild /t:AnalyzeFSharpProject src/Fable.Transforms/Fable.Transforms.fsproj | |
continue-on-error: true | |
- name: Run analyzers Fable.Compiler | |
run: dotnet msbuild /t:AnalyzeFSharpProject src/Fable.Compiler/Fable.Compiler.fsproj | |
continue-on-error: true | |
- name: Upload SARIF files | |
uses: github/codeql-action/upload-sarif@v2 | |
with: | |
sarif_file: src/reports |