fix(CI): Break up workflows and use templates

This commit is contained in:
Timothy Stewart
2023-10-29 14:30:22 -05:00
parent 26aa538e5f
commit 22c1bccd13
2 changed files with 74 additions and 74 deletions

View File

@@ -2,85 +2,85 @@
name: Molecule Template name: Molecule Template
on: on:
workflow_call: workflow_call:
jobs: runs:
molecule: using: "composite"
name: Molecule name: Molecule
runs-on: macos-12 runs-on: macos-12
strategy: strategy:
fail-fast: false fail-fast: false
env: env:
PYTHON_VERSION: "3.11" PYTHON_VERSION: "3.11"
steps: steps:
- name: Check out the codebase - name: Check out the codebase
uses: actions/checkout@e2f20e631ae6d7dd3b768f56a5d2af784dd54791 # v3 2.5.0 uses: actions/checkout@e2f20e631ae6d7dd3b768f56a5d2af784dd54791 # v3 2.5.0
with: with:
ref: ${{ github.event.pull_request.head.sha }} ref: ${{ github.event.pull_request.head.sha }}
- name: Configure VirtualBox - name: Configure VirtualBox
run: |- run: |-
sudo mkdir -p /etc/vbox sudo mkdir -p /etc/vbox
cat <<EOF | sudo tee -a /etc/vbox/networks.conf > /dev/null cat <<EOF | sudo tee -a /etc/vbox/networks.conf > /dev/null
* 192.168.30.0/24 * 192.168.30.0/24
* fdad:bad:ba55::/64 * fdad:bad:ba55::/64
EOF EOF
- name: Cache pip - name: Cache pip
uses: actions/cache@9b0c1fce7a93df8e3bb8926b0d6e9d89e92f20a7 # 3.0.11 uses: actions/cache@9b0c1fce7a93df8e3bb8926b0d6e9d89e92f20a7 # 3.0.11
with: with:
path: ~/.cache/pip path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('./requirements.txt') }} key: ${{ runner.os }}-pip-${{ hashFiles('./requirements.txt') }}
restore-keys: | restore-keys: |
${{ runner.os }}-pip- ${{ runner.os }}-pip-
- name: Cache Vagrant boxes - name: Cache Vagrant boxes
uses: actions/cache@9b0c1fce7a93df8e3bb8926b0d6e9d89e92f20a7 # 3.0.11 uses: actions/cache@9b0c1fce7a93df8e3bb8926b0d6e9d89e92f20a7 # 3.0.11
with: with:
path: | path: |
~/.vagrant.d/boxes ~/.vagrant.d/boxes
key: vagrant-boxes-${{ hashFiles('**/molecule.yml') }} key: vagrant-boxes-${{ hashFiles('**/molecule.yml') }}
restore-keys: | restore-keys: |
vagrant-boxes vagrant-boxes
- name: Download Vagrant boxes for all scenarios - name: Download Vagrant boxes for all scenarios
# To save some cache space, all scenarios share the same cache key. # To save some cache space, all scenarios share the same cache key.
# On the other hand, this means that the cache contents should be # On the other hand, this means that the cache contents should be
# the same across all scenarios. This step ensures that. # the same across all scenarios. This step ensures that.
run: ./.github/download-boxes.sh run: ./.github/download-boxes.sh
- name: Set up Python ${{ env.PYTHON_VERSION }} - name: Set up Python ${{ env.PYTHON_VERSION }}
uses: actions/setup-python@75f3110429a8c05be0e1bf360334e4cced2b63fa # 2.3.3 uses: actions/setup-python@75f3110429a8c05be0e1bf360334e4cced2b63fa # 2.3.3
with: with:
python-version: ${{ env.PYTHON_VERSION }} python-version: ${{ env.PYTHON_VERSION }}
cache: 'pip' # caching pip dependencies cache: 'pip' # caching pip dependencies
- name: Install dependencies - name: Install dependencies
run: | run: |
echo "::group::Upgrade pip" echo "::group::Upgrade pip"
python3 -m pip install --upgrade pip python3 -m pip install --upgrade pip
echo "::endgroup::" echo "::endgroup::"
echo "::group::Install Python requirements from requirements.txt" echo "::group::Install Python requirements from requirements.txt"
python3 -m pip install -r requirements.txt python3 -m pip install -r requirements.txt
echo "::endgroup::" echo "::endgroup::"
- name: Test with molecule - name: Test with molecule
run: molecule test --scenario-name ${{ matrix.scenario }} run: molecule test --scenario-name ${{ matrix.scenario }}
timeout-minutes: 90 timeout-minutes: 90
env: env:
ANSIBLE_K3S_LOG_DIR: ${{ runner.temp }}/logs/k3s-ansible/${{ matrix.scenario }} ANSIBLE_K3S_LOG_DIR: ${{ runner.temp }}/logs/k3s-ansible/${{ matrix.scenario }}
ANSIBLE_SSH_RETRIES: 4 ANSIBLE_SSH_RETRIES: 4
ANSIBLE_TIMEOUT: 60 ANSIBLE_TIMEOUT: 60
PY_COLORS: 1 PY_COLORS: 1
ANSIBLE_FORCE_COLOR: 1 ANSIBLE_FORCE_COLOR: 1
- name: Upload log files - name: Upload log files
if: always() # do this even if a step before has failed if: always() # do this even if a step before has failed
uses: actions/upload-artifact@83fd05a356d7e2593de66fc9913b3002723633cb # 3.1.1 uses: actions/upload-artifact@83fd05a356d7e2593de66fc9913b3002723633cb # 3.1.1
with: with:
name: logs name: logs
path: | path: |
${{ runner.temp }}/logs ${{ runner.temp }}/logs
- name: Delete old box versions - name: Delete old box versions
if: always() # do this even if a step before has failed if: always() # do this even if a step before has failed
run: vagrant box prune --force run: vagrant box prune --force

View File

@@ -1,7 +1,7 @@
--- ---
name: Test Default name: Test Default
runs: jobs:
using: "composite" molecule:
steps: steps:
- name: Check out the codebase - name: Check out the codebase
uses: actions/checkout@e2f20e631ae6d7dd3b768f56a5d2af784dd54791 # v3 2.5.0 uses: actions/checkout@e2f20e631ae6d7dd3b768f56a5d2af784dd54791 # v3 2.5.0