# 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