Skip to content

CI runner tweaks (#464) #1640

CI runner tweaks (#464)

CI runner tweaks (#464) #1640

Workflow file for this run

name: CI
# Run on master, tags, or any pull request
on:
pull_request:
branches: "*"
push:
branches: master
tags: "*"
schedule:
- cron: "0 2 * * *" # Daily at 2 AM UTC (8 PM CST)
# Skip/cancel execution of queued/running jobs from outdated commits. Jobs run on the
# `master` branch are not subject to these restrictions and are always executed.
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}-${{ github.ref != 'refs/heads/master' || github.run_number }}
cancel-in-progress: ${{ github.ref != 'refs/heads/master' }}
env:
# Only download the tzdata version used in TimeZones.jl's tests to avoid unnecessary
# load on IANA's servers.
JULIA_TZ_VERSION: 2016j # Matches tzdata version used in tests
# The HEAD commit which triggered this workflow. By default PRs use a merge commit
SHA: ${{ github.event.pull_request.head.sha || github.sha }}
jobs:
test:
name: Julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }}
runs-on: ${{ matrix.os }}
continue-on-error: ${{ matrix.version == 'nightly' }}
strategy:
fail-fast: false
matrix:
version:
- "1.6" # LTS / Oldest supported version
- "1" # Latest release
- nightly
# https://github.com/actions/runner-images#available-images
os:
- ubuntu-latest
- macos-14 # Apple silicon
- windows-latest
arch:
- x64
- x86
- aarch64
exclude:
# Test 32-bit only on Linux
- os: macos-14
arch: x86
- os: windows-latest
arch: x86
# Test ARM64 only on macOS
- os: ubuntu-latest
arch: aarch64
- os: windows-latest
arch: aarch64
# Prefer testing against Apple Silicon
- os: macos-14
arch: x64
- version: "1.6"
os: macos-14
arch: aarch64
# Disable Windows tests on Julia 1.6 as it's particularly slow
- version: "1.6"
os: windows-latest
include:
# Apple silicon isn't supported by Julia 1.6
- version: "1.6"
os: macos-13 # Intel
arch: x64
steps:
- uses: actions/checkout@v4
- uses: julia-actions/setup-julia@v2
with:
version: ${{ matrix.version }}
arch: ${{ matrix.arch }}
- uses: julia-actions/cache@v2
- uses: julia-actions/julia-buildpkg@v1
- uses: julia-actions/julia-runtest@v1
- uses: julia-actions/julia-processcoverage@v1
- uses: codecov/codecov-action@v4
with:
files: lcov.info
token: ${{ secrets.CODECOV_TOKEN }}
# https://pkgdocs.julialang.org/v1/creating-packages/#Transition-from-normal-dependency-to-extension
weakdeps:
name: Weakdeps
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: julia-actions/setup-julia@v2
with:
version: "1.6" # LTS / Oldest support version
- uses: julia-actions/cache@v2
- shell: julia --color=yes --project=docs {0}
run: |
using Pkg
Pkg.add(PackageSpec(name="TimeZones", rev=ENV["SHA"]))
using TimeZones
benchmarks:
name: Benchmarks
runs-on: ubuntu-latest
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v4
- uses: julia-actions/setup-julia@v2
with:
version: "1"
- uses: julia-actions/cache@v2
- uses: julia-actions/julia-buildpkg@v1
- run: |
git fetch origin +:refs/remotes/origin/HEAD
julia --project=benchmark/ -e 'using Pkg; Pkg.instantiate(); Pkg.develop(PackageSpec(path=pwd()))'
julia --project=benchmark/ -e 'using PkgBenchmark, TimeZones; export_markdown(stdout, judge(TimeZones, "origin/HEAD", verbose=false))'
doctest:
name: Documentation - DocTests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: julia-actions/setup-julia@v2
with:
version: "1.9"
- uses: julia-actions/cache@v2
- uses: julia-actions/julia-buildpkg@v1
- shell: julia --color=yes --project=docs {0}
run: |
using Pkg
Pkg.instantiate()
- run: julia --project=docs docs/make.jl
env:
DOCTESTS: "true"
docs:
name: Documentation - Deploy
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: julia-actions/setup-julia@v2
with:
version: "1.9"
- uses: julia-actions/cache@v2
- uses: julia-actions/julia-buildpkg@v1
- shell: julia --color=yes --project=docs {0}
run: |
using Pkg
Pkg.instantiate()
- run: julia --project=docs docs/make.jl
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
DOCUMENTER_KEY: ${{ secrets.DOCUMENTER_KEY }}
DEPLOY_DOCS: "true"