Skip to content

Commit 3d6d71e

Browse files
authored
Add cache-key-override to override cache key logic (#135)
1 parent 7605e49 commit 3d6d71e

File tree

2 files changed

+15
-3
lines changed

2 files changed

+15
-3
lines changed

src/commands/install-packages.yml

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,14 @@ description: >
55
For pipenv, no args are provided. Expect the default caching locations for packages and virtualenvs on a debian system with pyenv.
66
77
parameters:
8+
cache-key-override:
9+
type: string
10+
default: ""
11+
description: |
12+
Override the built-in cache key. If set, this value will be used as the cache key for restore_cache/save_cache steps.
13+
You can use CircleCI template functions, e.g.:
14+
cache-key-override: "pip-{{ checksum 'dev-requirements.txt' }}-{{ checksum 'requirements.txt' }}"
15+
If not set, the default cache key logic will be used.
816
pkg-manager:
917
type: enum
1018
enum: [auto, poetry, pipenv, pip, pip-dist, uv]
@@ -112,8 +120,8 @@ steps:
112120
command: <<include(scripts/save-python-version.sh)>>
113121
- restore_cache:
114122
keys:
115-
- <<parameters.cache-version>>-cci_pycache-<<#parameters.include-branch-in-cache-key>>{{ .Branch }}-<</parameters.include-branch-in-cache-key>><<#parameters.include-python-in-cache-key>>{{ checksum "<<parameters.cache-folder-prefix>>/.temp-python-version" }}-<</parameters.include-python-in-cache-key>>{{ checksum "<<parameters.cache-folder-prefix>>/.cci_pycache/lockfile" }}
116-
- <<parameters.cache-version>>-cci_pycache-<<#parameters.include-branch-in-cache-key>>{{ .Branch }}-<</parameters.include-branch-in-cache-key>><<#parameters.include-python-in-cache-key>>{{ checksum "<<parameters.cache-folder-prefix>>/.temp-python-version" }}-<</parameters.include-python-in-cache-key>>
123+
- <<#parameters.cache-key-override>><<parameters.cache-key-override>><</parameters.cache-key-override>><<^parameters.cache-key-override>><<parameters.cache-version>>-cci_pycache-<<#parameters.include-branch-in-cache-key>>{{ .Branch }}-<</parameters.include-branch-in-cache-key>><<#parameters.include-python-in-cache-key>>{{ checksum "<<parameters.cache-folder-prefix>>/.temp-python-version" }}-<</parameters.include-python-in-cache-key>>{{ checksum "<<parameters.cache-folder-prefix>>/.cci_pycache/lockfile" }}<</parameters.cache-key-override>>
124+
- <<^parameters.cache-key-override>><<parameters.cache-version>>-cci_pycache-<<#parameters.include-branch-in-cache-key>>{{ .Branch }}-<</parameters.include-branch-in-cache-key>><<#parameters.include-python-in-cache-key>>{{ checksum "<<parameters.cache-folder-prefix>>/.temp-python-version" }}-<</parameters.include-python-in-cache-key>><</parameters.cache-key-override>>
117125
- run:
118126
name: Move restored cache
119127
working_directory: << parameters.app-dir >>
@@ -217,6 +225,6 @@ steps:
217225
SCRIPT_UTILS: "<<include(scripts/utils.sh)>>"
218226
command: <<include(scripts/cache-save.sh)>>
219227
- save_cache:
220-
key: <<parameters.cache-version>>-cci_pycache-<<#parameters.include-branch-in-cache-key>>{{ .Branch }}-<</parameters.include-branch-in-cache-key>><<#parameters.include-python-in-cache-key>>{{ checksum "<<parameters.cache-folder-prefix>>/.temp-python-version" }}-<</parameters.include-python-in-cache-key>>{{ checksum "<<parameters.cache-folder-prefix>>/.cci_pycache/lockfile" }}
228+
key: <<#parameters.cache-key-override>><<parameters.cache-key-override>><</parameters.cache-key-override>><<^parameters.cache-key-override>><<parameters.cache-version>>-cci_pycache-<<#parameters.include-branch-in-cache-key>>{{ .Branch }}-<</parameters.include-branch-in-cache-key>><<#parameters.include-python-in-cache-key>>{{ checksum "<<parameters.cache-folder-prefix>>/.temp-python-version" }}-<</parameters.include-python-in-cache-key>>{{ checksum "<<parameters.cache-folder-prefix>>/.cci_pycache/lockfile" }}<</parameters.cache-key-override>>
221229
paths:
222230
- <<parameters.cache-folder-prefix>>/.cci_pycache

src/examples/work-with-pip.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,10 @@ usage:
1616
# Install requirements.txt
1717
- python/install-packages:
1818
pkg-manager: pip
19+
# Install dev-requirements.txt with a custom cache key (example)
20+
- python/install-packages:
21+
pkg-manager: pip
22+
cache-key-override: "pip-{{ checksum 'dev-requirements.txt' }}-{{ checksum 'requirements.txt' }}"
1923
# Install dev-requirements.txt
2024
- python/install-packages:
2125
pkg-manager: pip

0 commit comments

Comments
 (0)