Skip to content

Commit 139ec34

Browse files
authored
Isolate PIP cache used by composite actions (#668)
Supersedes #658.
1 parent cd0e24b commit 139ec34

File tree

5 files changed

+48
-64
lines changed

5 files changed

+48
-64
lines changed

composite/action.yml

Lines changed: 14 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -203,58 +203,42 @@ runs:
203203
echo '::endgroup::'
204204
shell: bash
205205

206-
- name: Detect OS
207-
id: os
208-
run: |
209-
# Detect OS
210-
case "$RUNNER_OS" in
211-
Linux*)
212-
echo "pip-cache=~/.cache/pip" >> "$GITHUB_OUTPUT"
213-
;;
214-
macOS*)
215-
echo "pip-cache=~/Library/Caches/pip" >> "$GITHUB_OUTPUT"
216-
;;
217-
Windows*)
218-
echo "pip-cache=~\\AppData\\Local\\pip\\Cache" >> "$GITHUB_OUTPUT"
219-
echo "pip-options=--user" >> "$GITHUB_OUTPUT"
220-
;;
221-
esac
222-
shell: bash
223-
224206
- name: Restore PIP packages cache
225207
uses: actions/cache/restore@v4
226208
id: cache
227209
continue-on-error: true
228210
with:
229-
path: ${{ steps.os.outputs.pip-cache }}
230-
key: enricomi-publish-action-${{ runner.os }}-${{ runner.arch }}-pip-${{ steps.python.outputs.version }}-b0048519e3287ae9cfc634aeda40cbfe
211+
path: .enricomi-publish-action-pip
212+
key: enricomi-publish-action-pip-${{ runner.os }}-${{ runner.arch }}-${{ steps.python.outputs.version }}-b0048519e3287ae9cfc634aeda40cbfe
231213

232214
- name: Create virtualenv
233215
id: venv
234216
continue-on-error: true
235-
env:
236-
PIP_OPTIONS: ${{ steps.os.outputs.pip-options }}
237217
run: |
238218
# Create virtualenv
239219
echo '::group::Create virtualenv'
240220
221+
PIP_OPTIONS=""
222+
# set extra pip option for Windows
223+
if [[ "$RUNNER_OS" == Windows* ]]; then PIP_OPTIONS="--user"; fi
224+
241225
echo "Python that creates venv: $PYTHON_BIN"
242226
243227
echo "Creating virtual environment"
244-
if ! "$PYTHON_BIN" -m virtualenv enricomi-publish-action-venv && ! "$PYTHON_BIN" -m venv enricomi-publish-action-venv
228+
if ! "$PYTHON_BIN" -m virtualenv .enricomi-publish-action-venv && ! "$PYTHON_BIN" -m venv .enricomi-publish-action-venv
245229
then
246230
echo "Looks like there is neither virtualenv nor venv package installed"
247-
if ! "$PYTHON_BIN" -m pip install $PIP_OPTIONS virtualenv && [ -n "$PIP_OPTIONS" ]
231+
if ! "$PYTHON_BIN" -m pip --cache-dir .enricomi-publish-action-pip install $PIP_OPTIONS virtualenv && [ -n "$PIP_OPTIONS" ]
248232
then
249233
echo "Installing virtualenv package with PIP options '$PIP_OPTIONS' failed, now trying without"
250-
if ! "$PYTHON_BIN" -m pip install virtualenv
234+
if ! "$PYTHON_BIN" -m pip --cache-dir .enricomi-publish-action-pip install virtualenv
251235
then
252236
echo "::error::Installing virtualenv package failed"
253237
exit 1
254238
fi
255239
fi
256240
257-
if ! "$PYTHON_BIN" -m virtualenv enricomi-publish-action-venv
241+
if ! "$PYTHON_BIN" -m virtualenv .enricomi-publish-action-venv
258242
then
259243
echo "::error::Cannot create venv after installing virtualenv package"
260244
exit 1
@@ -264,9 +248,9 @@ runs:
264248
echo "Finding Python interpreter in venv"
265249
case "$RUNNER_OS" in
266250
Linux*|macOS*)
267-
PYTHON_VENV="enricomi-publish-action-venv/bin/python";;
251+
PYTHON_VENV=".enricomi-publish-action-venv/bin/python";;
268252
Windows*)
269-
PYTHON_VENV="enricomi-publish-action-venv\\Scripts\\python";;
253+
PYTHON_VENV=".enricomi-publish-action-venv\\Scripts\\python";;
270254
esac
271255
PYTHON_VENV="$("$PYTHON_VENV" -c 'import sys; print(sys.executable)')"
272256
echo "Python in venv: $PYTHON_VENV"
@@ -279,7 +263,7 @@ runs:
279263
run: |
280264
# Install Python dependencies
281265
echo '::group::Install Python dependencies'
282-
"$PYTHON_VENV" -m pip install -r "$GITHUB_ACTION_PATH/../python/requirements-$DEPENDENCIES_VERSION.txt"
266+
"$PYTHON_VENV" -m pip --cache-dir .enricomi-publish-action-pip install -r "$GITHUB_ACTION_PATH/../python/requirements-$DEPENDENCIES_VERSION.txt"
283267
echo '::endgroup::'
284268
shell: bash
285269

