summaryrefslogtreecommitdiffstats
path: root/.github/workflows/ci.yml
blob: 971a4df6bc0a04ea37023139437863e802b16f44 (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
name: CI

on: [push, pull_request]

jobs:
  linux:
    name: Linux

    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3

      - name: Install dependencies
        run: |
          sudo dpkg --add-architecture i386
          sudo apt-get update -y
          sudo apt-get install -y \
              gcc-multilib \
              libgcc-s1:i386 \
              acl \
              libacl1-dev \
              libacl1:i386 \
              attr \
              libattr1-dev \
              libattr1:i386 \
              libcap2-bin \
              libcap-dev \
              libcap2:i386 \
              libonig-dev \
              libonig5:i386 \
              liburing-dev
          # Ubuntu doesn't let you install the -dev packages for both amd64 and
          # i386 at once, so we make our own symlinks to fix -m32 -lacl -l...
          sudo ln -s libacl.so.1 /lib/i386-linux-gnu/libacl.so
          sudo ln -s libattr.so.1 /lib/i386-linux-gnu/libattr.so
          sudo ln -s libcap.so.2 /lib/i386-linux-gnu/libcap.so
          sudo ln -s libonig.so.5 /lib/i386-linux-gnu/libonig.so

      - name: Run tests
        run: |
          make -j$(nproc) distcheck

  macos:
    name: macOS

    runs-on: macos-13

    steps:
      - uses: actions/checkout@v3

      - name: Install dependencies
        run: |
          brew install coreutils

      - name: Run tests
        run: |
          make -j$(sysctl -n hw.ncpu) distcheck

  freebsd:
    name: FreeBSD

    if: ${{ github.repository_owner == 'tavianator' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) }}

    runs-on: ubuntu-latest

    concurrency: spurion

    steps:
      - uses: actions/checkout@v3

      - uses: tailscale/github-action@main
        with:
          oauth-client-id: ${{ secrets.TS_OAUTH_CLIENT_ID }}
          oauth-secret: ${{ secrets.TS_OAUTH_SECRET }}
          tags: tag:ci

      - name: Configure SSH
        env:
          SSH_KEY: ${{ secrets.SSH_KEY }}
        run: |
          mkdir ~/.ssh
          printf '%s' "$SSH_KEY" >~/.ssh/github-actions
          chmod 0600 ~/.ssh/github-actions
          printf 'Host %s\n\tStrictHostKeyChecking=accept-new\n\tUser github\n\tIdentityFile ~/.ssh/github-actions\n' "$(tailscale ip -6 spurion)" >~/.ssh/config

      - name: Run tests
        run: |
          spurion=$(tailscale ip -6 spurion)
          rsync -rl --delete . "[$spurion]:bfs"
          ssh "$spurion" 'gmake -C bfs -j$(sysctl -n hw.ncpu) distcheck CC=clang16'