diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml new file mode 100644 index 000000000..d81952297 --- /dev/null +++ b/.github/dependabot.yaml @@ -0,0 +1,6 @@ +version: 2 +updates: + - package-ecosystem: "github-actions" + directory: "/.github/workflows" + schedule: + interval: "monthly" diff --git a/.github/workflows/pr-smoketest-debian.yaml b/.github/workflows/pr-smoketest-debian.yaml new file mode 100644 index 000000000..f0290c8b3 --- /dev/null +++ b/.github/workflows/pr-smoketest-debian.yaml @@ -0,0 +1,60 @@ +name: Debian +on: + pull_request: + merge_group: + +jobs: + test: + name: Smoketest Debian + runs-on: ubuntu-22.04 + strategy: + fail-fast: false + matrix: + debian: + # Bullseye is the oldest Debian with a new enough glm + - "bullseye" # 11 + - "bookworm" # 12 + - "trixie" # 13 + compiler: + - g++ + - clang + container: debian:${{ matrix.debian }}-slim + steps: + - name: Install Dependencies + env: + DEBIAN_FRONTEND: noninteractive + run: | + apt-get -qq update + apt-get -qq upgrade -y + apt-get -qq install -y --no-install-recommends \ + ca-certificates \ + git \ + ${{ matrix.compiler }} \ + libboost-dev \ + libboost-filesystem-dev \ + libboost-locale-dev \ + libboost-regex-dev \ + libboost-system-dev \ + libcairo2-dev \ + libglew-dev \ + libglm-dev \ + libsdl2-dev \ + libsdl2-image-dev \ + libsdl2-mixer-dev \ + libsdl2-ttf-dev \ + libvorbis-dev \ + make + + - name: Checkout Anura + uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + with: + submodules: true + + - name: Build Anura + env: + CXX: ${{ matrix.compiler }} + # Number of cores * 3 + run: make -j "$(($(getconf _NPROCESSORS_ONLN) * 3))" + + - name: Run Unit Tests + run: ./anura --tests diff --git a/.github/workflows/pr-smoketest-fedora.yaml b/.github/workflows/pr-smoketest-fedora.yaml new file mode 100644 index 000000000..ed1ac6cb8 --- /dev/null +++ b/.github/workflows/pr-smoketest-fedora.yaml @@ -0,0 +1,58 @@ +name: Fedora +on: + pull_request: + merge_group: + +jobs: + test: + name: Smoketest Fedora + runs-on: ubuntu-22.04 + strategy: + fail-fast: false + matrix: + fedora: + # 32 is the oldest Fedora with a new enough glm + - "32" + - "33" + - "34" + - "35" + - "36" + - "37" + - "38" + - "39" + compiler: + - g++ + - clang + container: fedora:${{ matrix.fedora }} + steps: + - name: Install Dependencies + run: | + dnf -y update + dnf -y install \ + git \ + ${{ matrix.compiler }} \ + make \ + which \ + SDL2-devel \ + boost-devel \ + glm-devel \ + glew-devel \ + cairo-devel \ + SDL2_ttf-devel \ + SDL2_image-devel \ + SDL2_mixer-devel \ + libvorbis-devel + + - name: Checkout Anura + uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + with: + submodules: true + + - name: Build Anura + env: + CXX: ${{ matrix.compiler }} + # Number of cores * 3 + run: make -j "$(($(getconf _NPROCESSORS_ONLN) * 3))" + + - name: Run Unit Tests + run: ./anura --tests diff --git a/.github/workflows/pr-smoketest-opensuse-leap.yaml b/.github/workflows/pr-smoketest-opensuse-leap.yaml new file mode 100644 index 000000000..89f3ce68e --- /dev/null +++ b/.github/workflows/pr-smoketest-opensuse-leap.yaml @@ -0,0 +1,68 @@ +name: openSUSE Leap +on: + pull_request: + merge_group: + +jobs: + test: + name: Smoketest openSUSE Leap + runs-on: ubuntu-22.04 + strategy: + fail-fast: false + matrix: + suse: + # 15.3 is the oldest openSUSE Leap with a new enough glm + - "15.3" + - "15.4" + - "15.5" + compiler: + - g++ + - clang + container: opensuse/leap:${{ matrix.suse }} + steps: + - name: Resolve Compiler Package Name + run: | + if [[ ${{ matrix.compiler }} == g++ ]] + then + echo compiler=gcc-c++ >> "$GITHUB_ENV" + else + echo compiler=clang >> "$GITHUB_ENV" + fi + + - name: Install Dependencies + run: | + zypper --non-interactive update + zypper --non-interactive install \ + git \ + ${{ env.compiler }} \ + make \ + which \ + libSDL2-devel \ + glm-devel \ + glew-devel \ + boost-devel \ + libSDL2_image-devel \ + cairo-devel \ + libSDL2_ttf-devel \ + libSDL2_mixer-devel \ + libvorbis-devel \ + libicu-devel \ + libboost_system*6*devel \ + libboost_locale*6*devel \ + libboost_regex*6*devel \ + libboost_filesystem*6*devel \ + libboost_thread*6*devel + + - name: Checkout Anura + uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + with: + submodules: true + + - name: Build Anura + env: + CXX: ${{ matrix.compiler }} + # Number of cores * 3 + run: make -j "$(($(getconf _NPROCESSORS_ONLN) * 3))" + + - name: Run Unit Tests + run: ./anura --tests diff --git a/.github/workflows/pr-smoketest-ubuntu.yaml b/.github/workflows/pr-smoketest-ubuntu.yaml new file mode 100644 index 000000000..3249d5260 --- /dev/null +++ b/.github/workflows/pr-smoketest-ubuntu.yaml @@ -0,0 +1,57 @@ +name: Ubuntu +on: + pull_request: + merge_group: + +jobs: + test: + name: Smoketest Ubuntu + runs-on: ubuntu-22.04 + strategy: + fail-fast: false + matrix: + ubuntu: + - "22.04" # LTS only for sanity + compiler: + - g++ + - clang + container: ubuntu:${{ matrix.ubuntu }} + steps: + - name: Install Dependencies + env: + DEBIAN_FRONTEND: noninteractive + run: | + apt-get -qq update + apt-get -qq upgrade -y + apt-get -qq install -y --no-install-recommends \ + ca-certificates \ + git \ + ${{ matrix.compiler }} \ + libboost-dev \ + libboost-filesystem-dev \ + libboost-locale-dev \ + libboost-regex-dev \ + libboost-system-dev \ + libcairo2-dev \ + libglew-dev \ + libglm-dev \ + libsdl2-dev \ + libsdl2-image-dev \ + libsdl2-mixer-dev \ + libsdl2-ttf-dev \ + libvorbis-dev \ + make + + - name: Checkout Anura + uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + with: + submodules: true + + - name: Build Anura + env: + CXX: ${{ matrix.compiler }} + # Number of cores * 3 + run: make -j "$(($(getconf _NPROCESSORS_ONLN) * 3))" + + - name: Run Unit Tests + run: ./anura --tests diff --git a/.github/workflows/push-unit-tests.yaml b/.github/workflows/push-unit-tests.yaml new file mode 100644 index 000000000..ff2d01217 --- /dev/null +++ b/.github/workflows/push-unit-tests.yaml @@ -0,0 +1,46 @@ +name: Unit Tests +on: push + +jobs: + test: + name: Unit Tests + runs-on: ubuntu-22.04 + steps: + - name: Install Dependencies + env: + DEBIAN_FRONTEND: noninteractive + run: | + apt-get -qq update + apt-get -qq upgrade -y + apt-get -qq install -y --no-install-recommends \ + ca-certificates \ + git \ + clang \ + libboost-dev \ + libboost-filesystem-dev \ + libboost-locale-dev \ + libboost-regex-dev \ + libboost-system-dev \ + libcairo2-dev \ + libglew-dev \ + libglm-dev \ + libsdl2-dev \ + libsdl2-image-dev \ + libsdl2-mixer-dev \ + libsdl2-ttf-dev \ + libvorbis-dev \ + make + + - name: Checkout Anura + uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + with: + submodules: true + + - name: Build Anura + env: + CXX: clang + # Number of cores * 3 + run: make -j "$(($(getconf _NPROCESSORS_ONLN) * 3))" + + - name: Run Unit Tests + run: ./anura --tests diff --git a/README.md b/README.md index 34ca9cc26..8e9c69947 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ +# Anura Engine + ![](https://raw.github.com/anura-engine/anura/master/utils/Logo%20Images/Anura%20Logo.png) Anura is the tech behind the spectacular [Frogatto & Friends](https://github.com/frogatto/frogatto/wiki). It is a fully-featured game engine, free for commercial and non-commercial use. @@ -5,3 +7,50 @@ Anura is the tech behind the spectacular [Frogatto & Friends](https://github.com Note: For historic reasons – unlike most projects – Anura's main development branch is `trunk` as opposed to `master`. For example, to clone the repository, you might run `git clone --branch trunk git@github.com:anura-engine/anura.git`. To compile Anura for [Argentum Age](https://github.com/davewx7/citadel) (formerly Citadel), use the `argentum-age` branch. There are some issues on `trunk` which prevent AA from running there at the moment. + +## CI + +At the time of writing (2023-07) the CI setup tests the following permutations: + +On every push: + +* Unit Tests + * Ubuntu 22.04 / clang + * NOT IMPLEMENTED Windows + * NOT IMPLEMENTED macOS + +On Pull Requests and Merge Queue events: + +* Smoketest dynamic builds on Linux (both g++ and clang) + * Debian + * 11 / Bullseye + * 12 / Bookworm + * 13 / Trixie + * Ubuntu + * 22.04 / Jammy Jellyfish + * Fedora + * 32 + * 33 + * 34 + * 35 + * 36 + * 37 + * 38 + * 39 + * openSUSE Leap + * 15.3 + * 15.4 + * 15.5 + +This set should cover most popular use cases and also derivative distributions +of these root distributions. There are no plans to test on rolling release +distributions: on those you are on your own and we welcome the heads up if +something breaks for you and can take a look, but will not guarantee a rapid +fix. Pull requests welcome. + +Smoketest static builds on Linux: + +* NOT IMPLEMENTED Steam + +All publishing builds will happen from the module side, most notably from +[Frogatto](https://github.com/frogatto/frogatto).