@@ -342,7 +326,7 @@ runs:
342326
if: ( success() || failure() ) && ! steps.cache.outputs.cache-hit
343327
continue-on-error: true
344328
with:
345-
path: ${{ steps.os.outputs.pip-cache }}
329+
path: .enricomi-publish-action-pip
346330
key: ${{ steps.cache.outputs.cache-primary-key }}
347331

348332
branding:

linux/action.yml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -202,8 +202,8 @@ runs:
202202
id: cache
203203
continue-on-error: true
204204
with:
205-
path: '~/.cache/pip'
206-
key: enricomi-publish-action-${{ runner.os }}-${{ runner.arch }}-pip-${{ steps.python.outputs.version }}-b0048519e3287ae9cfc634aeda40cbfe
205+
path: .enricomi-publish-action-pip
206+
key: enricomi-publish-action-pip-${{ runner.os }}-${{ runner.arch }}-${{ steps.python.outputs.version }}-b0048519e3287ae9cfc634aeda40cbfe
207207

208208
- name: Create virtualenv
209209
id: venv
@@ -215,24 +215,24 @@ runs:
215215
echo "Python that creates venv: $PYTHON_BIN"
216216
217217
echo "Creating virtual environment"
218-
if ! "$PYTHON_BIN" -m virtualenv enricomi-publish-action-venv && ! "$PYTHON_BIN" -m venv enricomi-publish-action-venv
218+
if ! "$PYTHON_BIN" -m virtualenv .enricomi-publish-action-venv && ! "$PYTHON_BIN" -m venv .enricomi-publish-action-venv
219219
then
220220
echo "Looks like there is neither virtualenv nor venv package installed"
221-
if ! "$PYTHON_BIN" -m pip install virtualenv
221+
if ! "$PYTHON_BIN" -m pip --cache-dir .enricomi-publish-action-pip install virtualenv
222222
then
223223
echo "::error::Installing virtualenv package failed"
224224
exit 1
225225
fi
226226
227-
if ! "$PYTHON_BIN" -m virtualenv enricomi-publish-action-venv
227+
if ! "$PYTHON_BIN" -m virtualenv .enricomi-publish-action-venv
228228
then
229229
echo "::error::Cannot create venv after installing virtualenv package"
230230
exit 1
231231
fi
232232
fi
233233
234234
echo "Finding Python interpreter in venv"
235-
PYTHON_VENV="enricomi-publish-action-venv/bin/python"
235+
PYTHON_VENV=".enricomi-publish-action-venv/bin/python"
236236
PYTHON_VENV="$("$PYTHON_VENV" -c 'import sys; print(sys.executable)')"
237237
echo "Python in venv: $PYTHON_VENV"
238238
echo "PYTHON_VENV=$PYTHON_VENV" >> "$GITHUB_ENV"
@@ -244,7 +244,7 @@ runs:
244244
run: |
245245
# Install Python dependencies
246246
echo '::group::Install Python dependencies'
247-
"$PYTHON_VENV" -m pip install -r "$GITHUB_ACTION_PATH/../python/requirements-$DEPENDENCIES_VERSION.txt"
247+
"$PYTHON_VENV" -m pip --cache-dir .enricomi-publish-action-pip install -r "$GITHUB_ACTION_PATH/../python/requirements-$DEPENDENCIES_VERSION.txt"
248248
echo '::endgroup::'
249249
shell: bash
250250

