Reviewed-on: Rubydragon/MetagraphOptimization.jl#9 Co-authored-by: Anton Reinhard <anton.reinhard@proton.me> Co-committed-by: Anton Reinhard <anton.reinhard@proton.me>
186 lines
5.7 KiB
YAML
186 lines
5.7 KiB
YAML
name: MetagraphOptimization_CI
|
|
|
|
on: [push]
|
|
|
|
env:
|
|
# keep the depot directly in the repository for the cache
|
|
JULIA_DEPOT_PATH: './.julia'
|
|
|
|
jobs:
|
|
prepare:
|
|
runs-on: arch-latest
|
|
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v3
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Setup Julia environment
|
|
uses: https://github.com/julia-actions/setup-julia@v1.9.2
|
|
with:
|
|
version: '1.9.2'
|
|
|
|
# needed for the file hashing, should be removed when ${{ hashFiles('**/Project.toml') }} is supported in gitea
|
|
- name: Setup go environment
|
|
uses: actions/setup-go@v3
|
|
with:
|
|
go-version: '1.20'
|
|
|
|
- name: Hash files
|
|
uses: https://gitea.com/actions/go-hashfiles@v0.0.1
|
|
id: get-hash
|
|
with:
|
|
patterns: |-
|
|
**/Project.toml
|
|
|
|
- name: Restore Cache
|
|
uses: actions/cache/restore@v3
|
|
id: cache-restore
|
|
with:
|
|
path: |
|
|
.julia/artifacts
|
|
.julia/packages
|
|
.julia/registries
|
|
key: julia-${{ steps.get-hash.outputs.hash }}
|
|
|
|
- name: Check cache hit
|
|
if: steps.cache-restore.outputs.cache-hit == 'true'
|
|
run: exit 0
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
julia --project=./ -e 'import Pkg; Pkg.instantiate(); Pkg.precompile()'
|
|
julia --project=examples/ -e 'import Pkg; Pkg.develop(Pkg.PackageSpec(path=pwd())); Pkg.instantiate(); Pkg.precompile()'
|
|
julia --project=docs/ -e 'import Pkg; Pkg.develop(Pkg.PackageSpec(path=pwd())); Pkg.instantiate(); Pkg.precompile()'
|
|
|
|
- name: Cache Julia packages
|
|
uses: actions/cache/save@v3
|
|
with:
|
|
path: |
|
|
.julia/artifacts
|
|
.julia/packages
|
|
.julia/registries
|
|
key: julia-${{ steps.get-hash.outputs.hash }}
|
|
|
|
test:
|
|
needs: prepare
|
|
runs-on: arch-latest
|
|
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v3
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Setup Julia environment
|
|
uses: https://github.com/julia-actions/setup-julia@v1.9.2
|
|
with:
|
|
version: '1.9.2'
|
|
|
|
# needed for the file hashing, should be removed when ${{ hashFiles('**/Project.toml') }} is supported in gitea
|
|
- name: Setup go environment
|
|
uses: actions/setup-go@v3
|
|
with:
|
|
go-version: '1.20'
|
|
|
|
- name: Hash files
|
|
uses: https://gitea.com/actions/go-hashfiles@v0.0.1
|
|
id: get-hash
|
|
with:
|
|
patterns: |-
|
|
**/Project.toml
|
|
|
|
- name: Restore cached Julia packages
|
|
uses: actions/cache/restore@v3
|
|
with:
|
|
path: |
|
|
.julia/artifacts
|
|
.julia/packages
|
|
.julia/registries
|
|
key: julia-${{ steps.get-hash.outputs.hash }}
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
julia --project=./ -e 'import Pkg; Pkg.instantiate(); Pkg.precompile()'
|
|
julia --project=examples/ -e 'import Pkg; Pkg.develop(Pkg.PackageSpec(path=pwd())); Pkg.instantiate(); Pkg.precompile()'
|
|
julia --project=docs/ -e 'import Pkg; Pkg.develop(Pkg.PackageSpec(path=pwd())); Pkg.instantiate(); Pkg.precompile()'
|
|
|
|
- name: Format check
|
|
run: |
|
|
julia --project=./ -e 'using JuliaFormatter; format(".", verbose=true, ignore=[".julia/*"])'
|
|
julia --project=./ -e '
|
|
out = Cmd(`git diff --name-only`) |> read |> String
|
|
if out == ""
|
|
exit(0)
|
|
else
|
|
@error "Some files have not been formatted !!!"
|
|
write(stdout, out)
|
|
exit(1)
|
|
end'
|
|
|
|
- name: Run tests
|
|
run: julia --project=./ -t 4 -e 'import Pkg; Pkg.test()' -O0
|
|
|
|
- name: Run examples
|
|
run: julia --project=examples/ -t 4 -e 'include("examples/import_bench.jl")' -O3
|
|
|
|
docs:
|
|
needs: prepare
|
|
runs-on: arch-latest
|
|
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v3
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Setup Julia environment
|
|
uses: https://github.com/julia-actions/setup-julia@v1.9.2
|
|
with:
|
|
version: '1.9.2'
|
|
|
|
# needed for the file hashing, should be removed when ${{ hashFiles('**/Project.toml') }} is supported in gitea
|
|
- name: Setup go environment
|
|
uses: actions/setup-go@v3
|
|
with:
|
|
go-version: '1.20'
|
|
|
|
- name: Hash files
|
|
uses: https://gitea.com/actions/go-hashfiles@v0.0.1
|
|
id: get-hash
|
|
with:
|
|
patterns: |-
|
|
**/Project.toml
|
|
|
|
- name: Restore cached Julia packages
|
|
uses: actions/cache/restore@v3
|
|
with:
|
|
path: |
|
|
.julia/artifacts
|
|
.julia/packages
|
|
.julia/registries
|
|
key: julia-${{ steps.get-hash.outputs.hash }}
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
julia --project=./ -e 'import Pkg; Pkg.instantiate(); Pkg.precompile()'
|
|
julia --project=examples/ -e 'import Pkg; Pkg.develop(Pkg.PackageSpec(path=pwd())); Pkg.instantiate(); Pkg.precompile()'
|
|
julia --project=docs/ -e 'import Pkg; Pkg.develop(Pkg.PackageSpec(path=pwd())); Pkg.instantiate(); Pkg.precompile()'
|
|
|
|
- name: Build docs
|
|
run: julia --project=docs/ docs/make.jl
|
|
|
|
- name: Upload artifacts
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: web-doc
|
|
path: docs/build/
|
|
|
|
#- name: Webhook Trigger
|
|
# uses: https://github.com/zzzze/webhook-trigger@master
|
|
# continue-on-error: true
|
|
# with:
|
|
# data: "{\"event\":\"action_completed\", \"download_url\":\"deckardcain.local:8099/something\"}"
|
|
# webhook_url: ${{ secrets.WEBHOOK_URL }}
|