123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211 |
- name: CI
- on: [push, pull_request]
- env:
- CI: 'true'
- ASAN_OPTIONS: detect_leaks=0
- LC_ALL: en_US.UTF-8
- LANG: en_US.UTF-8
- permissions:
- contents: read # to fetch code (actions/checkout)
- jobs:
- linux:
- name: Linux (python=${{ matrix.pyver }} cc=${{ matrix.cc }} sanitize=${{ matrix.sanitize }})
- runs-on: ubuntu-latest
- env:
- CC: ${{ matrix.cc }}
- KITTY_SANITIZE: ${{ matrix.sanitize }}
- strategy:
- matrix:
- python: [a, b, c]
- cc: [gcc, clang]
- include:
- - python: a
- pyver: "3.9"
- sanitize: 0
- - python: b
- pyver: "3.10"
- sanitize: 1
- - python: c
- pyver: "3.11"
- sanitize: 1
- exclude:
- - python: a
- cc: clang
- - python: b
- cc: clang
- - python: c
- cc: gcc
- steps:
- - name: Checkout source code
- uses: actions/checkout@v3
- with:
- fetch-depth: 10
- - name: Set up Python ${{ matrix.pyver }}
- uses: actions/setup-python@v4
- with:
- python-version: ${{ matrix.pyver }}
- - name: Install Go
- uses: actions/setup-go@v4
- with:
- go-version-file: go.mod
- - name: Build kitty
- run: python .github/workflows/ci.py build
- - name: Test kitty
- run: python .github/workflows/ci.py test
- linux-package:
- name: Linux package
- runs-on: ubuntu-latest
- env:
- CFLAGS: -funsigned-char
- steps:
- - name: Checkout source code
- uses: actions/checkout@v3
- with:
- fetch-depth: 0 # needed for :commit: docs role
- - name: Test for trailing whitespace
- run: if grep -Inr '\s$' kitty kitty_tests kittens docs *.py *.asciidoc *.rst *.go .gitattributes .gitignore; then echo Trailing whitespace found, aborting.; exit 1; fi
- - name: Set up Python
- uses: actions/setup-python@v4
- with:
- python-version: "3.12"
- - name: Install Go
- uses: actions/setup-go@v4
- with:
- go-version-file: go.mod
- cache: false
- - name: Cache Go build artifacts separately
- uses: actions/cache@v3
- with:
- path: |
- ~/.cache/go-build
- ~/go/pkg/mod
- key: ${{ runner.os }}-golang-static-${{ hashFiles('**/go.sum') }}
- restore-keys: |
- ${{ runner.os }}-golang-static-
- - name: Install build-only deps
- run: python -m pip install -r docs/requirements.txt ruff mypy types-requests types-docutils
- - name: Run ruff
- run: ruff check .
- - name: Run gofmt
- run: go version && python .github/workflows/ci.py gofmt
- - name: Build kitty package
- run: python .github/workflows/ci.py package
- - name: Build kitty
- run: python setup.py build --debug
- - name: Run mypy
- run: which python && python -m mypy --version && ./test.py mypy
- - name: Run go vet
- run: go version && go vet ./...
- - name: Build man page
- run: make FAIL_WARN=1 man
- - name: Build HTML docs
- run: make FAIL_WARN=1 html
- - name: Build static kittens
- run: python setup.py build-static-binaries
- bundle:
- name: Bundle test (${{ matrix.os }})
- runs-on: ${{ matrix.os }}
- strategy:
- matrix:
- os: [ubuntu-latest, macos-latest]
- env:
- KITTY_BUNDLE: 1
- steps:
- - name: Checkout source code
- uses: actions/checkout@v3
- with:
- fetch-depth: 10
- - name: Install Go
- uses: actions/setup-go@v4
- with:
- go-version-file: go.mod
- - name: Build kitty
- run: which python3 && python3 .github/workflows/ci.py build
- - name: Test kitty
- run: python3 .github/workflows/ci.py test
- brew:
- name: macOS Brew
- runs-on: macos-latest
- steps:
- - name: Checkout source code
- uses: actions/checkout@v3
- with:
- fetch-depth: 0 # needed for :commit: docs role
- - name: Set up Python
- uses: actions/setup-python@v4
- with:
- python-version: "3.10"
- - name: Install Go
- uses: actions/setup-go@v4
- with:
- go-version-file: go.mod
- - name: Build kitty
- run: python3 .github/workflows/ci.py build
- - name: Test kitty
- run: python3 .github/workflows/ci.py test
- - name: Install deps for docs
- run: python3 -m pip install -r docs/requirements.txt
- - name: Builds docs
- run: make FAIL_WARN=1 docs
- - name: Build kitty package
- run: python3 .github/workflows/ci.py package
- linux-dev:
- name: Test ./dev.sh
- runs-on: ubuntu-latest
- steps:
- - name: Checkout source code
- uses: actions/checkout@v3
- with:
- fetch-depth: 10
- - name: Install build deps
- run: sudo apt-get install -y curl xz-utils build-essential git pkg-config libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev libgl1-mesa-dev libxkbcommon-x11-dev libfontconfig-dev libx11-xcb-dev libdbus-1-dev
- - name: Install Go
- uses: actions/setup-go@v4
- with:
- go-version-file: go.mod
- - name: Build kitty
- run: ./dev.sh build
|