Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
89 changes: 16 additions & 73 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,10 +44,17 @@ jobs:
- installer
security:
- none
database:
- internal
include:
- certificate_source: default
security: fapolicyd
database: internal
- certificate_source: default
security: none
database: external
runs-on: ubuntu-24.04
name: "Tests (certificate source: ${{ matrix.certificate_source }}, database: ${{ matrix.database }}, security mode: ${{ matrix.security }})"
steps:
- uses: actions/checkout@v6
- name: Set up Python
Expand All @@ -62,7 +69,11 @@ jobs:
run: ./setup-environment
- name: Start VMs
run: |
./forge vms start
./forge vms start --vms "quadlet client ${{ matrix.database == 'external' && 'database' || '' }}"
- name: Configure remote-database
if: matrix.database == 'external'
run: |
./forge remote-database
- name: Configure repositories
run: |
./forge setup-repositories
Expand All @@ -87,7 +98,7 @@ jobs:
./foremanctl pull-images
- name: Run deployment
run: |
./foremanctl deploy --certificate-source=${{ matrix.certificate_source }} --foreman-initial-admin-password=changeme
./foremanctl deploy --certificate-source=${{ matrix.certificate_source }} ${{ matrix.database == 'external' && '--database-mode=external --database-host=database.example.com' || '' }} --foreman-initial-admin-password=changeme
- name: Add optional feature - hammer
run: |
./foremanctl deploy --add-feature hammer
Expand All @@ -96,15 +107,15 @@ jobs:
./foremanctl deploy --add-feature foreman-proxy
- name: Run tests
run: |
./forge test --pytest-args="--certificate-source=${{ matrix.certificate_source }}"
./forge test --pytest-args="--certificate-source=${{ matrix.certificate_source }} --database-mode=${{ matrix.database }}"
- name: Run smoker
run: |
./forge smoker
- name: Archive smoker report
if: ${{ always() }}
uses: actions/upload-artifact@v5
with:
name: smoker-${{ matrix.certificate_source }}-${{ matrix.security }}
name: smoker-${{ matrix.certificate_source }}-${{ matrix.security }}-${{ matrix.database }}
path: "/home/runner/smoker/report/"
- name: Generate sos reports
if: ${{ always() }}
Expand All @@ -113,7 +124,7 @@ jobs:
if: ${{ always() }}
uses: actions/upload-artifact@v5
with:
name: sosreport-${{ matrix.certificate_source }}-${{ matrix.security }}
name: sosreport-${{ matrix.certificate_source }}-${{ matrix.security }}-${{ matrix.database }}
path: sos/
- name: Setup upterm session
if: ${{ failure() }}
Expand Down Expand Up @@ -233,80 +244,12 @@ jobs:
## If no one connects after 5 minutes, shut down server.
wait-timeout-minutes: 5

tests-external-database:
strategy:
fail-fast: false
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v5
- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: '3.12'
- name: Setup libvirt for Vagrant
uses: voxpupuli/setup-vagrant@v0
- name: Install Ansible
run: pip install --upgrade ansible-core
- name: Setup environment
run: ./setup-environment
- name: Start VMs
run: |
./forge vms start --vms "quadlet client database"
- name: Configure remote-database
run: |
./forge remote-database
- name: Configure repositories
run: |
./forge setup-repositories
- name: Run image pull
run: |
./foremanctl pull-images
- name: Run deployment
run: |
./foremanctl deploy --database-mode=external --database-host=database.example.com --foreman-initial-admin-password=changeme
- name: Add optional feature - hammer
run: |
./foremanctl deploy --add-feature hammer
- name: Add optional feature - foreman-proxy
run: |
./foremanctl deploy --add-feature foreman-proxy
- name: Run tests
run: |
./forge test --pytest-args="--database-mode=external"
- name: Run smoker
run: |
./forge smoker
- name: Archive smoker report
if: ${{ always() }}
uses: actions/upload-artifact@v5
with:
name: smoker-external-database
path: "/home/runner/smoker/report/"
- name: Generate sos reports
if: ${{ always() }}
run: ./forge sos
- name: Archive sos reports
if: ${{ always() }}
uses: actions/upload-artifact@v5
with:
name: sosreport-external-database
path: sos/
- name: Setup upterm session
if: ${{ failure() }}
uses: owenthereal/action-upterm@v1
with:
## limits ssh access and adds the ssh public key for the user which triggered the workflow
limit-access-to-actor: true
## If no one connects after 5 minutes, shut down server.
wait-timeout-minutes: 5

# A dummy job that you can mark as a required check instead of each individual test
test-suite:
if: always()
needs:
- tests
- devel-tests
- tests-external-database
- upgrade
- ansible-lint
runs-on: ubuntu-latest
Expand Down
Loading