Skip to content

irctest

irctest #3

Workflow file for this run

# 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
on:
pull_request:
push:
schedule:
- cron: 0 0 * * 0
jobs:
build:
if: "!contains(github.event.head_commit.message, '[skip irctest ci]')"
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run configure
run: ./configure --development --disable-auto-extras --prefix=$HOME/.local/
# Speed-up build (6 min -> 5 min)
- name: Precompile inspircd.h
run: c++ -isystem vendor include/inspircd.h
- name: Build and install
env:
CXXFLAGS: -DINSPIRCD_UNLIMITED_MAINLOOP
run: make install --jobs $(($(getconf _NPROCESSORS_ONLN) + 1))
- name: Make artifact tarball
run: |-
cd ~
tar -czf artifacts-inspircd.tar.gz .local/
- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: installed-inspircd-for-irctest
path: ~/artifacts-inspircd.tar.gz
retention-days: 1
test:
if: "!contains(github.event.head_commit.message, '[skip irctest ci]')"
runs-on: ubuntu-latest
env:
IRCTEST_DEBUG_LOGS: "1"
needs:
- build
steps:
- name: Download build artifacts
uses: actions/download-artifact@v4
with:
name: installed-inspircd-for-irctest
path: "~"
- name: Unpack artifacts
run: |-
cd ~
find -name 'artifacts-inspircd.tar.gz' -exec tar -xzf '{}' \;
- name: Checkout irctest
uses: actions/checkout@v4
with:
path: irctest
ref: 2680502dfe496a597bf8fb3cfc08cd3b6a698b17
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'
run: PATH=$HOME/.local/bin:$PATH make -C irctest/ inspircd
- name: Checkout Anope
if: matrix.services == 'anope'
uses: actions/checkout@v4
with:
path: anope
ref: 2.0.15
repository: anope/anope
- name: Build and install Anope
if: matrix.services == 'anope'
run: |
cd $GITHUB_WORKSPACE/anope/
sudo apt-get install ninja-build --no-install-recommends
mkdir build && cd build
cmake -DCMAKE_INSTALL_PREFIX=$HOME/.local/ -DPROGRAM_NAME=anope -GNinja ..
ninja install
- name: Run irctest (Anope services)
if: matrix.services == 'anope'
run: PATH=$HOME/.local/bin:$PATH make -C irctest/ inspircd-anope
- name: Install Atheme
if: matrix.services == 'atheme'
run: sudo apt-get install --assume-yes atheme-services
- name: Run irctest (Atheme services)
if: matrix.services == 'atheme'
run: PATH=$HOME/.local/bin:$PATH make -C irctest/ inspircd-atheme
strategy:
fail-fast: false
matrix:
services:
- no services
- anope
- atheme