From 711000781746d7690d112a767d848761d916a368 Mon Sep 17 00:00:00 2001 From: Anton Reinhard Date: Sat, 26 Aug 2023 22:39:44 +0200 Subject: [PATCH] CI Workflow fun --- .gitattributes | 4 +- .gitea/workflows/julia-package-ci.yml | 137 +++++++++++++++++++++++--- Project.toml | 1 - examples/Project.toml | 4 - src/models/abc/parse.jl | 8 +- 5 files changed, 129 insertions(+), 25 deletions(-) diff --git a/.gitattributes b/.gitattributes index 074c188..8aff49f 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,2 +1,2 @@ -examples/AB->ABBBBBBB.txt filter=lfs diff=lfs merge=lfs -text -examples/AB->ABBBBBBBBB.txt filter=lfs diff=lfs merge=lfs -text +input/AB->ABBBBBBBBB.txt filter=lfs diff=lfs merge=lfs -text +input/AB->ABBBBBBB.txt filter=lfs diff=lfs merge=lfs -text diff --git a/.gitea/workflows/julia-package-ci.yml b/.gitea/workflows/julia-package-ci.yml index 18496ce..fe35084 100644 --- a/.gitea/workflows/julia-package-ci.yml +++ b/.gitea/workflows/julia-package-ci.yml @@ -3,28 +3,109 @@ name: MetagraphOptimization_CI on: [push] jobs: - test: + prepare: runs-on: arch-latest steps: - #- name: Get git-lfs - # run: apt-get update && apt-get install git-lfs - - name: Checkout repository uses: actions/checkout@v3 with: fetch-depth: 0 - #- name: Checkout LFS objects - # run: git lfs checkout - - 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: Print Runner Info + run: | + echo "Hash value: ${{ steps.get-hash.outputs.hash }}" + + - name: Restore Cache + uses: actions/cache/restore@v3 + id: cache-restore + with: + path: | + /root/.julia/artifacts + /root/.julia/packages + /root/.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()' + 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: | + /root/.julia/artifacts + /root/.julia/packages + /root/.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: | + /root/.julia/artifacts + /root/.julia/packages + /root/.julia/registries + key: julia-${{ steps.get-hash.outputs.hash }} + + # TODO: Remove once the cache actually works + - 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: | @@ -43,9 +124,10 @@ jobs: run: julia --project=./ -t 4 -e 'import Pkg; Pkg.test()' -O0 - name: Run examples - run: julia --project=examples/ -t 4 -e 'import Pkg; Pkg.develop(Pkg.PackageSpec(path=pwd())); Pkg.instantiate(); include("examples/import_bench.jl")' -O3 + run: julia --project=examples/ -t 4 -e 'include("examples/import_bench.jl")' -O3 docs: + needs: prepare runs-on: arch-latest steps: @@ -58,20 +140,47 @@ jobs: 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: | + /root/.julia/artifacts + /root/.julia/packages + /root/.julia/registries + key: julia-${{ steps.get-hash.outputs.hash }} + + # TODO: Remove once the cache actually works + - 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/ -t 4 -e 'import Pkg; Pkg.develop(Pkg.PackageSpec(path=pwd())); Pkg.instantiate()' - julia --project=docs/ docs/make.jl + run: julia --project=docs/ docs/make.jl - name: Upload artifacts uses: actions/upload-artifact@v3 with: name: web-doc - path: build/ + path: docs/build/ - name: Webhook Trigger uses: https://github.com/zzzze/webhook-trigger@master with: - data: "{\"event_type\":\"action_completed\", \"download_url\":\"deckardcain.local:8099/something\"}" + data: "{\"event\":\"action_completed\", \"download_url\":\"deckardcain.local:8099/something\"}" webhook_url: ${{ secrets.WEBHOOK_URL }} diff --git a/Project.toml b/Project.toml index 238caf5..5e8350a 100644 --- a/Project.toml +++ b/Project.toml @@ -6,7 +6,6 @@ version = "0.1.0" [deps] DataStructures = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" JuliaFormatter = "98e50ef6-434e-11e9-1051-2b60c6c9e899" -Printf = "de0858da-6303-5e67-8744-51eddeeeb8d7" Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" UUIDs = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" diff --git a/examples/Project.toml b/examples/Project.toml index 68e6047..ac0e043 100644 --- a/examples/Project.toml +++ b/examples/Project.toml @@ -1,7 +1,3 @@ [deps] BenchmarkTools = "6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf" MetagraphOptimization = "3e869610-d48d-4942-ba70-c1b702a33ca4" -PProf = "e4faabce-9ead-11e9-39d9-4379958e3056" -Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" -ProfileView = "c46f51b8-102a-5cf2-8d2c-8597cb0e0da7" -Revise = "295af30f-e4ad-537b-8983-00126c2a3abe" diff --git a/src/models/abc/parse.jl b/src/models/abc/parse.jl index 1ea6fac..9553dc2 100644 --- a/src/models/abc/parse.jl +++ b/src/models/abc/parse.jl @@ -1,5 +1,3 @@ -using Printf - # functions for importing DAGs from a file regex_a = r"^[A-C]\d+$" # Regex for the initial particles regex_c = r"^[A-C]\(([^']*),([^']*)\)$" # Regex for the combinations of 2 particles @@ -79,9 +77,11 @@ function parse_abc(filename::String, verbose::Bool = false) noNodes += 1 if (noNodes % 100 == 0) if (verbose) - @printf "\rReading Nodes... %.2f%%" ( - 100.0 * noNodes / nodesToRead + percent = string( + round(100.0 * noNodes / nodesToRead, digits = 2), + "%", ) + print("\rReading Nodes... $percent") end end if occursin(regex_a, node)