-
-
Notifications
You must be signed in to change notification settings - Fork 456
123 lines (117 loc) · 3.43 KB
/
Copy patherlang.yml
File metadata and controls
123 lines (117 loc) · 3.43 KB
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
---
name: build
on:
push:
branches:
- master
pull_request:
branches:
- master
permissions:
contents: read
jobs:
# Linux x86_64 - main CI
linux:
name: Linux x86_64 OTP-${{matrix.otp}}
runs-on: ubuntu-latest
strategy:
matrix:
otp: ["27.2", "28.0", "29.0"]
rebar3: ['3.27.0']
steps:
- uses: actions/checkout@v7
with:
submodules: recursive
- uses: erlef/setup-beam@v1
with:
otp-version: ${{matrix.otp}}
rebar3-version: ${{matrix.rebar3}}
- uses: awalsh128/cache-apt-pkgs-action@latest
with:
packages: python3 python3-httpbin python3-pip cmake golang
version: 1.1
- run: |
pip3 install gunicorn
gunicorn -b 127.0.0.1:8000 -b unix:httpbin.sock httpbin:app&
- run: rebar3 xref
- run: rebar3 eunit
- run: rebar3 dialyzer
# Linux ARM64
linux-arm64:
name: Linux ARM64 OTP-${{matrix.otp}}
runs-on: ubuntu-24.04-arm
# The arm64 runner reports ImageOS=ubuntu24-arm64, which setup-beam does
# not map; pin it to ubuntu24 so it resolves the right prebuilt OTP.
env:
ImageOS: ubuntu24
strategy:
matrix:
otp: ["27.2"]
rebar3: ['3.27.0']
steps:
- uses: actions/checkout@v7
with:
submodules: recursive
- uses: erlef/setup-beam@v1
with:
otp-version: ${{matrix.otp}}
rebar3-version: ${{matrix.rebar3}}
- uses: awalsh128/cache-apt-pkgs-action@latest
with:
packages: cmake golang
version: 1.1
- run: rebar3 xref
- run: rebar3 eunit
# macOS ARM64 (Apple Silicon)
macos:
name: macOS ARM64 OTP-${{matrix.otp}}
runs-on: macos-15
strategy:
matrix:
otp: ["27"]
rebar3: ['3.27.0']
steps:
- name: Install Erlang and Go
env:
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: "1"
run: |
brew update
brew install erlang@${{ matrix.otp }} go
echo "$(brew --prefix erlang@${{ matrix.otp }})/bin" >> $GITHUB_PATH
- name: Install rebar3
run: |
wget https://github.com/erlang/rebar3/releases/download/${{ matrix.rebar3 }}/rebar3 && chmod +x rebar3
sudo mv rebar3 /usr/local/bin/ && sudo chmod +x /usr/local/bin/rebar3
- uses: actions/checkout@v7
with:
submodules: recursive
- run: make test
# FreeBSD
freebsd:
name: FreeBSD 14.2 OTP-28
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
with:
submodules: recursive
- name: Test on FreeBSD
uses: vmactions/freebsd-vm@v1
with:
release: "14.2"
usesh: true
prepare: |
pkg install -y pcre2 erlang-runtime28 rebar3 cmake git gmake go llvm18 ca_root_nss
run: |
# Ensure Erlang 28 is in PATH
export PATH="/usr/local/lib/erlang28/bin:$PATH"
echo "Erlang version:"
erl -eval 'erlang:display(erlang:system_info(otp_release)), halt().' -noshell
echo "Architecture:"
uname -m
# Use LLVM 18 clang which fully supports C++20
export CC=/usr/local/bin/clang18
export CXX=/usr/local/bin/clang++18
echo "Using CC=$CC CXX=$CXX"
$CXX --version
git config --global --add safe.directory $GITHUB_WORKSPACE
rebar3 eunit