From 7e7aef2963f394b513de55deee2b805fae42ed3a Mon Sep 17 00:00:00 2001 From: Josh Gross Date: Wed, 13 Nov 2019 10:55:05 -0500 Subject: [PATCH] Add pip examples (#86) --- examples.md | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/examples.md b/examples.md index bf3633b..b05e531 100644 --- a/examples.md +++ b/examples.md @@ -8,6 +8,7 @@ - [Node - npm](#node---npm) - [Node - Yarn](#node---yarn) - [PHP - Composer](#php---composer) +- [Python - pip](#python---pip) - [Ruby - Gem](#ruby---gem) - [Rust - Cargo](#rust---cargo) - [Swift, Objective-C - Carthage](#swift-objective-c---carthage) @@ -142,6 +143,72 @@ The yarn cache directory will depend on your operating system and version of `ya ${{ runner.os }}-composer- ``` +## Python - pip + +For pip, the cache directory will vary by OS. See https://pip.pypa.io/en/stable/reference/pip_install/#caching + +Locations: + - Ubuntu: `~/.cache/pip` + - Windows: `~\AppData\Local\pip\Cache` + - macOS: `~/Library/Caches/pip` + +### Simple example +```yaml +- uses: actions/cache@v1 + with: + path: ~/.cache/pip + key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} + restore-keys: | + ${{ runner.os }}-pip- +``` + +Replace `~/.cache/pip` with the correct `path` if not using Ubuntu. + +### Multiple OS's in a workflow + +```yaml +- uses: actions/cache@v1 + if: startsWith(runner.os, 'Linux') + with: + path: ~/.cache/pip + key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} + restore-keys: | + ${{ runner.os }}-pip- + +- uses: actions/cache@v1 + if: startsWith(runner.os, 'macOS') + with: + path: ~/Library/Caches/pip + key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} + restore-keys: | + ${{ runner.os }}-pip- + +- uses: actions/cache@v1 + if: startsWith(runner.os, 'Windows') + with: + path: ~\AppData\Local\pip\Cache + key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} + restore-keys: | + ${{ runner.os }}-pip- +``` + +### Using a script to get cache location + +> Note: This uses an internal pip API and may not always work +```yaml +- name: Get pip cache + id: pip-cache + run: | + python -c "from pip._internal.locations import USER_CACHE_DIR; print('::set-output name=dir::' + USER_CACHE_DIR)" + +- uses: actions/cache@v1 + with: + path: ${{ steps.pip-cache.outputs.dir }} + key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} + restore-keys: | + ${{ runner.os }}-pip- +``` + ## Ruby - Gem ```yaml