Compare commits

...

47 Commits

Author SHA1 Message Date
Viral B. Shah
f5a33ec6c0 Merge branch 'main' into cv/release-docs 2025-10-15 23:04:07 -04:00
Viral B. Shah
f1de90aa4e Apply suggestions from code review
Co-authored-by: Dilum Aluthge <dilum@aluthge.com>
2025-10-15 23:03:28 -04:00
dependabot[bot]
8205b4547a Bump actions/cache from 4.2.4 to 4.3.0 (#184)
Bumps [actions/cache](https://github.com/actions/cache) from 4.2.4 to 4.3.0.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](0400d5f644...0057852bfa)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-version: 4.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-01 22:46:25 +02:00
dependabot[bot]
509404de2a Bump pyTooling/Actions from 4.3.0 to 5.4.0 (#181)
Bumps [pyTooling/Actions](https://github.com/pytooling/actions) from 4.3.0 to 5.4.0.
- [Release notes](https://github.com/pytooling/actions/releases)
- [Changelog](https://github.com/pyTooling/Actions/blob/dev/doc/Releases.rst)
- [Commits](33edd82e6f...d6342484cd)

---
updated-dependencies:
- dependency-name: pyTooling/Actions
  dependency-version: 5.4.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-07 14:40:22 +01:00
dependabot[bot]
79b42d2cc0 Bump actions/checkout from 4.2.2 to 5.0.0 (#182)
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.2.2 to 5.0.0.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](11bd71901b...08c6903cd8)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 5.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-01 18:08:09 +02:00
dependabot[bot]
2d7a7cc445 Bump actions/cache from 4.2.3 to 4.2.4 (#180)
Bumps [actions/cache](https://github.com/actions/cache) from 4.2.3 to 4.2.4.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](5a3ec84eff...0400d5f644)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-version: 4.2.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-01 17:51:34 +02:00
dependabot[bot]
46d70a0fdf Bump dcarbone/install-jq-action from 3.1.1 to 3.2.0 (#178)
Bumps [dcarbone/install-jq-action](https://github.com/dcarbone/install-jq-action) from 3.1.1 to 3.2.0.
- [Release notes](https://github.com/dcarbone/install-jq-action/releases)
- [Commits](f0e10f46ff...b7ef57d46e)

---
updated-dependencies:
- dependency-name: dcarbone/install-jq-action
  dependency-version: 3.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-01 11:16:03 +02:00
dependabot[bot]
5aaa1e085e Bump pyTooling/Actions from 4.2.2 to 4.3.0 (#176)
Bumps [pyTooling/Actions](https://github.com/pytooling/actions) from 4.2.2 to 4.3.0.
- [Release notes](https://github.com/pytooling/actions/releases)
- [Changelog](https://github.com/pyTooling/Actions/blob/dev/doc/Releases.rst)
- [Commits](42e17fae05...33edd82e6f)

---
updated-dependencies:
- dependency-name: pyTooling/Actions
  dependency-version: 4.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-01 09:11:02 +01:00
Ian Butterworth
2c5c26f9c8 Fix retry on failure/cancelled example (#174) 2025-04-15 22:00:01 -04:00
Penelope Yong
d9e495f279 Add manual cache save to README (#173) 2025-04-04 21:53:34 -04:00
dependabot[bot]
d10a6fd8f3 Bump pyTooling/Actions from 3.1.1 to 4.2.2 (#170)
Bumps [pyTooling/Actions](https://github.com/pytooling/actions) from 3.1.1 to 4.2.2.
- [Release notes](https://github.com/pytooling/actions/releases)
- [Changelog](https://github.com/pyTooling/Actions/blob/dev/doc/Releases.rst)
- [Commits](9ceefdbf5d...42e17fae05)

---
updated-dependencies:
- dependency-name: pyTooling/Actions
  dependency-version: 4.2.2
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-01 11:10:04 -04:00
dependabot[bot]
1f7b6e036e Bump dcarbone/install-jq-action from 3.0.1 to 3.1.1 (#171)
Bumps [dcarbone/install-jq-action](https://github.com/dcarbone/install-jq-action) from 3.0.1 to 3.1.1.
- [Release notes](https://github.com/dcarbone/install-jq-action/releases)
- [Commits](e397bd8743...f0e10f46ff)

---
updated-dependencies:
- dependency-name: dcarbone/install-jq-action
  dependency-version: 3.1.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-01 11:09:30 -04:00
dependabot[bot]
c1893486c9 Bump actions/cache from 4.2.2 to 4.2.3 (#172)
Bumps [actions/cache](https://github.com/actions/cache) from 4.2.2 to 4.2.3.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](d4323d4df1...5a3ec84eff)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-version: 4.2.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-01 11:09:06 -04:00
Penelope Yong
c231b4e8c0 Output cache-paths and cache-key as well (#169) 2025-04-01 11:08:42 -04:00
John Omotani
e5a7946b4f Link to Github caching docs from README.md (#167)
This can be useful for non-expert users.
2025-03-13 20:59:46 -04:00
dependabot[bot]
9b3f75eff3 Bump actions/cache from 4.2.0 to 4.2.2 (#165)
Bumps [actions/cache](https://github.com/actions/cache) from 4.2.0 to 4.2.2.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](1bd1e32a3b...d4323d4df1)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-01 07:28:08 +00:00
Ian Butterworth
2b1bf4d8a1 fix slashes in windows depot path (#153) 2025-01-09 13:23:45 -06:00
dependabot[bot]
49fd7c4af0 Bump pyTooling/Actions from 1.0.5 to 3.1.1 (#157)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Ian Butterworth <i.r.butterworth@gmail.com>
2025-01-09 13:06:18 -05:00
dependabot[bot]
d343189aad Bump actions/cache from 4.1.2 to 4.2.0 (#156)
Bumps [actions/cache](https://github.com/actions/cache) from 4.1.2 to 4.2.0.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](6849a64899...1bd1e32a3b)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-01 11:41:51 +01:00
dependabot[bot]
315c171d17 Bump actions/checkout from 4.1.7 to 4.2.2 (#150)
* Bump actions/checkout from 4.1.7 to 4.2.2

Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.7 to 4.2.2.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](692973e3d9...11bd71901b)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Apply suggestions from code review

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Mosè Giordano <765740+giordano@users.noreply.github.com>
2024-12-01 21:41:35 +00:00
dependabot[bot]
f4098e6050 Bump actions/cache from 4.0.2 to 4.1.2 (#151)
Bumps [actions/cache](https://github.com/actions/cache) from 4.0.2 to 4.1.2.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](0c45773b62...6849a64899)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-01 13:48:31 +00:00
dependabot[bot]
0c8892ce7f Bump dcarbone/install-jq-action from 2.1.0 to 3.0.1 (#155)
* Bump dcarbone/install-jq-action from 2.1.0 to 3.0.1

Bumps [dcarbone/install-jq-action](https://github.com/dcarbone/install-jq-action) from 2.1.0 to 3.0.1.
- [Release notes](https://github.com/dcarbone/install-jq-action/releases)
- [Commits](8867ddb478...e397bd8743)

---
updated-dependencies:
- dependency-name: dcarbone/install-jq-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* Update action.yml

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Mosè Giordano <765740+giordano@users.noreply.github.com>
2024-12-01 13:47:49 +00:00
Ian Butterworth
824243901f fix windows depot path expansion (#146) 2024-09-23 13:30:40 -04:00
Ian Butterworth
8608484607 Soft fail registry update (#143) 2024-08-31 13:35:05 +02:00
Curtis Vogt
e662c42397 Expand paths which use tilde (#141) 2024-08-30 13:54:55 +01:00
Ian Butterworth
e7913c2cb9 update any cached registries (#140)
* update any cached registries

* add comment

* handle really old julia versions

* Update action.yml

Co-authored-by: Curtis Vogt <curtis.vogt@gmail.com>

---------

Co-authored-by: Curtis Vogt <curtis.vogt@gmail.com>
2024-08-12 10:01:44 -04:00
dependabot[bot]
9ec3abbd64 Bump actions/checkout from 4.1.6 to 4.1.7 (#137) 2024-07-01 07:56:06 -04:00
Curtis Vogt
9b47d1cdb0 Make release instructions more copy/paste-able 2024-06-27 09:47:19 -05:00
Curtis Vogt
580d2b69d8 Fix issues with custom cache eviction (#135)
* Keep latest and default branch cache entries

* Record skipped cache IDs
2024-06-26 16:54:10 -05:00
Dilum Aluthge
e00c08a89a README: document that Bash is required (#132)
* README: document that Bash is required

* Apply suggestions from code review

Co-authored-by: Curtis Vogt <curtis.vogt@gmail.com>

* Update README.md

Co-authored-by: Dilum Aluthge <dilum@aluthge.com>

* Replace ordered list with unordered list

Co-authored-by: Curtis Vogt <curtis.vogt@gmail.com>

---------

Co-authored-by: Curtis Vogt <curtis.vogt@gmail.com>
2024-06-04 13:40:04 -04:00
Dilum Aluthge
bb4225b875 Devdocs: document the process for making a new release of this action (#128)
* Devdocs: document the process for making a new release of this action

* Apply suggestions from code review

Co-authored-by: Curtis Vogt <curtis.vogt@gmail.com>

* Add another note

* Fix a typo

* Recommend creating the lightweight tag locally first

---------

Co-authored-by: Curtis Vogt <curtis.vogt@gmail.com>
2024-05-22 23:57:30 -04:00
dependabot[bot]
8dfc57d68c Bump actions/checkout from 4.1.4 to 4.1.6 (#133)
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.4 to 4.1.6.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](0ad4b8fada...a5ac7e51b4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-22 21:39:06 -04:00
Rik Huijzer
3190fc83db Fix typo in cache-name note (#130)
* Fix typo in `cache-name` note

* Update README.md

* Update README.md

Co-authored-by: Ian Butterworth <i.r.butterworth@gmail.com>

---------

Co-authored-by: Ian Butterworth <i.r.butterworth@gmail.com>
2024-05-21 11:06:50 -04:00
Dilum Aluthge
2185d31b12 Update README to recommend julia-actions/cache@v2 (instead of @v1) (#129) 2024-05-16 11:30:59 -04:00
dependabot[bot]
d48542bb7b Bump actions/cache from 3.3.3 to 4.0.2 (#123)
Bumps [actions/cache](https://github.com/actions/cache) from 3.3.3 to 4.0.2.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](e12d46a63a...0c45773b62)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Dilum Aluthge <dilum@aluthge.com>
2024-05-01 12:53:50 -04:00
dependabot[bot]
caa655642c Bump pyTooling/Actions from 1.0.1 to 1.0.5 (#127)
Bumps [pyTooling/Actions](https://github.com/pytooling/actions) from 1.0.1 to 1.0.5.
- [Release notes](https://github.com/pytooling/actions/releases)
- [Changelog](https://github.com/pyTooling/Actions/blob/main/doc/Releases.rst)
- [Commits](60281e01e2...e9d0dc3dba)

---
updated-dependencies:
- dependency-name: pyTooling/Actions
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Dilum Aluthge <dilum@aluthge.com>
2024-05-01 12:38:23 -04:00
dependabot[bot]
1c20782198 Bump actions/checkout from 4.1.2 to 4.1.4 (#126)
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.2 to 4.1.4.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](9bb56186c3...0ad4b8fada)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-01 10:26:19 -04:00
Ian Butterworth
4b23ab708f update setup-julia to v2 in readme (#124) 2024-04-04 21:03:48 -04:00
dependabot[bot]
cc87ef305e Bump pyTooling/Actions from 0.4.6 to 1.0.1 (#117)
* Bump pyTooling/Actions from 0.4.6 to 1.0.1

Bumps [pyTooling/Actions](https://github.com/pytooling/actions) from 0.4.6 to 1.0.1.
- [Release notes](https://github.com/pytooling/actions/releases)
- [Changelog](https://github.com/pyTooling/Actions/blob/main/doc/Releases.rst)
- [Commits](adef08d3bd...60281e01e2)

---
updated-dependencies:
- dependency-name: pyTooling/Actions
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* Apply suggestions from code review

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Ian Butterworth <i.r.butterworth@gmail.com>
2024-04-04 20:56:26 -04:00
dependabot[bot]
c36389738b Bump actions/checkout from 4.1.1 to 4.1.2 (#118)
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.1 to 4.1.2.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](b4ffde65f4...9bb56186c3)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-04 20:04:17 -04:00
dependabot[bot]
1b0706c0c7 Bump julia-actions/setup-julia from 1 to 2 (#116)
Bumps [julia-actions/setup-julia](https://github.com/julia-actions/setup-julia) from 1 to 2.
- [Release notes](https://github.com/julia-actions/setup-julia/releases)
- [Commits](https://github.com/julia-actions/setup-julia/compare/v1...v2)

---
updated-dependencies:
- dependency-name: julia-actions/setup-julia
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-04 19:47:11 -04:00
Ian Butterworth
8b63b4a15d Update actions/cache to v3.3.3 (#121) 2024-04-04 19:46:22 -04:00
Dilum Aluthge
0413f3b1ae Only run Dependabot once per month, but increase the PR limit (#115) 2024-04-03 11:00:28 -04:00
Mosè Giordano
e8521d4bd2 More accurate info about GitHub cache retion policy (#111) 2024-02-01 07:30:48 -05:00
Rik Huijzer
b1b004ffca Mention why the extra permissions are required (#108) 2024-01-20 11:35:32 -05:00
Sascha Mann
216aaef29a Pin third party action to hash (#106)
Third party actions should never not be pinned to a hash. Otherwise, in case the action repo is taken over by a malicious actor, they can change what runs in all of the workflows that julia-actions/cache is used in as well. Pinning to a hash prevents that.
2024-01-18 10:21:26 -05:00
nathan musoke
3e0649aaee fix: Attempt to install jq on all runners (#105) 2024-01-17 17:38:32 -05:00
6 changed files with 203 additions and 50 deletions

View File

@@ -1,9 +1,10 @@
version: 2 version: 2
updates: updates:
- package-ecosystem: "github-actions"
# Keep dependencies for GitHub Actions up-to-date directory: "/"
- package-ecosystem: 'github-actions'
directory: '/'
schedule: schedule:
interval: 'daily' interval: "monthly"
open-pull-requests-limit: 99
labels:
- "dependencies"
- "github-actions"

View File

@@ -59,13 +59,13 @@ jobs:
env: env:
JULIA_DEPOT_PATH: /tmp/julia-depot JULIA_DEPOT_PATH: /tmp/julia-depot
steps: steps:
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Set cache-name - name: Set cache-name
id: cache-name id: cache-name
shell: bash shell: bash
run: | run: |
echo "cache-name=${{ needs.generate-prefix.outputs.cache-prefix }}-${{ github.job }}" >>"$GITHUB_OUTPUT" echo "cache-name=${{ needs.generate-prefix.outputs.cache-prefix }}-${{ github.job }}" >>"$GITHUB_OUTPUT"
- uses: julia-actions/setup-julia@v1 - uses: julia-actions/setup-julia@v2
with: with:
version: ${{ matrix.version }} version: ${{ matrix.version }}
- name: Save cache - name: Save cache
@@ -117,8 +117,8 @@ jobs:
env: env:
JULIA_DEPOT_PATH: /tmp/julia-depot JULIA_DEPOT_PATH: /tmp/julia-depot
steps: steps:
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- uses: julia-actions/setup-julia@v1 - uses: julia-actions/setup-julia@v2
with: with:
version: ${{ matrix.version }} version: ${{ matrix.version }}
- name: Restore cache - name: Restore cache
@@ -161,7 +161,7 @@ jobs:
outputs: outputs:
cache-name: ${{ steps.cache-name.outputs.cache-name }} cache-name: ${{ steps.cache-name.outputs.cache-name }}
steps: steps:
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Set cache-name - name: Set cache-name
id: cache-name id: cache-name
run: | run: |
@@ -193,7 +193,7 @@ jobs:
needs: test-save-nomatrix needs: test-save-nomatrix
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Restore cache - name: Restore cache
id: cache id: cache
uses: ./ uses: ./
@@ -233,7 +233,7 @@ jobs:
outputs: outputs:
cache-name: ${{ steps.cache-name.outputs.cache-name }} cache-name: ${{ steps.cache-name.outputs.cache-name }}
steps: steps:
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Set cache-name - name: Set cache-name
id: cache-name id: cache-name
run: | run: |
@@ -259,7 +259,7 @@ jobs:
needs: test-save-cloned-registry needs: test-save-cloned-registry
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Add General registry clone - name: Add General registry clone
shell: julia --color=yes {0} shell: julia --color=yes {0}
run: | run: |

View File

@@ -21,14 +21,19 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- uses: julia-actions/setup-julia@v1 - uses: julia-actions/setup-julia@v2
- uses: julia-actions/cache@v1 - uses: julia-actions/cache@v2
- uses: julia-actions/julia-buildpkg@v1 - uses: julia-actions/julia-buildpkg@v1
- uses: julia-actions/julia-runtest@v1 - uses: julia-actions/julia-runtest@v1
``` ```
By default all depot directories called out below are cached. By default all depot directories called out below are cached.
### Requirements
- `jq`: This action uses [`jq`](https://github.com/jqlang/jq) to parse JSON. For GitHub-hosted runners, `jq` is installed by default. On self-hosted runners and custom containers, if `jq` is not already available, this action will automatically use [`dcarbone/install-jq-action`](https://github.com/dcarbone/install-jq-action) to install `jq` (Note: `dcarbone/install-jq-action` requires that `curl` is installed; this may not always be the case in custom containers and self-hosted runners).
- `bash`: This action requires `bash`. For GitHub-hosted runners `bash` is installed by default. Self-hosted runners will need to ensure that `bash` is installed and available on the `PATH`.
### Optional Inputs ### Optional Inputs
- `cache-name` - The cache key prefix. Defaults to `julia-cache;workflow=${{ github.workflow }};job=${{ github.job }}`. The key body automatically includes the OS and, unless disabled with `include-matrix`, the matrix vars. Include any other parameters/details in this prefix to ensure one unique cache key per concurrent job type. - `cache-name` - The cache key prefix. Defaults to `julia-cache;workflow=${{ github.workflow }};job=${{ github.job }}`. The key body automatically includes the OS and, unless disabled with `include-matrix`, the matrix vars. Include any other parameters/details in this prefix to ensure one unique cache key per concurrent job type.
@@ -46,6 +51,8 @@ By default all depot directories called out below are cached.
### Outputs ### Outputs
- `cache-hit` - A boolean value to indicate an exact match was found for the primary key. Returns \"\" when the key is new. Forwarded from actions/cache. - `cache-hit` - A boolean value to indicate an exact match was found for the primary key. Returns \"\" when the key is new. Forwarded from actions/cache.
- `cache-paths` - A list of paths (as a newline-separated string) that were cached.
- `cache-key` - The cache key that was used for this run.
## How It Works ## How It Works
@@ -55,6 +62,13 @@ This cached file is then restored upon the second run, and afterwards resaved un
The benefit of caching is that downloading one big file is quicker than downloading many different files from many different locations The benefit of caching is that downloading one big file is quicker than downloading many different files from many different locations
and precompiling them. and precompiling them.
By default, this action removes caches that were previously made by jobs on the same branch with the same restore key.
GitHub automatically removes old caches after a certain period or when the repository cache allocation is full.
It is, however, more efficient to explicitly remove old caches to improve caching for less frequently run jobs.
For more information about GitHub caching generically, for example how to manually delete caches, see
[this GitHub documentation page](https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/caching-dependencies-to-speed-up-workflows#managing-caches).
### Cache keys ### Cache keys
The cache key that the cache will be saved as is based on: The cache key that the cache will be saved as is based on:
@@ -65,8 +79,8 @@ The cache key that the cache will be saved as is based on:
- The run attempt number - The run attempt number
> [!NOTE] > [!NOTE]
> If in your workflow if you do not use a matrix for concurrency you should make `cache-name` such that it is unique for > If there is job concurrency that is not fully defined by a matrix you should ensure that `cache-name` is
> concurrent jobs, otherwise caching may not be effective. > unique for each concurrent job, otherwise caching may not be effective.
### Cache Retention ### Cache Retention
@@ -76,7 +90,7 @@ This action automatically deletes old caches that match the first 4 fields of th
- The `runner.os` (may be in the matrix too, but included for safety) - The `runner.os` (may be in the matrix too, but included for safety)
Which means your caches files will not grow needlessly. GitHub also deletes cache files after Which means your caches files will not grow needlessly. GitHub also deletes cache files after
[90 days which can be increased in private repos to up to 400 days](https://docs.github.com/en/organizations/managing-organization-settings/configuring-the-retention-period-for-github-actions-artifacts-and-logs-in-your-organization) [7 days of not being accessed](https://docs.github.com/en/actions/using-workflows/caching-dependencies-to-speed-up-workflows#usage-limits-and-eviction-policy), and there is a limit of 10 GB for the total size of cache files associated to each repository.
> [!NOTE] > [!NOTE]
> To allow deletion of caches you will likely need to [grant the following permissions](https://docs.github.com/en/actions/using-jobs/assigning-permissions-to-jobs) > To allow deletion of caches you will likely need to [grant the following permissions](https://docs.github.com/en/actions/using-jobs/assigning-permissions-to-jobs)
@@ -92,6 +106,35 @@ Which means your caches files will not grow needlessly. GitHub also deletes cach
To disable deletion set input `delete-old-caches: 'false'`. To disable deletion set input `delete-old-caches: 'false'`.
### Caching even if an intermediate job fails
Just like [the basic actions/cache workflow](https://github.com/actions/cache), this action has a cache restore step, and also a save step which runs after the workflow completes.
By default, if any job in the workflow fails, the entire workflow will be stopped, and the cache will not be saved.
Due to current limitations in GitHub Actions syntax, there is no built-in option for this action to save the cache even if the job fails.
However, it does output information which you can feed into `actions/cache` yourself to achieve the same effect.
For example, this workflow will ensure that the cache is saved if a step fails (but skipping it if the cache was hit, i.e. there's no need to cache it again).
```yaml
steps:
- uses: actions/checkout@v4
- name: Load Julia packages from cache
id: julia-cache
uses: julia-actions/cache@v2
# do whatever you want here (that might fail)
- name: Save Julia depot cache on cancel or failure
id: julia-cache-save
if: cancelled() || failure()
uses: actions/cache/save@v4
with:
path: |
${{ steps.julia-cache.outputs.cache-paths }}
key: ${{ steps.julia-cache.outputs.cache-key }}
```
### Cache Garbage Collection ### Cache Garbage Collection
Caches are restored and re-saved after every run, retaining the state of the depot throughout runs. Caches are restored and re-saved after every run, retaining the state of the depot throughout runs.

View File

@@ -47,15 +47,18 @@ outputs:
cache-hit: cache-hit:
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. 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 }} value: ${{ steps.hit.outputs.cache-hit }}
cache-paths:
description: The paths that were cached
value: ${{ steps.paths.outputs.cache-paths }}
cache-key:
description: The full cache key used
value: ${{ steps.keys.outputs.key }}
runs: runs:
using: 'composite' using: 'composite'
steps: steps:
- name: Install jq - name: Install jq
# Skip installation on GitHub-hosted runners: uses: dcarbone/install-jq-action@b7ef57d46ece78760b4019dbc4080a1ba2a40b45 # v3.2.0
# https://github.com/orgs/community/discussions/48359#discussioncomment-5323864
if: ${{ !startsWith(runner.name, 'GitHub Actions') }}
uses: dcarbone/install-jq-action@v2.1.0
with: with:
force: false # Skip install when an existing `jq` is present force: false # Skip install when an existing `jq` is present
@@ -69,6 +72,12 @@ runs:
else else
depot="~/.julia" depot="~/.julia"
fi fi
if [[ "$OSTYPE" == "msys" || "$OSTYPE" == "cygwin" ]]; then
depot="${depot/#\~/$USERPROFILE}" # Windows paths
depot="${depot//\\//}" # Replace backslashes with forward slashes
else
depot="${depot/#\~/$HOME}" # Unix-like paths
fi
echo "depot=$depot" | tee -a "$GITHUB_OUTPUT" echo "depot=$depot" | tee -a "$GITHUB_OUTPUT"
cache_paths=() cache_paths=()
@@ -78,7 +87,7 @@ runs:
[ "${{ inputs.cache-packages }}" = "true" ] && cache_paths+=("$packages_path") [ "${{ inputs.cache-packages }}" = "true" ] && cache_paths+=("$packages_path")
registries_path="${depot}/registries" registries_path="${depot}/registries"
if [ "${{ inputs.cache-registries }}" = "true" ]; then if [ "${{ inputs.cache-registries }}" = "true" ]; then
if [ ! -d "${registries_path/#\~/$HOME}" ]; then if [ ! -d "${registries_path}" ]; then
cache_paths+=("$registries_path") cache_paths+=("$registries_path")
else else
echo "::warning::Julia depot registries already exist. Skipping restoring of cached registries to avoid potential merge conflicts when updating. Please ensure that \`julia-actions/cache\` precedes any workflow steps which add registries." echo "::warning::Julia depot registries already exist. Skipping restoring of cached registries to avoid potential merge conflicts when updating. Please ensure that \`julia-actions/cache\` precedes any workflow steps which add registries."
@@ -118,7 +127,7 @@ runs:
env: env:
MATRIX_JSON: ${{ toJSON(matrix) }} MATRIX_JSON: ${{ toJSON(matrix) }}
- uses: actions/cache@4d4ae6ae148a43d0fd1eda1800170683e9882738 - uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
id: cache id: cache
with: with:
path: | path: |
@@ -135,12 +144,44 @@ runs:
du -shc ${{ steps.paths.outputs.depot }}/* || true du -shc ${{ steps.paths.outputs.depot }}/* || true
shell: bash shell: bash
# github and actions/cache doesn't provide a way to update a cache at a given key, so we delete any # issue https://github.com/julia-actions/cache/issues/110
# that match the restore key just before saving the new cache # Pkg may not run `Registry.update()` if a manifest exists, which may exist because of a
# `Pkg.dev` call or because one is added to the repo. So be safe and update cached registries here.
# Older (~v1.0) versions of julia that don't have `Pkg.Registry.update()` seem to always update registries in
# Pkg operations. So this is only necessary for newer julia versions.
- name: Update any cached registries
if: ${{ inputs.cache-registries == 'true' }}
continue-on-error: true
run: |
if [ -d "${{ steps.paths.outputs.depot }}/registries" ] && [ -n "$(ls -A "${{ steps.paths.outputs.depot }}/registries")" ]; then
echo "Registries directory exists and is non-empty. Updating any registries"
julia -e "import Pkg; isdefined(Pkg, :Registry) && Pkg.Registry.update();"
else
echo "Registries directory does not exist or is empty. Skipping registry update"
fi
shell: bash
# GitHub actions cache entries are immutable and cannot be updated. In order to have both the Julia
# depot cache be up-to-date and avoid storing redundant cache entries we'll manually cleanup old
# cache entries before the new cache is saved. However, we need to be careful with our manual
# cleanup as otherwise we can cause cache misses for jobs which would have normally had a cache hit.
# Some scenarios to keep in mind include:
#
# - Job failures result in the post-action for `actions/cache` being skipped. If we delete all cache
# entries for the branch we may have no cache entry available for the next run.
# - We should avoid deleting old cache entries for the default branch since these entries serve as
# the fallback if no earlier cache entry exists on a branch. We can rely on GitHub's default cache
# eviction policy here which will remove the oldest cache entry first.
#
# References:
# - https://github.com/actions/cache/blob/main/tips-and-workarounds.md#update-a-cache
# - https://docs.github.com/en/actions/using-workflows/caching-dependencies-to-speed-up-workflows#usage-limits-and-eviction-policy
# Not windows # Not windows
- uses: pyTooling/Actions/with-post-step@adef08d3bdef092282614f3b683897cefae82ee3 - uses: pyTooling/Actions/with-post-step@d6342484cd335d4c9c63d4f52f267c54d5bc3b19 # v5.4.0
if: ${{ inputs.delete-old-caches != 'false' && runner.OS != 'Windows' }} if: ${{ inputs.delete-old-caches != 'false' &&
github.ref != format('refs/heads/{0}', github.event.repository.default_branch) &&
runner.OS != 'Windows' }}
with: with:
# seems like there has to be a `main` step in this action. Could list caches for info if we wanted # seems like there has to be a `main` step in this action. Could list caches for info if we wanted
# main: julia ${{ github.action_path }}/handle_caches.jl "${{ github.repository }}" "list" # main: julia ${{ github.action_path }}/handle_caches.jl "${{ github.repository }}" "list"
@@ -150,8 +191,10 @@ runs:
GH_TOKEN: ${{ inputs.token }} GH_TOKEN: ${{ inputs.token }}
# Windows (because this action uses command prompt on windows) # Windows (because this action uses command prompt on windows)
- uses: pyTooling/Actions/with-post-step@adef08d3bdef092282614f3b683897cefae82ee3 - uses: pyTooling/Actions/with-post-step@d6342484cd335d4c9c63d4f52f267c54d5bc3b19 # v5.4.0
if: ${{ inputs.delete-old-caches != 'false' && runner.OS == 'Windows' }} if: ${{ inputs.delete-old-caches != 'false' &&
github.ref != format('refs/heads/{0}', github.event.repository.default_branch) &&
runner.OS == 'Windows' }}
with: with:
main: echo "" main: echo ""
post: cd %GITHUB_ACTION_PATH% && julia handle_caches.jl rm "${{ github.repository }}" "${{ steps.keys.outputs.restore-key }}" "${{ github.ref }}" "${{ inputs.delete-old-caches != 'required' }}" post: cd %GITHUB_ACTION_PATH% && julia handle_caches.jl rm "${{ github.repository }}" "${{ steps.keys.outputs.restore-key }}" "${{ github.ref }}" "${{ inputs.delete-old-caches != 'required' }}"

View File

@@ -0,0 +1,55 @@
# Making a new release
In this guide, as an example, `v2.2.0` refers to the version number of the new release that you want to make.
## Part 1: Use the Git CLI to create and push the Git tags
Step 1: Clone the repository:
```bash
git clone git@github.com:julia-actions/cache.git
cd cache
```
Step 2: Create a new lightweight tag of the form `vMAJOR.MINOR.PATCH`.
```bash
# Get the commit SHA of the latest pushed commit on the default branch
git fetch origin --tags --force
commit_sha="$(git rev-parse origin/HEAD)"
# Validate this commit is the one you intend to release
git --no-pager log -1 "${commit_sha:?}"
# Now, create a new lightweight tag of the form `vMAJOR.MINOR.PATCH`.
# Replace `v2.2.0` with the actual version number that you want to use.
tag=v2.2.0
git tag "${tag:?}" "${commit_sha:?}"
```
Step 3: Once you've created the new release, you need to update the major tag to point to the new release. For example, suppose that the previous release was `v2.1.0`, and suppose that you just created the new release `v2.2.0`. You need to update the major tag `v2` so that it points to `v2.2.0`. Here are the commands:
```bash
# Create/update the new major tag locally, where the new major tag will point to the
# release that you created in the previous step.
#
# The `-f` flag forcibly overwrites the old major tag (if it exists).
major_tag="$(echo ${tag:?} | grep -o '^v[0-9]*')"
git tag --force "${major_tag:?}" "${tag:?}"
```
Step 4: Now you need to push the tags:
```bash
# Regular-push the new tag:
git push origin tag "${tag:?}"
# Force-push the new major tag:
git push origin tag "${major_tag:?}" --force
```
## Part 2: Create the GitHub Release
Go to the [Releases](https://github.com/julia-actions/cache/releases) section of this repo and create a new release (using the GitHub web interface).
For the "choose a tag" drop-down field, select the new tag (e.g. `v2.2.0`) that you created and pushed in Part 1 of this guide.

View File

@@ -10,37 +10,48 @@ function handle_caches()
repo, restore_key, ref = ARGS[2:4] repo, restore_key, ref = ARGS[2:4]
allow_failure = ARGS[5] == "true" allow_failure = ARGS[5] == "true"
endpoint = "/repos/$repo/actions/caches"
page = 1 page = 1
per_page = 100 per_page = 100
escaped_restore_key = replace(restore_key, "\"" => "\\\"") skipped = String[]
query = ".actions_caches[] | select(.key | startswith(\"$escaped_restore_key\")) | .id" deleted = String[]
failed = String[]
deletions = String[]
failures = String[]
while 1 <= page <= 5 # limit to avoid accidental rate limiting while 1 <= page <= 5 # limit to avoid accidental rate limiting
cmd = `gh api -X GET $endpoint -F ref=$ref -F per_page=$per_page -F page=$page --jq $query` # https://docs.github.com/en/rest/actions/cache?apiVersion=2022-11-28#list-github-actions-caches-for-a-repository
# Note: The `key` field matches on the full key or a prefix.
cmd = ```
gh api -X GET /repos/$repo/actions/caches
--field per_page=$per_page
--field page=$page
--field ref=$ref
--field key=$restore_key
--field sort=last_accessed_at
--field direction=desc
--jq '.actions_caches[].id'
```
ids = split(read(cmd, String); keepempty=false) ids = split(read(cmd, String); keepempty=false)
page = length(ids) == per_page ? page + 1 : -1
# We can delete all cache entries on this branch that matches the restore key # Avoid deleting the latest used cache entry. This is particularly important for
# because the new cache is saved later. # job failures where a new cache entry will not be saved after this.
page == 1 && !isempty(ids) && push!(skipped, popfirst!(ids))
for id in ids for id in ids
try try
run(`gh cache delete $id --repo $repo`) run(`gh cache delete $id --repo $repo`)
push!(deletions, id) push!(deleted, id)
catch e catch e
@error e @error e
push!(failures, id) push!(failed, id)
end end
end end
page = length(ids) == per_page ? page + 1 : -1
end end
if isempty(failures) && isempty(deletions) if isempty(skipped) && isempty(deleted) && isempty(failed)
println("No existing caches found on ref `$ref` matching restore key `$restore_key`") println("No existing caches found on ref `$ref` matching restore key `$restore_key`")
else else
if !isempty(failures) if !isempty(failed)
println("Failed to delete $(length(failures)) existing caches on ref `$ref` matching restore key `$restore_key`") println("Failed to delete $(length(failed)) existing caches on ref `$ref` matching restore key `$restore_key`")
println.(failures) println.(failed)
@info """ @info """
To delete caches you need to grant the following to the default `GITHUB_TOKEN` by adding To delete caches you need to grant the following to the default `GITHUB_TOKEN` by adding
this to your workflow: this to your workflow:
@@ -55,9 +66,9 @@ function handle_caches()
""" """
allow_failure || exit(1) allow_failure || exit(1)
end end
if !isempty(deletions) if !isempty(deleted)
println("Deleted $(length(deletions)) caches on ref `$ref` matching restore key `$restore_key`") println("Deleted $(length(deleted)) caches on ref `$ref` matching restore key `$restore_key`")
println.(deletions) println.(deleted)
end end
end end
else else