Compare commits

...

4 Commits

Author SHA1 Message Date
Ian Butterworth
198ed292c4 revertme: disable buildpkg 2025-11-16 22:30:17 -05:00
Ian Butterworth
65a5f81584 Merge branch 'main' into ib/info_on_timeout 2025-11-16 21:01:44 -05:00
Ian Butterworth
013f11f99f Update CI config (#156) 2025-11-16 21:01:29 -05:00
Ian Butterworth
f098dd2fa4 profile on timeout 2025-11-16 11:29:46 -05:00
3 changed files with 74 additions and 6 deletions

View File

@@ -7,17 +7,24 @@ on:
- "master" - "master"
pull_request: pull_request:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs: jobs:
test: test:
name: Julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} - ${{ github.event_name }} name: Julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} - ${{ github.event_name }}
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
timeout-minutes: 5
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
version: version:
- "1.0" - "1.0"
- "lts"
- "1" # automatically expands to the latest stable 1.x release of Julia - "1" # automatically expands to the latest stable 1.x release of Julia
- nightly - "pre"
- "nightly"
os: os:
- ubuntu-latest - ubuntu-latest
- macOS-latest - macOS-latest
@@ -25,10 +32,22 @@ jobs:
arch: arch:
- x64 - x64
- x86 - x86
- aarch64
# 32-bit Julia binaries are not available on macOS # 32-bit Julia binaries are not available on macOS
# macOS runners use Apple Silicon (ARM64)
exclude: exclude:
- os: macOS-latest - os: macOS-latest
arch: x86 arch: x86
- os: macOS-latest
arch: x64
- os: ubuntu-latest
arch: aarch64
- os: windows-latest
arch: aarch64
# Julia 1.0 didn't support ARM64
- os: macOS-latest
arch: aarch64
version: "1.0"
steps: steps:
- name: Checkout Example.jl - name: Checkout Example.jl
@@ -52,7 +71,7 @@ jobs:
- uses: julia-actions/cache@d10a6fd8f31b12404a54613ebad242900567f2b9 # v2.1.0 - uses: julia-actions/cache@d10a6fd8f31b12404a54613ebad242900567f2b9 # v2.1.0
- uses: julia-actions/julia-buildpkg@e3eb439fad4f9aba7da2667e7510e4a46ebc46e1 # v1.7.0 # - uses: julia-actions/julia-buildpkg@e3eb439fad4f9aba7da2667e7510e4a46ebc46e1 # v1.7.0
- uses: ./.github/actions/julia-runtest - uses: ./.github/actions/julia-runtest
@@ -63,7 +82,7 @@ jobs:
files: lcov.info files: lcov.info
token: ${{ secrets.CODECOV_TOKEN }} token: ${{ secrets.CODECOV_TOKEN }}
fail-ci-if-error: true fail-ci-if-error: true
- name: Verify that test output file exists - name: Verify that test output file exists
run: test -f "$HOME/julia-runtest" run: test -f "$HOME/julia-runtest"

View File

@@ -7,17 +7,24 @@ on:
- "master" - "master"
pull_request: pull_request:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs: jobs:
test: test:
name: Julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} - ${{ github.event_name }} name: Julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} - ${{ github.event_name }}
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
timeout-minutes: 5
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
version: version:
- "1.6" - "1.6"
- "lts"
- "1" # automatically expands to the latest stable 1.x release of Julia - "1" # automatically expands to the latest stable 1.x release of Julia
- nightly - "pre"
- "nightly"
os: os:
- ubuntu-latest - ubuntu-latest
- macOS-latest - macOS-latest
@@ -25,10 +32,22 @@ jobs:
arch: arch:
- x64 - x64
- x86 - x86
- aarch64
# 32-bit Julia binaries are not available on macOS # 32-bit Julia binaries are not available on macOS
# macOS runners use Apple Silicon (ARM64)
exclude: exclude:
- os: macOS-latest - os: macOS-latest
arch: x86 arch: x86
- os: macOS-latest
arch: x64
- os: ubuntu-latest
arch: aarch64
- os: windows-latest
arch: aarch64
# Julia 1.6 didn't support ARM64
- os: macOS-latest
arch: aarch64
version: "1.6"
steps: steps:
- name: Checkout julia-runtest - name: Checkout julia-runtest

View File

@@ -66,9 +66,39 @@ runs:
prefix=( ${{ inputs.prefix }} ) prefix=( ${{ inputs.prefix }} )
[[ -n ${prefix[*]} ]] && julia_cmd=( "${prefix[@]}" "${julia_cmd[@]}" ) [[ -n ${prefix[*]} ]] && julia_cmd=( "${prefix[@]}" "${julia_cmd[@]}" )
# Run the Julia command # Determine which signal to use for diagnostics based on OS
if [[ "$(uname -s)" == "Darwin" ]] || [[ "$(uname -s)" == *"BSD"* ]]; then
info_signal="INFO"
else
info_signal="USR1"
fi
# Set up signal handler to send diagnostic signal when we receive SIGTERM
# (which GitHub Actions sends on timeout/cancellation)
trap_handler() {
echo "::warning::Timeout/cancellation detected - sending SIG${info_signal} to Julia process for diagnostic output"
if kill -0 "$julia_pid" 2>/dev/null; then
kill -s "$info_signal" "$julia_pid" 2>/dev/null || true
# Give Julia a moment to print diagnostics before we get killed
sleep 2
fi
# Re-send SIGTERM to Julia to ensure it terminates
kill -TERM "$julia_pid" 2>/dev/null || true
wait "$julia_pid" 2>/dev/null || true
exit 124 # Standard timeout exit code
}
trap trap_handler SIGTERM SIGINT
# Run the Julia command in the background so we can handle signals
echo "::debug::Executing Julia: ${julia_cmd[*]}" echo "::debug::Executing Julia: ${julia_cmd[*]}"
"${julia_cmd[@]}" "${julia_cmd[@]}" &
julia_pid=$!
# Wait for Julia to complete
wait "$julia_pid"
exit_code=$?
exit $exit_code
shell: bash shell: bash
env: env:
ANNOTATE: ${{ inputs.annotate }} ANNOTATE: ${{ inputs.annotate }}