blob: 16fc3e55f9f294e11e3781a40c7e82347b4087f6 (
about) (
plain) (
blame)
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
|
# This workflow has four tasks:
#
# 1. the first builds inspircd (with some optimizations for irctest), and uploads it
# to a temporary storage
# 2. the other three download the binary we just built, and run it through inspircd,
# with either Anope, Atheme, or runs service-independent tests
name: irctest
env:
ANOPE_REF: 2.1.24
ATHEME_REF: 23071cdf2c7b20210799218b485f97f06311b41f # 2026-05-12
IRCTEST_REF: 04c531a6d5c6a962e783749c4cccdf03b66c3894 # 2026-06-06
on:
pull_request:
push:
schedule:
- cron: 0 0 * * 0
jobs:
build:
if: "!contains(github.event.head_commit.message, '[skip irctest ci]')"
runs-on: ubuntu-24.04-arm
steps:
- name: Checkout InspIRCd
uses: actions/checkout@v7
- name: Run configure
run: |-
./configure --development --disable-auto-extras --prefix "$HOME/inspircd"
# Speed-up build (6 min -> 5 min)
- name: Precompile inspircd.h
run: |-
c++ -Ivendor include/inspircd.h
- name: Build and install
env:
CXXFLAGS: -DINSPIRCD_UNLIMITED_MAINLOOP
run: |-
make --jobs $(($(getconf _NPROCESSORS_ONLN) + 1)) install
- name: Make artifact tarball
run: |-
tar --create --gzip --verbose --directory "$HOME" --file "${{ runner.temp }}/inspircd.tar.gz" inspircd
- name: Upload build artifact
uses: actions/upload-artifact@v7
with:
name: installed-inspircd-for-irctest
path: ${{ runner.temp }}/inspircd.tar.gz
retention-days: 1
test:
if: "!contains(github.event.head_commit.message, '[skip irctest ci]')"
runs-on: ubuntu-24.04-arm
env:
IRCTEST_DEBUG_LOGS: "1"
needs:
- build
steps:
- name: Download build artifact
uses: actions/download-artifact@v8
with:
name: installed-inspircd-for-irctest
path: ${{ runner.temp }}
- name: Unpack artifact
run: |-
tar --extract --gzip --verbose --directory "$HOME" --file "${{ runner.temp }}/inspircd.tar.gz"
echo "PATH=$HOME/inspircd/bin:$PATH" >> $GITHUB_ENV
- name: Checkout irctest
uses: actions/checkout@v7
with:
path: irctest
ref: ${{ env.IRCTEST_REF }}
repository: progval/irctest
- name: Install irctest dependencies
run: |-
sudo apt-get install --assume-yes faketime python3-pytest
- name: Run irctest (no services)
if: matrix.services == 'no services'
working-directory: irctest
run:
make inspircd
- name: Checkout Anope
if: matrix.services == 'anope'
uses: actions/checkout@v7
with:
path: anope
ref: ${{ env.ANOPE_REF }}
repository: anope/anope
- name: Build and install Anope
if: matrix.services == 'anope'
working-directory: anope
run: |-
sudo apt-get install ninja-build --no-install-recommends
cmake -B build -D CMAKE_INSTALL_PREFIX="$HOME/anope" -G Ninja
ninja -C build install
echo "PATH=$HOME/anope/bin:$PATH" >> $GITHUB_ENV
- name: Run irctest (Anope services)
if: matrix.services == 'anope'
working-directory: irctest
run:
make inspircd-anope
- name: Checkout Atheme
if: matrix.services == 'atheme'
uses: actions/checkout@v7
with:
path: atheme
ref: ${{ env.ATHEME_REF }}
repository: atheme/atheme
submodules: recursive
- name: Build and install Atheme
if: matrix.services == 'atheme'
working-directory: atheme
run: |-
sudo apt-get install gettext --assume-yes
./configure --prefix "$HOME/atheme"
make
make install
echo "PATH=$HOME/atheme/bin:$PATH" >> $GITHUB_ENV
- name: Run irctest (Atheme services)
if: matrix.services == 'atheme'
working-directory: irctest
run:
make inspircd-atheme
strategy:
fail-fast: false
matrix:
services:
- no services
- anope
- atheme
|