fix(CI): Break up workflows and use templates #2
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
name: Molecule Template | |
jobs: | |
molecule: | |
name: Molecule | |
runs-on: macos-12 | |
strategy: | |
fail-fast: false | |
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: Configure VirtualBox | |
run: |- | |
sudo mkdir -p /etc/vbox | |
cat <<EOF | sudo tee -a /etc/vbox/networks.conf > /dev/null | |
* 192.168.30.0/24 | |
* fdad:bad:ba55::/64 | |
EOF | |
- name: Cache pip | |
uses: actions/cache@9b0c1fce7a93df8e3bb8926b0d6e9d89e92f20a7 # 3.0.11 | |
with: | |
path: ~/.cache/pip | |
key: ${{ runner.os }}-pip-${{ hashFiles('./requirements.txt') }} | |
restore-keys: | | |
${{ runner.os }}-pip- | |
- name: Cache Vagrant boxes | |
uses: actions/cache@9b0c1fce7a93df8e3bb8926b0d6e9d89e92f20a7 # 3.0.11 | |
with: | |
path: | | |
~/.vagrant.d/boxes | |
key: vagrant-boxes-${{ hashFiles('**/molecule.yml') }} | |
restore-keys: | | |
vagrant-boxes | |
- 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. | |
run: ./.github/download-boxes.sh | |
- 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: 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: Test with molecule | |
run: molecule test --scenario-name ${{ matrix.scenario }} | |
timeout-minutes: 90 | |
env: | |
ANSIBLE_K3S_LOG_DIR: ${{ runner.temp }}/logs/k3s-ansible/${{ matrix.scenario }} | |
ANSIBLE_SSH_RETRIES: 4 | |
ANSIBLE_TIMEOUT: 60 | |
PY_COLORS: 1 | |
ANSIBLE_FORCE_COLOR: 1 | |
- name: Upload log files | |
if: always() # do this even if a step before has failed | |
uses: actions/upload-artifact@83fd05a356d7e2593de66fc9913b3002723633cb # 3.1.1 | |
with: | |
name: logs | |
path: | | |
${{ runner.temp }}/logs | |
- name: Delete old box versions | |
if: always() # do this even if a step before has failed | |
run: vagrant box prune --force |