123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 |
- name: Nim Docs CI
- on:
- push:
- paths:
- - 'compiler/docgen.nim'
- - 'compiler/renderverbatim.nim'
- - 'config/nimdoc.cfg'
- - 'doc/**.rst'
- - '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/nimdoc.css'
- - 'lib/**.nim'
- - 'nimdoc/testproject/expected/testproject.html'
- - 'tools/dochack/dochack.nim'
- - 'tools/kochdocs.nim'
- - '.github/workflows/ci_docs.yml'
- - 'koch.nim'
- jobs:
- build:
- # see D20210329T004830
- if: |
- !contains(format('{0}', github.event.pull_request.title), '[skip ci]')
- strategy:
- fail-fast: false
- matrix:
- target: [linux, windows, osx]
- include:
- - target: linux
- os: ubuntu-18.04
- - target: windows
- os: windows-2019
- - target: osx
- os: macos-10.15
- name: ${{ matrix.target }}
- runs-on: ${{ matrix.os }}
- steps:
- - name: 'Checkout'
- uses: actions/checkout@v2
- with:
- fetch-depth: 2
- - name: 'Check whether to skip CI'
- shell: bash
- run: |
- # see D20210329T004830
- commitMsg=$(git log --no-merges -1 --pretty=format:"%s")
- echo commitMsg: $commitMsg
- echo $commitMsg | grep -v '\[skip ci\]'
- - 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: |
- mkdir dist
- curl -L https://nim-lang.org/download/mingw64.7z -o dist/mingw64.7z
- curl -L https://nim-lang.org/download/dlls.zip -o dist/dlls.zip
- 7z x dist/mingw64.7z -odist
- 7z x dist/dlls.zip -obin
- echo "${{ github.workspace }}/dist/mingw64/bin" >> "${GITHUB_PATH}"
- - name: 'Add build binaries to PATH'
- shell: bash
- run: echo "${{ github.workspace }}/bin" >> "${GITHUB_PATH}"
- - name: 'Get current csources version'
- id: csources-version
- shell: bash
- run: |
- sha=$(git ls-remote https://github.com/nim-lang/csources master | cut -f 1)
- echo "::set-output name=sha::$sha"
- - name: 'Get prebuilt csources from cache'
- id: csources-cache
- uses: actions/cache@v1
- with:
- path: bin
- key: '${{ matrix.os }}-${{ steps.csources-version.outputs.sha }}'
- - name: 'Checkout csources'
- if: steps.csources-cache.outputs.cache-hit != 'true'
- uses: actions/checkout@v2
- with:
- repository: nim-lang/csources
- path: csources
- - name: 'Build 1-stage compiler from csources'
- shell: bash
- run: |
- ext=
- [[ '${{ runner.os }}' == 'Windows' ]] && ext=.exe
- if [[ ! -x bin/nim-csources$ext ]]; then
- ncpu=
- case '${{ runner.os }}' in
- 'Linux')
- ncpu=$(nproc)
- ;;
- 'macOS')
- ncpu=$(sysctl -n hw.ncpu)
- ;;
- 'Windows')
- ncpu=$NUMBER_OF_PROCESSORS
- ;;
- esac
- [[ -z "$ncpu" || $ncpu -le 0 ]] && ncpu=1
- make -C csources -j $ncpu CC=gcc
- cp bin/nim{,-csources}$ext
- else
- echo 'Cache hit, using prebuilt csources'
- cp bin/nim{-csources,}$ext
- fi
- - 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@v1
- with:
- build_dir: doc/html
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|