diff --git a/.github/workflows/molecule-template.yml b/.github/workflows/molecule-template.yml deleted file mode 100644 index b99d2ae1..00000000 --- a/.github/workflows/molecule-template.yml +++ /dev/null @@ -1,86 +0,0 @@ ---- -name: Molecule Template -on: - workflow_call: -runs: - using: "composite" - 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 < /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 diff --git a/.github/workflows/test-default.yml b/.github/workflows/test-default.yml index 6e7c4279..e8b315f3 100644 --- a/.github/workflows/test-default.yml +++ b/.github/workflows/test-default.yml @@ -1,10 +1,89 @@ --- -name: Test Default +name: Molecule Template +on: + workflow_call: jobs: molecule: - steps: - - name: Check out the codebase - uses: actions/checkout@e2f20e631ae6d7dd3b768f56a5d2af784dd54791 # v3 2.5.0 - with: - ref: ${{ github.event.pull_request.head.sha }} - - uses: ./.github/workflows/molecule-template.yml + name: Molecule + runs-on: macos-12 + strategy: + matrix: + scenario: + - default + 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 < /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 diff --git a/.github/workflows/test-ipv6.yml b/.github/workflows/test-ipv6.yml index 142620d7..2056d909 100644 --- a/.github/workflows/test-ipv6.yml +++ b/.github/workflows/test-ipv6.yml @@ -1,5 +1,5 @@ --- -name: Test IPv6 +name: Molecule Template on: workflow_call: jobs: @@ -19,4 +19,71 @@ jobs: with: ref: ${{ github.event.pull_request.head.sha }} - - uses: ./.github/workflows/molecule-template.yml + - name: Configure VirtualBox + run: |- + sudo mkdir -p /etc/vbox + cat < /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 diff --git a/.github/workflows/test-single-node.yml b/.github/workflows/test-single-node.yml index 9bb38f76..4cee49c9 100644 --- a/.github/workflows/test-single-node.yml +++ b/.github/workflows/test-single-node.yml @@ -1,5 +1,5 @@ --- -name: Test Single Node +name: Molecule Template on: workflow_call: jobs: @@ -19,4 +19,71 @@ jobs: with: ref: ${{ github.event.pull_request.head.sha }} - - uses: ./.github/workflows/molecule-template.yml + - name: Configure VirtualBox + run: |- + sudo mkdir -p /etc/vbox + cat < /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