diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml new file mode 100644 index 0000000..2d5a359 --- /dev/null +++ b/.github/workflows/CI.yml @@ -0,0 +1,67 @@ +name: CI + +on: + push: + branches: + - main + paths: + - 'action.yml' + pull_request: + paths: + - 'action.yml' + +jobs: + test-save: + runs-on: ubuntu-latest + outputs: + cache-name: ${{ steps.name.outputs.cache-name }} + steps: + - uses: actions/checkout@ec3a7ce113134d7a93b817d10a8272cb61118579 + - name: Generate random file + shell: 'julia --color=yes {0}' + run: 'write("random.txt", string(rand(10)))' + - name: Save cache + id: cache + uses: ./ + with: + cache-name: ${{ hashFiles('random.txt') }} + - name: Set cache-name as output + id: name + run: | + echo "Setting outputs.cache-name to \"$CACHE_NAME\"" + echo "::set-output name=cache-name::$CACHE_NAME" + env: + CACHE_NAME: ${{ hashFiles('random.txt') }} + - name: Check no artifacts dir + 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")' + + test-restore: + needs: test-save + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@ec3a7ce113134d7a93b817d10a8272cb61118579 + - name: Restore cache + id: cache + uses: ./ + with: + cache-name: ${{ needs.test-save.outputs.cache-name }} + - name: Test cache-hit output + 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 non-empty artifacts dir + shell: 'julia --color=yes {0}' + run: | + dir = joinpath(first(DEPOT_PATH), "artifacts") + @assert isdir(dir) + @assert !isempty(readdir(dir)) + diff --git a/action.yml b/action.yml index b9e3abb..135ed38 100644 --- a/action.yml +++ b/action.yml @@ -13,7 +13,8 @@ inputs: outputs: cache-hit: - description: 'A boolean value to indicate an exact match was found for the primary key. Forwarded from actions/cache' + description: 'A boolean value to indicate an exact match was found for the primary key. Returns \"\" when the key is new. Forwarded from actions/cache' + value: ${{ steps.hit.outputs.cache-hit }} runs: using: 'composite' @@ -21,14 +22,14 @@ runs: - uses: actions/cache@937d24475381cd9c75ae6db12cb4e79714b926ed id: cache with: - path: ~/.julia/artifacts + path: | + ~/.julia/artifacts key: ${{ runner.os }}-test-${{ inputs.cache-name }}-${{ hashFiles('**/Project.toml') }} restore-keys: | ${{ runner.os }}-test-${{ inputs.cache-name }}- - ${{ runner.os }}-test- - ${{ runner.os }}- - - run: echo "::set-output name=cache-hit::$CACHE_HIT" + - id: hit + run: echo "::set-output name=cache-hit::$(echo $CACHE_HIT)" env: CACHE_HIT: ${{ steps.cache.outputs.cache-hit }} shell: bash