forked from apache/couchdb-erlfdb
-
Notifications
You must be signed in to change notification settings - Fork 2
152 lines (146 loc) · 5.29 KB
/
ci.yml
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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
name: CI
on:
push:
branches: [ main, dev ]
pull_request:
permissions:
contents: read
jobs:
eunit:
strategy:
matrix:
otp-version: ['25', '26']
fdb-version: ['7.3.27']
runs-on: ubuntu-22.04
env:
FDB_VERSION: ${{ matrix.fdb-version }}
# Set to 1 for verbose rebar3 logging
DEBUG: 0
# Set to 1 for even more verbose rebar3 logging
DIAGNOSTIC: 0
steps:
- name: Check out repository code
uses: actions/checkout@v4
with:
persist-credentials: false
- name: Setup Erlang
uses: erlef/setup-beam@v1
with:
otp-version: ${{ matrix.otp-version }}
rebar3-version: '3.17'
- name: Install FoundationDB
run: |
wget -q https://github.com/apple/foundationdb/releases/download/${FDB_VERSION}/foundationdb-clients_${FDB_VERSION}-1_amd64.deb
wget -q https://github.com/apple/foundationdb/releases/download/${FDB_VERSION}/foundationdb-server_${FDB_VERSION}-1_amd64.deb
sudo dpkg -i foundationdb-clients_${FDB_VERSION}-1_amd64.deb
sudo dpkg -i foundationdb-server_${FDB_VERSION}-1_amd64.deb
- name: Initialize FDB database
run: fdbcli --exec "configure tenant_mode=optional_experimental"
- name: Compile
run: rebar3 compile
- name: EUnit tests
run: rebar3 eunit
binding_tester:
runs-on: ubuntu-22.04
strategy:
matrix:
test-name: [api, directory, directory_hca, tuple]
api-version: [730]
container:
image: ghcr.io/emqx/couchdb-erlfdb:erlang-26-fdb-7.3.27
services:
foundationdb:
image: foundationdb/foundationdb:7.3.27
env:
REBAR_PROFILE: devcontainer
# Set to 1 for verbose rebar3 logging
DEBUG: 0
# Set to 1 for even more verbose rebar3 logging
DIAGNOSTIC: 0
steps:
- name: Check out repository code
uses: actions/checkout@v4
with:
persist-credentials: false
- name: Compile erlfdb
run: rebar3 compile
- name: Create FDB cluster file
env:
# This needs to match the name of the service above so the script can do
# a DNS lookup to write down the coordinator IP in the fdb.cluster file
FDB_COORDINATOR: foundationdb
shell: bash
run: bash /usr/local/bin/create_cluster_file.bash
- name: Initialize FDB database
run: fdbcli --exec "configure new single ssd tenant_mode=optional_experimental"
- name: Execute unit tests
run: rebar3 eunit
- name: Execute binding test
env:
TEST_NAME: ${{ matrix.test-name }}
API_VERSION: ${{ matrix.api-version }}
COVER_ENABLED: true
ERL_LIBS: _build/devcontainer+test/lib/erlfdb/
run: |
mkdir -p /usr/src/erlfdb/test/
ln -s $GITHUB_WORKSPACE/test/tester.es /usr/src/erlfdb/test/tester.es
/usr/src/foundationdb/bindings/bindingtester/bindingtester.py erlang \
--test-name $TEST_NAME \
--api-version $API_VERSION \
--instruction-prefix $TEST_NAME \
--num-ops 10000
- name: Upload results to Coveralls
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
COVERALLS_FLAG_NAME: bindingtest-${{ matrix.test-name }}-${{ matrix.api-version }}
run: rebar3 as test coveralls send
finalize_coverage_report:
needs: [binding_tester]
runs-on: ubuntu-latest
steps:
- name: Finalize Coveralls report
run: |
curl https://coveralls.io/webhook \
--header 'Content-Type: application/json' \
--data '{
"repo_name": "${{ github.repository }}",
"repo_token": "${{ secrets.GITHUB_TOKEN }}",
"payload": {
"build_num": ${{ github.run_number }},
"status": "done"
}
}'
macos:
strategy:
matrix:
otp-version: ['25', '26']
fdb-version: ['7.3.27']
runs-on: macos-14
env:
FDB_VERSION: ${{ matrix.fdb-version }}
# Set to 1 for verbose rebar3 logging
DEBUG: 0
# Set to 1 for even more verbose rebar3 logging
DIAGNOSTIC: 0
steps:
- name: Check out repository code
uses: actions/checkout@v4
with:
persist-credentials: false
- name: Setup Erlang
run: |
export HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1
brew install erlang@${{ matrix.otp-version }}
echo "$(brew --prefix erlang@${{ matrix.otp-version }})/bin" >> $GITHUB_PATH
wget https://s3.amazonaws.com/rebar3/rebar3
sudo mv rebar3 /usr/local/bin/ && sudo chmod +x /usr/local/bin/rebar3
export "PATH=$(brew --prefix erlang@${{ matrix.otp-version }})/bin:$PATH"
erl -eval 'erlang:display(erlang:system_info(system_version)),halt()'
- name: Install FoundationDB
run: |
wget -q https://github.com/apple/foundationdb/releases/download/${FDB_VERSION}/FoundationDB-${FDB_VERSION}_arm64.pkg
sudo installer -pkg FoundationDB-${FDB_VERSION}_arm64.pkg -target /
- name: Initialize FDB database
run: fdbcli --exec "configure tenant_mode=optional_experimental; status" --timeout 60
- name: Compile
run: rebar3 compile