From b3b34e32647aebd8ed4a50f0a74a774231b4abdb Mon Sep 17 00:00:00 2001 From: Curtis Vogt Date: Mon, 15 Jan 2024 15:20:46 -0600 Subject: [PATCH] Test cache action against Julia 1.0 and nightly (#101) * CI test action on Julia 1.0 * Avoid quoting Julia shell string * Test against Julia nightly --- .github/workflows/CI.yml | 84 +++++++++++++++++++++++++++++++--------- 1 file changed, 66 insertions(+), 18 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index c6febca..b20426f 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -35,20 +35,32 @@ jobs: needs: generate-key strategy: matrix: - dep: - - name: pandoc_jll - version: "3" + nested: + - name: matrix invalid-chars: "," # Use invalid characters in job matrix to ensure we escape them + version: + - "1.0" + - "1" + - "nightly" os: - ubuntu-latest - windows-latest - macOS-latest + exclude: + # Test Julia "1.0" on Linux only + - version: "1.0" + os: windows-latest + - version: "1.0" + os: macOS-latest fail-fast: false runs-on: ${{ matrix.os }} env: JULIA_DEPOT_PATH: /tmp/julia-depot steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 + - uses: julia-actions/setup-julia@v1 + with: + version: ${{ matrix.version }} - name: Save cache id: cache uses: ./ @@ -56,13 +68,21 @@ jobs: cache-name: ${{ needs.generate-key.outputs.cache-name }}-matrix delete-old-caches: required - name: Check no artifacts dir - shell: 'julia --color=yes {0}' + shell: julia --color=yes {0} run: | dir = joinpath(first(DEPOT_PATH), "artifacts") @assert !isdir(dir) - name: Install a small binary - shell: 'julia --color=yes {0}' - run: 'using Pkg; Pkg.add(PackageSpec(name="${{ matrix.dep.name }}", version="${{ matrix.dep.version }}"))' + shell: julia --color=yes {0} + run: | + using Pkg + if VERSION >= v"1.3" + Pkg.add(PackageSpec(name="pandoc_jll", version="3")) + else + Pkg.add(PackageSpec(name="Scratch", version="1")) + using Scratch + get_scratch!("test") + end # Do tests with no matrix also given the matrix is auto-included in cache key test-save-nomatrix: @@ -77,32 +97,52 @@ jobs: cache-name: ${{ needs.generate-key.outputs.cache-name }}-nomatrix delete-old-caches: required - name: Check no artifacts dir - shell: 'julia --color=yes {0}' + shell: julia --color=yes {0} run: | dir = joinpath(first(DEPOT_PATH), "artifacts") @assert !isdir(dir) - name: Install a small binary - shell: 'julia --color=yes {0}' - run: 'using Pkg; Pkg.add("pandoc_jll")' + shell: julia --color=yes {0} + run: | + using Pkg + if VERSION >= v"1.3" + Pkg.add(PackageSpec(name="pandoc_jll", version="3")) + else + Pkg.add(PackageSpec(name="Scratch", version="1")) + using Scratch + get_scratch!("test") + end test-restore: needs: [generate-key, test-save] strategy: matrix: - dep: - - name: pandoc_jll - version: "3" + nested: + - name: matrix invalid-chars: "," # Use invalid characters in job matrix to ensure we escape them + version: + - "1.0" + - "1" + - "nightly" os: - ubuntu-latest - windows-latest - macOS-latest + exclude: + # Test Julia "1.0" on Linux only + - version: "1.0" + os: windows-latest + - version: "1.0" + os: macOS-latest fail-fast: false runs-on: ${{ matrix.os }} env: JULIA_DEPOT_PATH: /tmp/julia-depot steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 + - uses: julia-actions/setup-julia@v1 + with: + version: ${{ matrix.version }} - name: Restore cache id: cache uses: ./ @@ -111,18 +151,22 @@ jobs: # Cannot require a successful cache delete on forked PRs as the permissions for actions is limited to read delete-old-caches: ${{ github.event.pull_request.head.repo.fork && 'false' || 'required' }} - name: Test cache-hit output - shell: 'julia --color=yes {0}' + shell: julia --color=yes {0} run: | @show ENV["cache-hit"] @assert ENV["cache-hit"] == "true" env: cache-hit: ${{ steps.cache.outputs.cache-hit }} - name: Check existance or emptiness of affected dirs - shell: 'julia --color=yes {0}' + shell: julia --color=yes {0} run: | # These dirs should exist as they've been cached artifacts_dir = joinpath(first(DEPOT_PATH), "artifacts") - @assert !isempty(readdir(artifacts_dir)) + if VERSION >= v"1.3" + @assert !isempty(readdir(artifacts_dir)) + else + @assert !isdir(artifacts_dir) + end packages_dir = joinpath(first(DEPOT_PATH), "packages") @assert !isempty(readdir(packages_dir)) compiled_dir = joinpath(first(DEPOT_PATH), "compiled") @@ -145,18 +189,22 @@ jobs: # Cannot require a successful cache delete on forked PRs as the permissions for actions is limited to read delete-old-caches: ${{ github.event.pull_request.head.repo.fork && 'false' || 'required' }} - name: Test cache-hit output - shell: 'julia --color=yes {0}' + shell: julia --color=yes {0} run: | @show ENV["cache-hit"] @assert ENV["cache-hit"] == "true" env: cache-hit: ${{ steps.cache.outputs.cache-hit }} - name: Check existance or emptiness of affected dirs - shell: 'julia --color=yes {0}' + shell: julia --color=yes {0} run: | # These dirs should exist as they've been cached artifacts_dir = joinpath(first(DEPOT_PATH), "artifacts") - @assert !isempty(readdir(artifacts_dir)) + if VERSION >= v"1.3" + @assert !isempty(readdir(artifacts_dir)) + else + @assert !isdir(artifacts_dir) + end packages_dir = joinpath(first(DEPOT_PATH), "packages") @assert !isempty(readdir(packages_dir)) compiled_dir = joinpath(first(DEPOT_PATH), "compiled")