name: CI on: pull_request: types: [opened, synchronize] push: branches: [master] workflow_dispatch: jobs: quality: runs-on: docker steps: - uses: actions/checkout@v4 - name: Set up environment run: make setup - name: Lint all run: | . .venv/bin/activate make lint-all - name: Unit tests with 100% coverage run: | . .venv/bin/activate make pytest-cov - name: Check unit test speed run: | . .venv/bin/activate python3 scripts/check_test_speed.py --max-seconds 10 molecule-tests: needs: quality runs-on: docker strategy: matrix: runner-index: [0, 1, 2] steps: - uses: actions/checkout@v4 - name: Set up environment run: make setup - name: Discover assigned test pairs run: | . .venv/bin/activate PAIRS=$(python3 scripts/distribute_molecule.py --runner-index ${{ matrix.runner-index }} --max-runners 3) echo "Assigned pairs: $PAIRS" echo "TEST_PAIRS=$PAIRS" >> $GITHUB_ENV - name: Run molecule tests run: | set -euo pipefail . .venv/bin/activate python3 scripts/molecule_ci_guard.py $TEST_PAIRS env: GITEA_URL: ${{ github.server_url }} REPO_TOKEN: ${{ secrets.REPO_TOKEN }} RUN_ID: ${{ github.run_id }} JOB_NAME: ${{ github.job }} MATRIX_INDEX: ${{ matrix.runner-index }} GITEA_REPOSITORY: ${{ github.repository }}