name: CI on: push: branches: '**' pull_request: branches: 'master' jobs: unixish: name: ${{ matrix.os }} ${{ matrix.flavor }} (cc=${{ matrix.cc }}) strategy: fail-fast: false matrix: include: - flavor: asan cc: clang-12 runner: ubuntu-20.04 os: linux - flavor: lint cc: gcc runner: ubuntu-20.04 os: linux - flavor: tsan cc: clang-12 runner: ubuntu-20.04 os: linux - cc: clang runner: macos-10.15 os: osx runs-on: ${{ matrix.runner }} if: github.event.pull_request.draft == false env: CC: ${{ matrix.cc }} CI_OS_NAME: ${{ matrix.os }} steps: - uses: actions/checkout@v2 - name: Setup commom environment variables run: ./.github/workflows/env.sh ${{ matrix.flavor }} - name: Install apt packages if: matrix.os == 'linux' run: | sudo apt-get update sudo apt-get install -y autoconf automake build-essential ccache cmake cpanminus cscope gcc-multilib gdb gettext gperf language-pack-tr libtool-bin locales ninja-build pkg-config python3 python3-pip python3-setuptools unzip valgrind xclip - name: Install new clang if: matrix.flavor == 'asan' || matrix.flavor == 'tsan' run: | wget https://apt.llvm.org/llvm.sh chmod a+x llvm.sh sudo ./llvm.sh 12 rm llvm.sh - name: Install brew packages if: matrix.os == 'osx' run: | # Workaround brew issues rm -f /usr/local/bin/2to3 brew unlink gcc@8 gcc@9 brew update >/dev/null brew upgrade brew install automake ccache perl cpanminus ninja - name: Setup interpreter packages run: | ./ci/before_install.sh ./ci/install.sh - name: Cache dependencies uses: actions/cache@v2 with: path: | ${{ env.CACHE_NVIM_DEPS_DIR }} ~/.ccache key: ${{ runner.os }}-${{ matrix.flavor }}-${{ matrix.cc }}-${{ hashFiles('cmake/*', 'third-party/**', '**/CMakeLists.txt') }}-${{ github.base_ref }} - name: Build third-party run: ./ci/before_script.sh - name: Build and test run: ./ci/script.sh - name: Cache dependencies if: ${{ success() }} run: ./ci/before_cache.sh windows: runs-on: windows-2016 if: github.event.pull_request.draft == false env: DEPS_BUILD_DIR: ${{ format('{0}/nvim-deps', github.workspace) }} DEPS_PREFIX: ${{ format('{0}/nvim-deps/usr', github.workspace) }} strategy: fail-fast: false matrix: config: [ MINGW_64-gcov, MINGW_32, MSVC_64, MSVC_32 ] name: windows (${{ matrix.config }}) steps: - uses: actions/checkout@v2 - uses: actions/cache@v2 with: path: ${{ env.DEPS_BUILD_DIR }} key: ${{ matrix.config }}-${{ hashFiles('third-party\**') }} - name: Run CI run: powershell ci\build.ps1 env: CONFIGURATION: ${{ matrix.config }}