aboutsummaryrefslogtreecommitdiff
path: root/.github/workflows/ci.yml
blob: d8fa309850498251cff7ab61227a7e7ba3e3b507 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
name: CI

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

jobs:
  test:
    name: Test (Emacs ${{ matrix.emacs-version }})
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        emacs-version:
          - '26.3'
          - '27.2'
          - '28.2'
          - '29.4'
          - 'snapshot'
    steps:
      - uses: actions/checkout@v4

      - name: Set up Emacs
        uses: jcs090218/setup-emacs@master
        with:
          version: ${{ matrix.emacs-version }}

      - name: Set up Eask
        uses: emacs-eask/setup-eask@master
        with:
          version: 'snapshot'

      - name: Install dependencies
        run: |
          for attempt in 1 2 3; do
            if make deps; then
              exit 0
            fi
            if [ "$attempt" -lt 3 ]; then
              echo "::warning::deps install attempt $attempt failed, retrying in 15s"
              sleep 15
            fi
          done
          echo "::error::deps install failed after 3 attempts"
          exit 1

      - name: Run tests
        run: make test

  lint:
    name: Lint
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Set up Emacs
        uses: jcs090218/setup-emacs@master
        with:
          version: '29.4'

      - name: Set up Eask
        uses: emacs-eask/setup-eask@master
        with:
          version: 'snapshot'

      - name: Install dependencies
        run: |
          for attempt in 1 2 3; do
            if make deps; then
              exit 0
            fi
            if [ "$attempt" -lt 3 ]; then
              echo "::warning::deps install attempt $attempt failed, retrying in 15s"
              sleep 15
            fi
          done
          echo "::error::deps install failed after 3 attempts"
          exit 1

      - name: Run linters
        run: make lint

  coverage:
    name: Coverage
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Set up Emacs
        uses: jcs090218/setup-emacs@master
        with:
          version: '29.4'

      - name: Set up Eask
        uses: emacs-eask/setup-eask@master
        with:
          version: 'snapshot'

      - name: Install dependencies
        run: |
          for attempt in 1 2 3; do
            if make deps; then
              exit 0
            fi
            if [ "$attempt" -lt 3 ]; then
              echo "::warning::deps install attempt $attempt failed, retrying in 15s"
              sleep 15
            fi
          done
          echo "::error::deps install failed after 3 attempts"
          exit 1

      - name: Run coverage
        run: make coverage

      - name: Print coverage summary
        run: python3 scripts/coverage-summary.py

      - name: Upload coverage report
        uses: actions/upload-artifact@v4
        with:
          name: coverage-simplecov
          path: .coverage/simplecov.json
          if-no-files-found: error
          retention-days: 30

      - name: Send coverage to Coveralls
        uses: coverallsapp/github-action@v2
        continue-on-error: true
        with:
          file: .coverage/simplecov.json
          format: simplecov
        env:
          COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }}