mirror of
https://github.com/inspircd/inspircd.git
synced 2025-03-10 02:59:01 -04:00
115 lines
3.3 KiB
YAML
115 lines
3.3 KiB
YAML
# 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++ -I 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
|
|
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: 9f33633cc71739cd8e88cc4f3d39fa002cc0f97e
|
|
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
|