on: pull_request: branches: - main # Trigger workflow on GitHub merge queue events # See https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#merge_group merge_group: types: [checks_requested] name: unittest permissions: contents: read jobs: unit: runs-on: ubuntu-latest strategy: matrix: python: ['3.7', '3.8', '3.9', '3.10', "3.11", "3.12"] steps: - name: Checkout uses: actions/checkout@v4 # Use a fetch-depth of 2 to avoid error `fatal: origin/main...HEAD: no merge base` # See https://github.com/googleapis/google-cloud-python/issues/12013 # and https://github.com/actions/checkout#checkout-head. with: fetch-depth: 2 - name: Setup Python uses: actions/setup-python@v5 with: python-version: ${{ matrix.python }} - name: Install nox run: | python -m pip install --upgrade setuptools pip wheel python -m pip install nox - name: Run unit tests env: COVERAGE_FILE: .coverage-${{ matrix.python }} BUILD_TYPE: presubmit TEST_TYPE: unit PY_VERSION: ${{ matrix.python }} run: | ci/run_conditional_tests.sh - name: Upload coverage results uses: actions/upload-artifact@v4 with: name: coverage-artifact-${{ '{{' }} matrix.python {{ '}}' }} path: .coverage-${{ matrix.python }} prerelease: runs-on: ubuntu-latest strategy: matrix: python: ['3.12'] steps: - name: Checkout uses: actions/checkout@v4 # Use a fetch-depth of 2 to avoid error `fatal: origin/main...HEAD: no merge base` # See https://github.com/googleapis/google-cloud-python/issues/12013 # and https://github.com/actions/checkout#checkout-head. with: fetch-depth: 2 - name: Setup Python uses: actions/setup-python@v5 with: python-version: ${{ matrix.python }} - name: Install nox run: | python -m pip install --upgrade setuptools pip wheel python -m pip install nox - name: Run prerelease tests env: BUILD_TYPE: presubmit TEST_TYPE: prerelease PY_VERSION: ${{ matrix.python }} run: | ci/run_conditional_tests.sh cover: runs-on: ubuntu-latest needs: - unit steps: - name: Checkout uses: actions/checkout@v4 # Use a fetch-depth of 2 to avoid error `fatal: origin/main...HEAD: no merge base` # See https://github.com/googleapis/google-cloud-python/issues/12013 # and https://github.com/actions/checkout#checkout-head. with: fetch-depth: 2 - name: Setup Python uses: actions/setup-python@v5 with: python-version: "3.10" - name: Set number of files changes in packages directory id: packages run: echo "::set-output name=num_files_changed::$(git diff HEAD~1 -- packages | wc -l)" - name: Install coverage if: steps.packages.num_files_changed > 0 run: | python -m pip install --upgrade setuptools pip wheel python -m pip install coverage - name: Download coverage results if: ${{ steps.date.packages.num_files_changed > 0 }} uses: actions/download-artifact@v4 with: path: .coverage-results/ - name: Report coverage results if: ${{ steps.date.packages.num_files_changed > 0 }} run: | find .coverage-results -type f -name '*.zip' -exec unzip {} \; coverage combine .coverage-results/**/.coverage* coverage report --show-missing --fail-under=100