name: Build on: [push, pull_request] jobs: build: runs-on: ubuntu-18.04 steps: - name: Set up Python 3 uses: actions/setup-python@v2 with: python-version: 3 - name: Install dependencies run: | sudo apt-get update sudo apt-get install \ libsdl-image1.2-dev \ libsdl-ttf2.0-dev \ libsdl1.2-dev \ libxml-libxml-perl \ libxml-libxslt-perl \ lua5.3 \ ninja-build \ zlib1g-dev pip install sphinx - name: Clone DFHack uses: actions/checkout@v1 with: fetch-depth: 0 # unlimited - we need past tags submodules: true - name: Set up environment id: env_setup run: | DF_VERSION="$(sh travis/get-df-version.sh)" echo "::set-env name=DF_VERSION::${DF_VERSION}" echo "::set-output name=df_version::${DF_VERSION}" echo "::set-env name=DF_FOLDER::${HOME}/DF/${DF_VERSION}/df_linux" - name: Fetch DF cache uses: actions/cache@v2 with: path: ~/DF key: ${{ steps.env_setup.outputs.df_version }} - name: Download DF run: | sh travis/download-df.sh - name: Build DFHack run: | cmake \ -S . \ -B build-ci \ -G Ninja \ -DDFHACK_BUILD_ARCH=64 \ -DBUILD_DOCS:BOOL=ON \ -DBUILD_TESTS:BOOL=ON \ -DCMAKE_INSTALL_PREFIX="$DF_FOLDER" ninja -C build-ci install - name: Run tests run: | export TERM=dumb mv "$DF_FOLDER"/dfhack.init-example "$DF_FOLDER"/dfhack.init script -qe -c "python travis/run-tests.py --headless --keep-status \"$DF_FOLDER\"" python travis/check-rpc.py "$DF_FOLDER/dfhack-rpc.txt" mkdir -p artifacts cp "$DF_FOLDER/test_status.json" "$DF_FOLDER"/*.log artifacts - name: Upload test artifacts uses: actions/upload-artifact@v1 if: success() || failure() with: name: test-artifacts path: artifacts - name: Clean up DF folder # prevent DFHack-generated files from ending up in the cache # (download-df.sh also removes them, this is just to save cache space) if: success() || failure() run: | rm -rf "$DF_FOLDER" docs: runs-on: ubuntu-18.04 steps: - name: Set up Python 3 uses: actions/setup-python@v2 with: python-version: 3 - name: Install dependencies run: | pip install sphinx - name: Clone DFHack uses: actions/checkout@v1 with: submodules: true - name: Build docs run: | sphinx-build -W --keep-going -j3 . docs/html - name: Upload docs uses: actions/upload-artifact@v1 with: name: docs path: docs/html lint: runs-on: ubuntu-18.04 steps: - name: Set up Python 3 uses: actions/setup-python@v2 with: python-version: 3 - name: Set up Ruby 2.7 uses: actions/setup-ruby@v1 with: ruby-version: 2.7 - name: Install Lua run: | sudo apt-get update sudo apt-get install lua5.3 - name: Clone DFHack uses: actions/checkout@v1 with: submodules: true # don't need tags here - name: Check whitespace run: | python travis/lint.py - name: Check Authors.rst if: success() || failure() run: | python travis/authors-rst.py - name: Check for missing documentation if: success() || failure() run: | python travis/script-docs.py - name: Check Lua syntax if: success() || failure() run: | python travis/script-syntax.py --ext=lua --cmd="luac5.3 -p" --github-actions - name: Check Ruby syntax if: success() || failure() run: | python travis/script-syntax.py --ext=rb --cmd="ruby -c" --github-actions check-pr: runs-on: ubuntu-latest if: github.event_name == 'pull_request' steps: - name: Check that PR is based on develop branch env: BASE_BRANCH: ${{ github.base_ref }} run: | echo "PR base branch: $BASE_BRANCH" test "$BASE_BRANCH" = develop