diff options
author | James McCoy <jamessan@jamessan.com> | 2020-11-14 21:03:26 -0500 |
---|---|---|
committer | James McCoy <jamessan@jamessan.com> | 2020-11-14 21:29:02 -0500 |
commit | 3b0a729f9c39cc94084a25f2b4e740b86e4f0532 (patch) | |
tree | a397fa9fc813db10f6e97c8276d4f68e757e7c0a | |
parent | 392ec5a43f85c9442097e1804f6c30d47ad0f07e (diff) | |
download | rneovim-3b0a729f9c39cc94084a25f2b4e740b86e4f0532.tar.gz rneovim-3b0a729f9c39cc94084a25f2b4e740b86e4f0532.tar.bz2 rneovim-3b0a729f9c39cc94084a25f2b4e740b86e4f0532.zip |
GHA: Use matrix to de-duplicate workflow definition
The general skeleton of each job is the same, so consolidate the
definition to a single job with an explicit matrix.
Use conditional steps to handle steps that are unique to a certain job
(e.g., installing clang-11 for better ASAN support).
-rw-r--r-- | .github/workflows/linux.yml | 58 |
1 files changed, 14 insertions, 44 deletions
diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index f8e6556b91..4e74ac21ee 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -2,17 +2,26 @@ name: Linux CI on: [push, pull_request] jobs: - ASAN: + linux: + name: ${{ matrix.flavor }} (cc=${{ matrix.cc }}) runs-on: ubuntu-latest + strategy: + matrix: + include: + - flavor: asan + cc: clang-11 + - flavor: lint + cc: gcc env: - CC: clang-11 + CC: ${{ matrix.cc }} steps: - uses: actions/checkout@v2 - name: Setup commom environment variables - run: ./.github/workflows/env.sh asan + run: ./.github/workflows/env.sh ${{ matrix.flavor }} - name: Setup clang repository + if: matrix.flavor == 'asan' run: | wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add - sudo add-apt-repository 'deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-11 main' @@ -23,6 +32,7 @@ jobs: 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 python python-pip python-setuptools python3 python3-pip python3-setuptools unzip valgrind xclip - name: Install new clang + if: matrix.flavor == 'asan' run: sudo apt-get install -y clang-11 - name: Setup interpreter packages @@ -32,51 +42,11 @@ jobs: - name: Cache dependencies uses: actions/cache@v2 - env: - cache-name: asan-deps with: path: | ${{ env.CACHE_NVIM_DEPS_DIR }} ~/.ccache - key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ 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 - - lint: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - - name: Setup commom 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 gcc-multilib gettext gperf 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 - env: - cache-name: lint-deps - with: - path: | - ${{ env.CACHE_NVIM_DEPS_DIR }} - ~/.ccache - key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('cmake/*', 'third-party/**', '**/CMakeLists.txt') }}-${{ github.base_ref }} + 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 |