| # Copyright (c) 2023 VEXXHOST, Inc. |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); you may |
| # not use this file except in compliance with the License. You may obtain |
| # a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
| # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
| # License for the specific language governing permissions and limitations |
| # under the License. |
| |
| name: ceph |
| |
| on: |
| pull_request: |
| paths-ignore: |
| - go.mod |
| - go.sum |
| workflow_dispatch: |
| inputs: |
| debug_enabled: |
| type: boolean |
| description: 'Run the build with tmate debugging enabled (https://github.com/marketplace/actions/debugging-with-tmate)' |
| required: false |
| default: false |
| network_backend: |
| type: choice |
| description: 'Network backend type' |
| required: true |
| default: 'ovn' |
| options: |
| - openvswitch |
| - ovn |
| |
| jobs: |
| debug: |
| runs-on: v3-standard-16 |
| if: github.event_name == 'workflow_dispatch' && inputs.debug_enabled |
| strategy: |
| fail-fast: false |
| concurrency: |
| group: ${{ github.ref }}-${{ inputs.network_backend }} |
| cancel-in-progress: true |
| steps: |
| - name: Checkout project |
| uses: actions/checkout@v4 |
| |
| - name: Install Poetry |
| run: pipx install poetry |
| |
| - name: Setup Python |
| uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5 |
| with: |
| cache: poetry |
| |
| - name: Install dependencies |
| run: poetry install --no-interaction --with dev |
| |
| # NOTE(mnaser): LVM commands take a long time if there are any existing |
| # loop devices created by "snapd", so we uninstall it. |
| - name: Uninstall "snapd" |
| run: sudo apt-get purge -y snapd |
| |
| - name: Turn off swap |
| run: sudo swapoff -a |
| |
| - name: Run Molecule Converge |
| run: poetry run molecule converge -s ceph |
| env: |
| ATMOSPHERE_NETWORK_BACKEND: ${{ inputs.network_backend }} |
| |
| # Enable tmate debugging of manually-triggered workflows if the input option was provided |
| - name: Setup tmate session |
| if: ${{ failure() }} |
| uses: mxschmitt/action-tmate@v3 |
| timeout-minutes: 60 |
| |
| - name: Run Molecule Destroy |
| run: poetry run molecule destroy -s ceph |
| |
| test: |
| runs-on: v3-standard-16 |
| if: github.event_name != 'workflow_dispatch' || !inputs.debug_enabled |
| strategy: |
| fail-fast: false |
| matrix: |
| network_backend: |
| - openvswitch |
| - ovn |
| concurrency: |
| group: ${{ github.ref }}-${{ matrix.network_backend }} |
| cancel-in-progress: true |
| steps: |
| - name: Checkout project |
| uses: actions/checkout@v4 |
| |
| - name: Install Poetry |
| run: pipx install poetry |
| |
| - name: Setup Python |
| uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5 |
| with: |
| cache: poetry |
| |
| - name: Install dependencies |
| run: poetry install --no-interaction --with dev |
| |
| # NOTE(mnaser): LVM commands take a long time if there are any existing |
| # loop devices created by "snapd", so we uninstall it. |
| - name: Uninstall "snapd" |
| run: sudo apt-get purge -y snapd |
| |
| - name: Turn off swap |
| run: sudo swapoff -a |
| |
| - name: Run Molecule |
| run: poetry run molecule test -s ceph |
| env: |
| ATMOSPHERE_NETWORK_BACKEND: ${{ matrix.network_backend }} |