]> Sergey Matveev's repositories - bfs.git/blob - .github/workflows/ci.yml
ci/macos: Don't install coreutils
[bfs.git] / .github / workflows / ci.yml
1 name: CI
2
3 on: [push, pull_request]
4
5 jobs:
6   linux:
7     name: Linux
8
9     runs-on: ubuntu-latest
10
11     steps:
12       - uses: actions/checkout@v3
13
14       - name: Install dependencies
15         run: |
16           sudo dpkg --add-architecture i386
17           sudo apt-get update -y
18           sudo apt-get install -y \
19               gcc-multilib \
20               libgcc-s1:i386 \
21               acl \
22               libacl1-dev \
23               libacl1:i386 \
24               attr \
25               libattr1-dev \
26               libattr1:i386 \
27               libcap2-bin \
28               libcap-dev \
29               libcap2:i386 \
30               libonig-dev \
31               libonig5:i386 \
32               liburing-dev
33           # Ubuntu doesn't let you install the -dev packages for both amd64 and
34           # i386 at once, so we make our own symlinks to fix -m32 -lacl -l...
35           sudo ln -s libacl.so.1 /lib/i386-linux-gnu/libacl.so
36           sudo ln -s libattr.so.1 /lib/i386-linux-gnu/libattr.so
37           sudo ln -s libcap.so.2 /lib/i386-linux-gnu/libcap.so
38           sudo ln -s libonig.so.5 /lib/i386-linux-gnu/libonig.so
39
40       - name: Run tests
41         run: |
42           make -j$(nproc) distcheck
43
44   macos:
45     name: macOS
46
47     runs-on: macos-13
48
49     steps:
50       - uses: actions/checkout@v3
51
52       - name: Run tests
53         run: |
54           make -j$(sysctl -n hw.ncpu) distcheck
55
56   freebsd:
57     name: FreeBSD
58
59     if: ${{ github.repository_owner == 'tavianator' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) }}
60
61     runs-on: ubuntu-latest
62
63     concurrency: spurion
64
65     steps:
66       - uses: actions/checkout@v3
67
68       - uses: tailscale/github-action@main
69         with:
70           oauth-client-id: ${{ secrets.TS_OAUTH_CLIENT_ID }}
71           oauth-secret: ${{ secrets.TS_OAUTH_SECRET }}
72           tags: tag:ci
73
74       - name: Configure SSH
75         env:
76           SSH_KEY: ${{ secrets.SSH_KEY }}
77         run: |
78           mkdir ~/.ssh
79           printf '%s' "$SSH_KEY" >~/.ssh/github-actions
80           chmod 0600 ~/.ssh/github-actions
81           printf 'Host %s\n\tStrictHostKeyChecking=accept-new\n\tUser github\n\tIdentityFile ~/.ssh/github-actions\n' "$(tailscale ip -6 spurion)" >~/.ssh/config
82
83       - name: Run tests
84         run: |
85           spurion=$(tailscale ip -6 spurion)
86           rsync -rl --delete . "[$spurion]:bfs"
87           ssh "$spurion" 'gmake -C bfs -j$(sysctl -n hw.ncpu) distcheck CC=clang16'