@@ -307,7 +307,7 @@ runs:
307307
if: ( success() || failure() ) && ! steps.cache.outputs.cache-hit
308308
continue-on-error: true
309309
with:
310-
path: '~/.cache/pip'
310+
path: .enricomi-publish-action-pip
311311
key: ${{ steps.cache.outputs.cache-primary-key }}
312312

313313
branding:

macos/action.yml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -202,8 +202,8 @@ runs:
202202
id: cache
203203
continue-on-error: true
204204
with:
205-
path: '~/Library/Caches/pip'
206-
key: enricomi-publish-action-${{ runner.os }}-${{ runner.arch }}-pip-${{ steps.python.outputs.version }}-b0048519e3287ae9cfc634aeda40cbfe
205+
path: .enricomi-publish-action-pip
206+
key: enricomi-publish-action-pip-${{ runner.os }}-${{ runner.arch }}-${{ steps.python.outputs.version }}-b0048519e3287ae9cfc634aeda40cbfe
207207

208208
- name: Create virtualenv
209209
id: venv
@@ -215,24 +215,24 @@ runs:
215215
echo "Python that creates venv: $PYTHON_BIN"
216216
217217
echo "Creating virtual environment"
218-
if ! "$PYTHON_BIN" -m virtualenv enricomi-publish-action-venv && ! "$PYTHON_BIN" -m venv enricomi-publish-action-venv
218+
if ! "$PYTHON_BIN" -m virtualenv .enricomi-publish-action-venv && ! "$PYTHON_BIN" -m venv .enricomi-publish-action-venv
219219
then
220220
echo "Looks like there is neither virtualenv nor venv package installed"
221-
if ! "$PYTHON_BIN" -m pip install virtualenv
221+
if ! "$PYTHON_BIN" -m pip --cache-dir .enricomi-publish-action-pip install virtualenv
222222
then
223223
echo "::error::Installing virtualenv package failed"
224224
exit 1
225225
fi
226226
227-
if ! "$PYTHON_BIN" -m virtualenv enricomi-publish-action-venv
227+
if ! "$PYTHON_BIN" -m virtualenv .enricomi-publish-action-venv
228228
then
229229
echo "::error::Cannot create venv after installing virtualenv package"
230230
exit 1
231231
fi
232232
fi
233233
234234
echo "Finding Python interpreter in venv"
235-
PYTHON_VENV="enricomi-publish-action-venv/bin/python"
235+
PYTHON_VENV=".enricomi-publish-action-venv/bin/python"
236236
PYTHON_VENV="$("$PYTHON_VENV" -c 'import sys; print(sys.executable)')"
237237
echo "Python in venv: $PYTHON_VENV"
238238
echo "PYTHON_VENV=$PYTHON_VENV" >> "$GITHUB_ENV"
@@ -244,7 +244,7 @@ runs:
244244
run: |
245245
# Install Python dependencies
246246
echo '::group::Install Python dependencies'
247-
"$PYTHON_VENV" -m pip install -r "$GITHUB_ACTION_PATH/../python/requirements-$DEPENDENCIES_VERSION.txt"
247+
"$PYTHON_VENV" -m pip --cache-dir .enricomi-publish-action-pip install -r "$GITHUB_ACTION_PATH/../python/requirements-$DEPENDENCIES_VERSION.txt"
248248
echo '::endgroup::'
249249
shell: bash
250250

@@ -307,7 +307,7 @@ runs:
307307
if: ( success() || failure() ) && ! steps.cache.outputs.cache-hit
308308
continue-on-error: true
309309
with:
310-
path: '~/Library/Caches/pip'
310+
path: .enricomi-publish-action-pip
311311
key: ${{ steps.cache.outputs.cache-primary-key }}
312312

313313
branding:

windows/action.yml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -202,8 +202,8 @@ runs:
202202
id: cache
203203
continue-on-error: true
204204
with:
205-
path: '~\AppData\Local\pip\Cache'
206-
key: enricomi-publish-action-${{ runner.os }}-${{ runner.arch }}-pip-${{ steps.python.outputs.version }}-b0048519e3287ae9cfc634aeda40cbfe
205+
path: .enricomi-publish-action-pip
206+
key: enricomi-publish-action-pip-${{ runner.os }}-${{ runner.arch }}-${{ steps.python.outputs.version }}-b0048519e3287ae9cfc634aeda40cbfe
207207

208208
- name: Create virtualenv
209209
id: venv
@@ -215,24 +215,24 @@ runs:
215215
Write-Output "Python that creates venv: $env:PYTHON_BIN"
216216
217217
Write-Output "Creating virtual environment"
218-
if ( -Not (Invoke-Expression -Command "& '$env:PYTHON_BIN' -m virtualenv enricomi-publish-action-venv" 2> $null) -And -Not (Invoke-Expression -Command "& '$env:PYTHON_BIN' -m venv enricomi-publish-action-venv" 2> $null) ) {
218+
if ( -Not (Invoke-Expression -Command "& '$env:PYTHON_BIN' -m virtualenv .enricomi-publish-action-venv" 2> $null) -And -Not (Invoke-Expression -Command "& '$env:PYTHON_BIN' -m venv .enricomi-publish-action-venv" 2> $null) ) {
219219
Write-Output "Looks like there is neither virtualenv nor venv package installed"
220-
if ( -Not (Invoke-Expression -Command "& '$env:PYTHON_BIN' -m pip install --user virtualenv" 2> $null) ) {
220+
if ( -Not (Invoke-Expression -Command "& '$env:PYTHON_BIN' -m pip --cache-dir .enricomi-publish-action-pip install --user virtualenv" 2> $null) ) {
221221
Write-Output "Installing virtualenv package with PIP option '--user' failed, now trying without"
222-
if ( -Not (Invoke-Expression -Command "& '$env:PYTHON_BIN' -m pip install virtualenv" 2> $null) ) {
222+
if ( -Not (Invoke-Expression -Command "& '$env:PYTHON_BIN' -m pip --cache-dir .enricomi-publish-action-pip install virtualenv" 2> $null) ) {
223223
Write-Output "::error::Installing virtualenv package failed"
224224
Exit 1
225225
}
226226
}
227227
228-
if ( -Not (Invoke-Expression -Command "& '$env:PYTHON_BIN' -m virtualenv enricomi-publish-action-venv" 2> $null) ) {
228+
if ( -Not (Invoke-Expression -Command "& '$env:PYTHON_BIN' -m virtualenv .enricomi-publish-action-venv" 2> $null) ) {
229229
Write-Output "::error::Cannot create venv after installing virtualenv package"
230230
Exit 1
231231
}
232232
}
233233
234234
Write-Output "Finding Python interpreter in venv"
235-
$PYTHON_VENV = enricomi-publish-action-venv\Scripts\python -c "import sys; print(sys.executable)"
235+
$PYTHON_VENV = .enricomi-publish-action-venv\Scripts\python -c "import sys; print(sys.executable)"
236236
Write-Output "Python in venv: $PYTHON_VENV"
237237
"PYTHON_VENV=$PYTHON_VENV" | Out-File -FilePath $env:GITHUB_ENV -Append
238238
} finally {
@@ -245,7 +245,7 @@ runs:
245245
# Install Python dependencies
246246
Write-Output "::group::Install Python dependencies"
247247
try {
248-
Invoke-Expression -Command "& '$env:PYTHON_VENV' -m pip install -r '$env:GITHUB_ACTION_PATH\..\python\requirements-$env:DEPENDENCIES_VERSION.txt'"
248+
Invoke-Expression -Command "& '$env:PYTHON_VENV' -m pip --cache-dir .enricomi-publish-action-pip install -r '$env:GITHUB_ACTION_PATH\..\python\requirements-$env:DEPENDENCIES_VERSION.txt'"
249249
} finally {
250250
Write-Output "::endgroup::"
251251
}
@@ -313,7 +313,7 @@ runs:
313313
if: ( success() || failure() ) && ! steps.cache.outputs.cache-hit
314314
continue-on-error: true
315315
with:
316-
path: '~\AppData\Local\pip\Cache'
316+
path: .enricomi-publish-action-pip
317317
key: ${{ steps.cache.outputs.cache-primary-key }}
318318

319319
branding:

windows/bash/action.yml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -202,8 +202,8 @@ runs:
202202
id: cache
203203
continue-on-error: true
204204
with:
205-
path: '~\AppData\Local\pip\Cache'
206-
key: enricomi-publish-action-${{ runner.os }}-${{ runner.arch }}-pip-${{ steps.python.outputs.version }}-b0048519e3287ae9cfc634aeda40cbfe
205+
path: .enricomi-publish-action-pip
206+
key: enricomi-publish-action-pip-${{ runner.os }}-${{ runner.arch }}-${{ steps.python.outputs.version }}-b0048519e3287ae9cfc634aeda40cbfe
207207

208208
- name: Create virtualenv
209209
id: venv
@@ -215,28 +215,28 @@ runs:
215215
echo "Python that creates venv: $PYTHON_BIN"
216216
217217
echo "Creating virtual environment"
218-
if ! "$PYTHON_BIN" -m virtualenv enricomi-publish-action-venv && ! "$PYTHON_BIN" -m venv enricomi-publish-action-venv
218+
if ! "$PYTHON_BIN" -m virtualenv .enricomi-publish-action-venv && ! "$PYTHON_BIN" -m venv .enricomi-publish-action-venv
219219
then
220220
echo "Looks like there is neither virtualenv nor venv package installed"
221-
if ! "$PYTHON_BIN" -m pip install --user virtualenv
221+
if ! "$PYTHON_BIN" -m pip --cache-dir .enricomi-publish-action-pip install --user virtualenv
222222
then
223223
echo "Installing virtualenv package with PIP options '--user' failed, now trying without"
224-
if ! "$PYTHON_BIN" -m pip install virtualenv
224+
if ! "$PYTHON_BIN" -m pip --cache-dir .enricomi-publish-action-pip install virtualenv
225225
then
226226
echo "::error::Installing virtualenv package failed"
227227
exit 1
228228
fi
229229
fi
230230
231-
if ! "$PYTHON_BIN" -m virtualenv enricomi-publish-action-venv
231+
if ! "$PYTHON_BIN" -m virtualenv .enricomi-publish-action-venv
232232
then
233233
echo "::error::Cannot create venv after installing virtualenv package"
234234
exit 1
235235
fi
236236
fi
237237
238238
echo "Finding Python interpreter in venv"
239-
PYTHON_VENV="enricomi-publish-action-venv\\Scripts\\python"
239+
PYTHON_VENV=".enricomi-publish-action-venv\\Scripts\\python"
240240
PYTHON_VENV="$("$PYTHON_VENV" -c 'import sys; print(sys.executable)')"
241241
echo "Python in venv: $PYTHON_VENV"
242242
echo "PYTHON_VENV=$PYTHON_VENV" >> "$GITHUB_ENV"
@@ -248,7 +248,7 @@ runs:
248248
run: |
249249
# Install Python dependencies
250250
echo '::group::Install Python dependencies'
251-
"$PYTHON_VENV" -m pip install -r "$GITHUB_ACTION_PATH/../../python/requirements-$DEPENDENCIES_VERSION.txt"
251+
"$PYTHON_VENV" -m pip --cache-dir .enricomi-publish-action-pip install -r "$GITHUB_ACTION_PATH/../../python/requirements-$DEPENDENCIES_VERSION.txt"
252252
echo '::endgroup::'
253253
shell: bash
254254

@@ -311,7 +311,7 @@ runs:
311311
if: ( success() || failure() ) && ! steps.cache.outputs.cache-hit
312312
continue-on-error: true
313313
with:
314-
path: '~\AppData\Local\pip\Cache'
314+
path: .enricomi-publish-action-pip
315315
key: ${{ steps.cache.outputs.cache-primary-key }}
316316

317317
branding:

0 commit comments

Comments
 (0)