CI #1762
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| push: | |
| pull_request: | |
| schedule: | |
| - cron: '0 0 * * 2' # 00:00 every Tuesday | |
| jobs: | |
| # This "summary" job exists to simplify setting branch protection | |
| # rules in the GitHub web UI. Without this, we'd have to specify all | |
| # the jobs, including matrix "sub-jobs". Worse, their names change | |
| # when version numbers change. Instead, the idea here is to create a | |
| # single job whose status depends on those other jobs. | |
| summary: | |
| runs-on: ubuntu-latest | |
| needs: [ubuntu, minimal, windows] # the jobs defined below | |
| if: always() | |
| steps: | |
| - name: All tests passed | |
| if: ${{ !(contains(needs.*.result, 'failure')) }} | |
| run: exit 0 | |
| - name: Some tests failed | |
| if: ${{ (contains(needs.*.result, 'failure')) }} | |
| run: exit 1 | |
| ubuntu: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| emacs_version: | |
| - '25.1' # our minimum supported version | |
| - '26.3' | |
| - '30.2' # most recent release | |
| racket_version: | |
| - '7.8' # our minimum supported version | |
| - 'stable' # most recent release | |
| # Also include bleeding edge builds of both Emacs and Racket. | |
| # Might supply useful "early warning" -- but might just flag | |
| # some temporary flaw in those builds, so enable | |
| # continue-on-error. | |
| include: | |
| - emacs_version: 'snapshot' | |
| racket_version: 'current' | |
| continue-on-error: true | |
| name: Ubuntu | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@master | |
| - name: Install Emacs | |
| uses: purcell/setup-emacs@master | |
| with: | |
| version: ${{ matrix.emacs_version }} | |
| - name: Install Racket | |
| uses: Bogdanp/setup-racket@v1.11 | |
| with: | |
| architecture: 'x64' | |
| distribution: 'full' | |
| version: ${{ matrix.racket_version }} | |
| - name: Show versions | |
| run: make show-versions | |
| - name: Install Emacs Packages | |
| run: make deps | |
| - name: Compile Emacs Lisp | |
| run: make compile | |
| - name: Run Emacs Lisp Tests | |
| run: make test-elisp | |
| - name: Run Racket Tests | |
| run: xvfb-run make test-racket | |
| # The motivation for this job is to see if tests are likely to pass | |
| # when run on headless servers such as Debian `buildd` with the | |
| # Minimal Racket distriubtion (or equivalent), plus manually | |
| # installing the Racket packages recommended in our documentation. | |
| # The tests themselves should detect the absence of a display or a | |
| # missing Racket package and skip. See *** in comments below. | |
| minimal: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| emacs_version: | |
| - '30.2' # most recent release | |
| racket_version: | |
| - 'stable' # most recent release | |
| name: Minimal Racket | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@master | |
| - name: Install Emacs | |
| uses: purcell/setup-emacs@master | |
| with: | |
| version: ${{ matrix.emacs_version }} | |
| - name: Install Racket | |
| uses: Bogdanp/setup-racket@v1.11 | |
| with: | |
| architecture: 'x64' | |
| distribution: 'minimal' # *** NOT 'full' | |
| version: ${{ matrix.racket_version }} | |
| - name: Install some non-Minimal Racket packages # *** | |
| run: make minimal-racket-deps | |
| - name: Show versions | |
| run: make show-versions | |
| - name: Install Emacs Packages | |
| run: make deps | |
| - name: Compile Emacs Lisp | |
| run: make compile | |
| - name: Run Emacs Lisp Tests | |
| run: make test-elisp | |
| - name: Run Racket Tests | |
| run: make test-racket # *** do NOT use xvfb-run | |
| windows: | |
| runs-on: windows-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| emacs_version: | |
| - '30.2' # most recent release | |
| racket_version: | |
| - 'stable' # most recent release | |
| name: Windows | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@master | |
| - name: Install Emacs | |
| uses: jcs090218/setup-emacs-windows@master | |
| with: | |
| version: ${{ matrix.emacs_version }} | |
| - name: Install Racket | |
| uses: Bogdanp/setup-racket@v1.11 | |
| with: | |
| architecture: 'x64' | |
| distribution: 'full' | |
| version: ${{ matrix.racket_version }} | |
| - name: Install Emacs Packages | |
| run: make deps | |
| - name: Compile Elisp | |
| run: make compile | |
| - name: Run Emacs Lisp Tests | |
| run: make test-elisp | |
| - name: Run Racket Tests | |
| run: make test-racket |