mirror of
https://github.com/neovim/neovim.git
synced 2026-06-30 15:01:13 +00:00
The list of known lint issues is only updated for the master branch, so other branches report lots of false positive issues.
221 lines
6.8 KiB
YAML
221 lines
6.8 KiB
YAML
name: CI
|
|
on:
|
|
push:
|
|
branches:
|
|
- 'master'
|
|
- 'release-[0-9]+.[0-9]+'
|
|
pull_request:
|
|
types: [opened, synchronize, reopened, ready_for_review]
|
|
branches:
|
|
- 'master'
|
|
- 'release-[0-9]+.[0-9]+'
|
|
|
|
jobs:
|
|
lint:
|
|
if: (github.event_name == 'pull_request' && github.base_ref == 'master' && !github.event.pull_request.draft) || (github.event_name == 'push' && github.ref == 'refs/heads/master')
|
|
runs-on: ubuntu-20.04
|
|
env:
|
|
CC: gcc
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
|
|
- name: Setup common environment variables
|
|
run: ./.github/workflows/env.sh lint
|
|
|
|
- name: Install apt packages
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y autoconf automake build-essential ccache cmake cpanminus gettext gperf language-pack-tr libtool-bin locales ninja-build pkg-config python3 python3-pip python3-setuptools unzip
|
|
|
|
- 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: ${{ matrix.runner }}-lint-${{ matrix.cc }}-${{ hashFiles('cmake/*', 'third-party/**', '**/CMakeLists.txt') }}-${{ github.base_ref }}
|
|
|
|
- name: Build third-party
|
|
run: ./ci/before_script.sh
|
|
|
|
- name: Run lint
|
|
run: ./ci/script.sh
|
|
|
|
- name: Cache dependencies
|
|
if: ${{ success() }}
|
|
run: ./ci/before_cache.sh
|
|
|
|
unixish:
|
|
name: ${{ matrix.runner }} ${{ matrix.flavor }} (cc=${{ matrix.cc }})
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- flavor: asan
|
|
cc: clang-12
|
|
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
|
|
- cc: clang
|
|
runner: macos-11.0
|
|
os: osx
|
|
runs-on: ${{ matrix.runner }}
|
|
timeout-minutes: 45
|
|
if: github.event.pull_request.draft == false
|
|
env:
|
|
CC: ${{ matrix.cc }}
|
|
CI_OS_NAME: ${{ matrix.os }}
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
|
|
- name: Setup common 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 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: ${{ matrix.runner }}-${{ 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, MSVC_64 ]
|
|
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 }}
|
|
|
|
functionaltest:
|
|
name: ${{ matrix.runner }} ${{ matrix.flavor }} (cc=${{ matrix.cc }})
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- flavor: functionaltest-lua
|
|
cc: gcc
|
|
runner: ubuntu-20.04
|
|
os: linux
|
|
runs-on: ${{ matrix.runner }}
|
|
timeout-minutes: 45
|
|
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
|
|
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 minimum required version of cmake
|
|
env:
|
|
CMAKE_URL: 'https://cmake.org/files/v3.10/cmake-3.10.0-Linux-x86_64.sh'
|
|
CMAKE_VERSION: '3.10.0'
|
|
shell: bash
|
|
run: |
|
|
curl --retry 5 --silent --show-error --fail -o /tmp/cmake-installer.sh "$CMAKE_URL"
|
|
mkdir -p "$HOME/.local/bin" /opt/cmake-custom
|
|
chmod a+x /tmp/cmake-installer.sh
|
|
/tmp/cmake-installer.sh --prefix=/opt/cmake-custom --skip-license
|
|
ln -sfn /opt/cmake-custom/bin/cmake "$HOME/.local/bin/cmake"
|
|
cmake_version="$(cmake --version | head -1)"
|
|
echo "$cmake_version" | grep -qF "cmake version $CMAKE_VERSION" || {
|
|
echo "Unexpected CMake version: $cmake_version"
|
|
exit 1
|
|
}
|
|
|
|
- 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: ${{ matrix.runner }}-${{ 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
|