WIP invoke fix #3273
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: CI | |
on: | |
pull_request: | |
push: | |
branches: | |
- main | |
- release-* | |
tags: '*' | |
jobs: | |
test: | |
name: Julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} - ${{ matrix.libEnzyme }} libEnzyme - assertions=${{ matrix.assertions }} - ${{ github.event_name }} | |
runs-on: ${{ matrix.os }} | |
continue-on-error: ${{ matrix.version == 'nightly' }} | |
strategy: | |
fail-fast: false | |
matrix: | |
version: | |
- '1.6' | |
- '1.7' | |
- '1.8' | |
- '1.9' | |
- '1.10-nightly' | |
- 'nightly' | |
os: | |
- ubuntu-20.04 | |
- macOS-latest | |
- windows-latest | |
arch: | |
- x64 | |
assertions: | |
- false | |
libEnzyme: [local, packaged] | |
exclude: | |
- os: windows-latest | |
arch: x64 | |
libEnzyme: local | |
include: | |
- os: ubuntu-20.04 | |
arch: x86 | |
libEnzyme: packaged | |
version: '1.6' | |
assertions: false | |
- os: ubuntu-20.04 | |
arch: x86 | |
libEnzyme: packaged | |
version: '1.7' | |
assertions: false | |
- os: ubuntu-20.04 | |
arch: x86 | |
libEnzyme: packaged | |
version: '1.8' | |
assertions: false | |
- os: ubuntu-20.04 | |
arch: x86 | |
libEnzyme: packaged | |
version: '1.9' | |
assertions: false | |
- os: ubuntu-20.04 | |
arch: x64 | |
libEnzyme: packaged | |
version: '1.10-nightly' | |
assertions: false | |
- os: ubuntu-20.04 | |
arch: x64 | |
libEnzyme: packaged | |
version: '1.7' | |
assertions: true | |
- os: ubuntu-20.04 | |
arch: x64 | |
libEnzyme: packaged | |
version: '1.8' | |
assertions: true | |
- os: ubuntu-20.04 | |
arch: x64 | |
libEnzyme: packaged | |
version: '1.9' | |
assertions: true | |
- os: ubuntu-20.04 | |
arch: x64 | |
libEnzyme: packaged | |
version: '1.10-nightly' | |
assertions: true | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: julia-actions/setup-julia@v1 | |
if: ${{ ! matrix.assertions }} | |
with: | |
version: ${{ matrix.version }} | |
arch: ${{ matrix.arch }} | |
- uses: actions/checkout@v3 | |
if: ${{ matrix.assertions }} | |
with: | |
repository: 'JuliaLang/julia' | |
ref: release-${{ matrix.version }} | |
path: 'julia' | |
- name: Compile Julia | |
if: ${{ matrix.assertions }} | |
run: | | |
sed -i.bak 's/exit 2/exit 0/g' julia/deps/tools/jlchecksum | |
make -C julia -j $(nproc) FORCE_ASSERTIONS=1 LLVM_ASSERTIONS=1 JULIA_PRECOMPILE=0 | |
echo $PWD/julia/usr/bin >> $GITHUB_PATH | |
- uses: actions/cache@v1 | |
env: | |
cache-name: cache-artifacts | |
with: | |
path: ~/.julia/artifacts | |
key: ${{ runner.os }}-test-${{ env.cache-name }}-${{ hashFiles('**/Project.toml') }} | |
restore-keys: | | |
${{ runner.os }}-test-${{ env.cache-name }}- | |
${{ runner.os }}-test- | |
${{ runner.os }}- | |
- name: add EnzymeCore | |
shell: julia --color=yes --project=. {0} | |
run: | | |
using Pkg | |
Pkg.develop(path="lib/EnzymeCore") | |
env: | |
JULIA_PKG_SERVER_REGISTRY_PREFERENCE: eager | |
- name: Build libEnzyme | |
if: ${{ matrix.libEnzyme == 'local' && matrix.os != 'macOS-latest'}} | |
run: | | |
julia --project=deps -e 'using Pkg; Pkg.instantiate()' | |
julia --project=deps deps/build_local.jl | |
cp LocalPreferences.toml test/ | |
- name: Build libEnzyme MacOS | |
if: ${{ matrix.libEnzyme == 'local' && matrix.os == 'macOS-latest'}} | |
run: | | |
julia --project=deps -e 'using Pkg; Pkg.instantiate()' | |
SDKROOT=`xcrun --show-sdk-path` julia --project=deps deps/build_local.jl | |
cp LocalPreferences.toml test/ | |
- uses: julia-actions/julia-buildpkg@v1 | |
env: | |
JULIA_PKG_SERVER_REGISTRY_PREFERENCE: eager | |
- uses: julia-actions/julia-runtest@v1 | |
env: | |
JULIA_PKG_SERVER_REGISTRY_PREFERENCE: eager | |
- uses: julia-actions/julia-processcoverage@v1 | |
- uses: codecov/codecov-action@v1 | |
with: | |
file: lcov.info | |
enzymetestutils: | |
name: EnzymeTestUtils - Julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} - ${{ matrix.libEnzyme }} libEnzyme - ${{ github.event_name }} | |
runs-on: ${{ matrix.os }} | |
continue-on-error: ${{ matrix.version == 'nightly' }} | |
env: | |
JULIA_PROJECT: "lib/EnzymeTestUtils" | |
strategy: | |
fail-fast: false | |
matrix: | |
version: | |
- '1.7' | |
- '1' | |
- 'nightly' | |
os: | |
- ubuntu-latest | |
arch: | |
- x64 | |
libEnzyme: [packaged] | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: julia-actions/setup-julia@v1 | |
with: | |
version: ${{ matrix.version }} | |
arch: ${{ matrix.arch }} | |
- uses: actions/cache@v1 | |
env: | |
cache-name: cache-artifacts | |
with: | |
path: ~/.julia/artifacts | |
key: ${{ runner.os }}-test-${{ env.cache-name }}-${{ hashFiles('**/Project.toml') }} | |
restore-keys: | | |
${{ runner.os }}-test-${{ env.cache-name }}- | |
${{ runner.os }}-test- | |
${{ runner.os }}- | |
- name: setup EnzymeTestUtils | |
shell: julia --color=yes {0} | |
run: | | |
using Pkg | |
Pkg.develop([PackageSpec(; path) for path in (".", "lib/EnzymeCore")]) | |
Pkg.instantiate() | |
env: | |
JULIA_PKG_SERVER_REGISTRY_PREFERENCE: eager | |
- name: Run the tests | |
shell: julia --color=yes {0} | |
run: | | |
using Pkg | |
Pkg.test("EnzymeTestUtils"; coverage=true) | |
- uses: julia-actions/julia-processcoverage@v1 | |
with: | |
directories: lib/EnzymeTestUtils/src | |
- uses: codecov/codecov-action@v2 | |
with: | |
files: lcov.info | |
docs: | |
name: Documentation | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: julia-actions/setup-julia@v1 | |
with: | |
version: '1' | |
- run: | | |
julia --project=docs -e ' | |
using Pkg | |
Pkg.develop(path="lib/EnzymeCore") | |
Pkg.develop(path="lib/EnzymeTestUtils") | |
Pkg.develop(PackageSpec(path=pwd())) | |
Pkg.instantiate()' | |
env: | |
JULIA_PKG_SERVER_REGISTRY_PREFERENCE: eager | |
- run: | | |
julia --project=docs -e ' | |
using Documenter: DocMeta, doctest | |
using Enzyme | |
DocMeta.setdocmeta!(Enzyme, :DocTestSetup, :(using Enzyme); recursive=true) | |
doctest(Enzyme)' | |
- run: julia --project=docs docs/make.jl | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
DOCUMENTER_KEY: ${{ secrets.DOCUMENTER_KEY }} |