Files
k3s-ansible/.github/workflows/cache.yml
2024-01-22 16:40:07 -06:00

89 lines
3.2 KiB
YAML

---
name: "Cache"
on:
workflow_call:
jobs:
molecule:
name: cache
runs-on: macos-13
env:
PYTHON_VERSION: "3.11"
steps:
- name: Check out the codebase
uses: actions/checkout@e2f20e631ae6d7dd3b768f56a5d2af784dd54791 # v3 2.5.0
with:
ref: ${{ github.event.pull_request.head.sha }}
- name: Set up Python ${{ env.PYTHON_VERSION }}
uses: actions/setup-python@75f3110429a8c05be0e1bf360334e4cced2b63fa # 2.3.3
with:
python-version: ${{ env.PYTHON_VERSION }}
cache: 'pip' # caching pip dependencies
- name: Cache Ansible
uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # 4.0
id: cache-ansible
with:
path: ~/.ansible/collections
key: ansible-${{ hashFiles('collections/requirements.yml') }}
restore-keys: |
ansible-
- name: Install dependencies
run: |
echo "::group::Upgrade pip"
python3 -m pip install --upgrade pip
echo "::endgroup::"
echo "::group::Install Python requirements from requirements.txt"
python3 -m pip install -r requirements.txt
echo "::endgroup::"
- name: Install ansible dependencies
if: steps.cache-ansible.outputs.cache-hit != 'true' # only run if false since this is just a cache step
run: |
echo "::group::Install Ansible role requirements from collections/requirements.yml"
ansible-galaxy install -r collections/requirements.yml
echo "::endgroup::"
- name: Cache Vagrant boxes
id: cache-vagrant
uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # 4.0
with:
lookup-only: true #if it exists, we don't need to restore and can skip the next step
path: |
~/.vagrant.d/boxes
key: vagrant-boxes-${{ hashFiles('**/molecule.yml') }}
restore-keys: |
vagrant-boxes
- name: Configure Homebrew cache
uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # 4.0
id: cache-homebrew
with:
path: |
~/Library/Caches/Homebrew
/usr/local/Caskroom
key: brew-${{ hashFiles('./Brewfile') }}
restore-keys: brew-
- name: Update Homebrew
if: | # only run if false since this is just a cache step
steps.cache-homebrew.outputs.cache-hit != 'true' || steps.cache-vagrant.outputs.cache-hit != 'true'
run: |
brew update --preinstall
- name: Install Homebrew dependencies
if: | # only run if false since this is just a cache step
steps.cache-homebrew.outputs.cache-hit != 'true' || steps.cache-cache-vagrant.outputs.cache-hit != 'true'
run: |
env HOMEBREW_NO_AUTO_UPDATE=1 brew bundle --no-upgrade --file ./Brewfile
- name: Download Vagrant boxes for all scenarios
# To save some cache space, all scenarios share the same cache key.
# On the other hand, this means that the cache contents should be
# the same across all scenarios. This step ensures that.
if: steps.cache-vagrant.outputs.cache-hit != 'true' # only run if false since this is just a cache step
run: ./.github/download-boxes.sh