runtests #2901
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: runtests | |
on: | |
workflow_dispatch: | |
inputs: | |
debug: | |
type: boolean | |
required: false | |
default: false | |
bypass-cache: | |
type: boolean | |
required: false | |
default: false | |
run_fuse_with_extensions: | |
type: boolean | |
required: false | |
default: false | |
push: | |
branches: | |
- master | |
- dev | |
pull_request: | |
schedule: | |
- cron: '7 0 * * *' # midnight PT | |
env: | |
PTP_READ_TOKEN: ${{ secrets.PTP_READ_TOKEN }} | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
jobs: | |
test: | |
name: Julia ${{ matrix.flavor.version }} - ${{ matrix.flavor.os }} - ${{ matrix.flavor.arch }} | |
runs-on: ${{ matrix.flavor.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
flavor: | |
- { os: ubuntu-latest, arch: x64, version: "1.x" } | |
- { os: macos-latest, arch: arm64, version: "1.x" } | |
# - { os: windows-latest, arch: x86, version: "1.x" } | |
env: | |
GKSwstype: 100 # disable Plots.jl interactive output | |
steps: | |
- name: Check if Scheduled Run | |
id: is-scheduled | |
run: | | |
if [ "${{ github.event_name }}" == "schedule" ] || [ "${{ github.event.inputs.run_fuse_with_extensions }}" == "true" ]; then | |
echo "FUSE_WITH_EXTENSIONS=true" >> $GITHUB_ENV | |
else | |
echo "FUSE_WITH_EXTENSIONS=false" >> $GITHUB_ENV | |
fi | |
- name: Display Run Type | |
run: echo "Is this a FUSE_WITH_EXTENSIONS run? ${{ env.FUSE_WITH_EXTENSIONS }}" | |
- name: Get number of CPU cores | |
uses: SimenB/github-actions-cpu-cores@v2 | |
id: cpu-cores | |
- name: Set JULIA_NUM_THREADS=${{ steps.cpu-cores.outputs.count }} | |
run: echo "JULIA_NUM_THREADS=${{ steps.cpu-cores.outputs.count }}" >> $GITHUB_ENV | |
- uses: actions/checkout@v4 | |
# Julia setup | |
- uses: julia-actions/setup-julia@v1 | |
with: | |
version: ${{ matrix.flavor.version }} | |
arch: ${{ matrix.flavor.arch }} | |
show-versioninfo: true | |
# Cache key generation | |
- name: Generate cache key with date | |
id: cache-date | |
run: echo "{date}=$(date +%Y-%m-%d)" >> $GITHUB_STATE | |
# Cache Julia artifacts | |
- name: Cache Julia artifacts | |
uses: actions/cache@v4 | |
if: github.event.inputs.bypass-cache != 'true' | |
with: | |
path: | | |
~/.julia/artifacts | |
~/.julia/packages | |
~/.julia/compiled | |
key: ${{ runner.os }}-julia-${{ matrix.flavor.version }}-${{ matrix.flavor.os }}-${{ matrix.flavor.arch }}-${{ steps.cache-date.outputs.date }} | |
# FuseRegistry management on macOS | |
- name: Remove FuseRegistry and Add Registry on macOS | |
if: matrix.flavor.os == 'macos-latest' | |
run: | | |
rm -rf ~/.julia/registries/FuseRegistry | |
julia -e 'using Pkg; Pkg.Registry.add(RegistrySpec(url="https://github.com/ProjectTorreyPines/FuseRegistry.jl.git")); Pkg.Registry.add("General"); Pkg.Registry.update()' | |
find ~/.julia/registries/FuseRegistry -type f -name 'Package.toml' -exec sed -i '' 's|[email protected]:|https://project-torrey-pines:${{secrets.PTP_READ_TOKEN}}@github.com/|g' {} + | |
# FuseRegistry management on Linux | |
- name: Remove FuseRegistry and Add Registry on Linux | |
if: matrix.flavor.os == 'ubuntu-latest' | |
run: | | |
rm -rf ~/.julia/registries/FuseRegistry | |
julia -e 'using Pkg; Pkg.Registry.add(RegistrySpec(url="https://github.com/ProjectTorreyPines/FuseRegistry.jl.git")); Pkg.Registry.add("General"); Pkg.Registry.update()' | |
find ~/.julia/registries/FuseRegistry -type f -name 'Package.toml' -exec sed -i 's|[email protected]:|https://project-torrey-pines:${{secrets.PTP_READ_TOKEN}}@github.com/|g' {} + | |
# FuseRegistry management on Windows | |
- name: Remove FuseRegistry and Add Registry on Windows | |
if: matrix.flavor.os == 'windows-latest' | |
shell: pwsh | |
run: | | |
if (Test-Path "$env:USERPROFILE\.julia\registries\FuseRegistry") { | |
Write-Host "Removing FuseRegistry directory..." | |
Remove-Item -Recurse -Force "$env:USERPROFILE\.julia\registries\FuseRegistry" | |
} else { | |
Write-Host "Directory does not exist, skipping removal." | |
} | |
julia -e 'using Pkg; Pkg.Registry.add(RegistrySpec(url="https://github.com/ProjectTorreyPines/FuseRegistry.jl.git")); Pkg.Registry.add("General"); Pkg.Registry.update()' | |
Get-ChildItem -Path "$env:USERPROFILE\.julia\registries\FuseRegistry" -Recurse -Filter 'Package.toml' | ForEach-Object { | |
(Get-Content $_.FullName) -replace '[email protected]:', 'https://project-torrey-pines:${{secrets.PTP_READ_TOKEN}}@github.com/' | Set-Content $_.FullName | |
} | |
- name: 'Install (without extensions)' | |
if: env.FUSE_WITH_EXTENSIONS == 'false' | |
run: make install_ci_add NO_FUSE_EXTENSION=true | |
- name: 'Install (with extensions)' | |
if: env.FUSE_WITH_EXTENSIONS == 'true' | |
run: make install_ci_add | |
# Save Manifest.toml | |
- name: 'Save Manifest.toml' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: Manifest-${{ matrix.flavor.os }}-${{ matrix.flavor.arch }} | |
path: Manifest.toml | |
# Build | |
- uses: julia-actions/julia-buildpkg@v1 | |
# Run tests | |
- uses: julia-actions/julia-runtest@v1 | |
# Code coverage | |
- uses: julia-actions/julia-processcoverage@v1 | |
- uses: codecov/codecov-action@v5 | |
with: | |
files: lcov.info |