name: CI on: push: paths-ignore: - 'doc/**' pull_request: paths-ignore: - 'doc/**' jobs: test: runs-on: ubuntu-20.04 strategy: fail-fast: false matrix: image: - ubuntu-daily:jammy - ubuntu-daily:lunar - ubuntu-daily:mantic - ubuntu-daily:noble steps: - uses: actions/checkout@v4 - name: run run: sudo ./scripts/test-in-lxd.sh ${{ matrix.image }} "make check" lint: runs-on: ubuntu-20.04 strategy: fail-fast: false matrix: image: - ubuntu-daily:jammy # match the core snap we're running against # - ubuntu-daily:noble # latest steps: - uses: actions/checkout@v4 - name: lint run: sudo ./scripts/test-in-lxd.sh ${{ matrix.image }} "make lint" format-black: runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v4 - uses: psf/black@stable with: version: "~= 23.0" src: "console_conf subiquity subiquitycore system_setup" format-isort: runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v4 - uses: isort/isort-action@v1 with: isort-version: "5.12.0" sort-paths: "console_conf subiquity subiquitycore system_setup" static-typing: # In this job, we compare the output of mypy before and after the PR. if: github.event_name == 'pull_request' runs-on: ubuntu-22.04 # minimimum 22.04 for python3-typeshed steps: - name: Install mypy and typeshed run: sudo apt-get install -y python3-mypy python3-typeshed - name: Checkout the pull request branch uses: actions/checkout@v4 with: # When no ref is specified, a merge commit (from PR branch to target # branch) will be checked out. Use the last commit of the PR branch # instead. ref: ${{ github.event.pull_request.head.sha }} # By default, no ancestors of the specified revision will be checked # out (see shallow repositories). Let's fetch just enough revisions # so that, later, we can access the most recent common ancestor. # If it does not work, we can set fetch-depth: 0 fetch-depth: $(( ${{ github.event.pull_request.commits }} + 1 )) - name: Run mypy on pull request branch run: python3 -m mypy --ignore-missing-imports --check-untyped-defs subiquity subiquitycore system_setup console_conf scripts/replay-curtin-log.py | tee /tmp/mypy-head.out - name: Determine base commit (most recent common ancestor) id: determine_base_commit run: | ancestor=$(git merge-base -- \ "${{ github.event.pull_request.base.sha }}" \ "${{ github.event.pull_request.head.sha }}") echo "base_commit=$ancestor" >> "$GITHUB_OUTPUT" - name: Checkout the base commit (most recent common ancestor) uses: actions/checkout@v4 with: ref: ${{ steps.determine_base_commit.outputs.base_commit }} - run: git show - name: Run mypy on base commit run: python3 -m mypy --ignore-missing-imports --check-untyped-defs subiquity subiquitycore system_setup console_conf scripts/replay-curtin-log.py | tee /tmp/mypy-base.out - name: Produce the diff between the two mypy runs run: diff --color=always --unified=0 /tmp/mypy-base.out /tmp/mypy-head.out continue-on-error: true