# 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-24.04-arm steps: - name: Checkout repository uses: actions/checkout@v6 - 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++ -std=c++20 -Ivendor 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 inspircd - name: Upload build artifacts uses: actions/upload-artifact@v6 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-24.04-arm env: IRCTEST_DEBUG_LOGS: "1" needs: - build steps: - name: Download build artifacts uses: actions/download-artifact@v7 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@v6 with: path: irctest ref: 6efb42c5643e7930a58e441dbaaba3c6e0c43023 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/inspircd/bin:$PATH make -C irctest inspircd - name: Checkout Anope if: matrix.services == 'anope' uses: actions/checkout@v6 with: path: anope ref: 2.1.21 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/anope -DPROGRAM_NAME=anope -GNinja .. ninja install - name: Run irctest (Anope services) if: matrix.services == 'anope' run: PATH=$HOME/anope/bin:$HOME/inspircd/bin:$PATH make -C irctest inspircd-anope - name: Checkout Atheme if: matrix.services == 'atheme' uses: actions/checkout@v6 with: path: atheme ref: master repository: atheme/atheme submodules: recursive - name: Build and install Atheme if: matrix.services == 'atheme' run: |- cd $GITHUB_WORKSPACE/atheme sudo apt install gettext --assume-yes ./configure --prefix=$HOME/atheme make make install - name: Run irctest (Atheme services) if: matrix.services == 'atheme' run: PATH=$HOME/atheme/bin:$HOME/inspircd/bin:$PATH make -C irctest inspircd-atheme strategy: fail-fast: false matrix: services: - no services - anope # - atheme