name: PSM Interop on: pull_request: push: branches: - master permissions: contents: read jobs: unittest: # By default, only version is printed out in parens, e.g. "unittest (3.10)" # This changes it to "unittest (python3.10)" name: "unittest (python${{ matrix.python_version }})" runs-on: ubuntu-latest strategy: matrix: python_version: ["3.9", "3.10", "3.11"] fail-fast: false permissions: pull-requests: read # Used by paths-filter to read the diff. defaults: run: working-directory: 'tools/run_tests/xds_k8s_test_driver' steps: - uses: actions/checkout@v3 # To add this job to required GitHub checks, it's not enough to use # the on.pull_request.paths filter. For required checks, the job needs to # return the success status, and not be skipped. # Using paths-filter action, we skip the setup/test steps when psm interop # files are unchanged, and the job returns success. - uses: dorny/paths-filter@v2 id: paths_filter with: filters: | psm_interop_src: - 'tools/run_tests/xds_k8s_test_driver/**' - 'src/proto/grpc/testing/empty.proto' - 'src/proto/grpc/testing/messages.proto' - 'src/proto/grpc/testing/test.proto' - uses: actions/setup-python@v4 if: ${{ steps.paths_filter.outputs.psm_interop_src == 'true' }} with: python-version: "${{ matrix.python_version }}" cache: 'pip' cache-dependency-path: 'tools/run_tests/xds_k8s_test_driver/requirements.lock' - name: "Install requirements" if: ${{ steps.paths_filter.outputs.psm_interop_src == 'true' }} run: | pip list pip install --upgrade pip setuptools pip list pip install -r requirements.lock pip list - name: "Generate protos" if: ${{ steps.paths_filter.outputs.psm_interop_src == 'true' }} run: > python -m grpc_tools.protoc --proto_path=../../../ --python_out=. --grpc_python_out=. src/proto/grpc/testing/empty.proto src/proto/grpc/testing/messages.proto src/proto/grpc/testing/test.proto - name: "Run unit tests" if: ${{ steps.paths_filter.outputs.psm_interop_src == 'true' }} run: python -m tests.unit