name: Nim Docs CI on: push: paths: - 'compiler/docgen.nim' - 'compiler/renderverbatim.nim' - 'config/nimdoc.cfg' - 'doc/**.rst' - 'doc/**.md' - 'doc/nimdoc.css' - 'lib/**.nim' - 'nimdoc/testproject/expected/testproject.html' - 'tools/dochack/dochack.nim' - 'tools/kochdocs.nim' - '.github/workflows/ci_docs.yml' - 'koch.nim' pull_request: # Run only on changes on these files. paths: - 'compiler/docgen.nim' - 'compiler/renderverbatim.nim' - 'config/nimdoc.cfg' - 'doc/**.rst' - 'doc/**.md' - 'doc/nimdoc.css' - 'lib/**.nim' - 'nimdoc/testproject/expected/testproject.html' - 'tools/dochack/dochack.nim' - 'tools/kochdocs.nim' - '.github/workflows/ci_docs.yml' - 'koch.nim' concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true jobs: build: strategy: fail-fast: false matrix: target: [linux, windows, osx] include: - target: linux os: ubuntu-20.04 - target: windows os: windows-2019 - target: osx os: macos-11 name: ${{ matrix.target }} runs-on: ${{ matrix.os }} timeout-minutes: 60 # refs bug #18178 steps: - name: 'Checkout' uses: actions/checkout@v3 with: fetch-depth: 2 - name: 'Install build dependencies (macOS)' if: runner.os == 'macOS' run: brew install make - name: 'Install build dependencies (Windows)' if: runner.os == 'Windows' shell: bash run: | set -e . ci/funs.sh nimInternalInstallDepsWindows echo "${{ github.workspace }}/dist/mingw64/bin" >> "${GITHUB_PATH}" - name: 'Add build binaries to PATH' shell: bash run: echo "${{ github.workspace }}/bin" >> "${GITHUB_PATH}" - name: 'System information' shell: bash run: . ci/funs.sh && nimCiSystemInfo - name: 'Build csourcesAny (posix)' # this would work on windows and other CI use this on windows, # but we ensure here that `ci/build_autogen.bat` keeps working on windows. if: runner.os != 'Windows' shell: bash run: . ci/funs.sh && nimBuildCsourcesIfNeeded CC=gcc # was previously using caching via `actions/cache@v1` but this wasn't # used in other CI pipelines and it's unclear the added complexity # was worth the saving; can be revisited if needed. - name: 'Build csourcesAny (windows)' if: runner.os == 'Windows' shell: cmd run: ci/build_autogen.bat - name: 'Build koch' shell: bash run: nim c koch - name: 'Build the real compiler' shell: bash run: ./koch boot -d:release - name: 'Build documentation' shell: bash run: ./koch doc --git.commit:devel - name: 'Publish documentation to Github Pages' if: | github.event_name == 'push' && github.ref == 'refs/heads/devel' && matrix.target == 'linux' uses: crazy-max/ghaction-github-pages@v3 with: build_dir: doc/html env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}