summaryrefslogtreecommitdiff
path: root/.github/workflows/uvim-ci.yml
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/uvim-ci.yml')
-rw-r--r--.github/workflows/uvim-ci.yml180
1 files changed, 180 insertions, 0 deletions
diff --git a/.github/workflows/uvim-ci.yml b/.github/workflows/uvim-ci.yml
new file mode 100644
index 0000000000..a94ac0c3c1
--- /dev/null
+++ b/.github/workflows/uvim-ci.yml
@@ -0,0 +1,180 @@
+name: "uvim: CI"
+
+on:
+ push:
+ branches: ['**']
+ paths:
+ - 'uvim/**'
+ - '.github/workflows/uvim-ci.yml'
+ - '.github/actions/uvim/**'
+ pull_request:
+ paths:
+ - 'uvim/**'
+ - '.github/workflows/uvim-ci.yml'
+ - '.github/actions/uvim/**'
+
+concurrency:
+ group: uvim-${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.head_ref || github.sha }}
+ cancel-in-progress: true
+
+permissions:
+ contents: read
+
+jobs:
+ linux:
+ runs-on: ${{ matrix.architecture == 'arm64' && 'ubuntu-24.04-arm' || 'ubuntu-24.04' }}
+
+ env:
+ CC: ${{ matrix.compiler }}
+ GCC_VER: 14
+ CLANG_VER: 21
+ TEST: test
+ SRCDIR: ./src
+ LEAK_CFLAGS: -DEXITFREE
+ LOG_DIR: ${{ github.workspace }}/logs
+ TERM: xterm
+ DISPLAY: ':99'
+ DEBIAN_FRONTEND: noninteractive
+
+ strategy:
+ fail-fast: false
+ matrix:
+ features: [tiny, normal, huge]
+ compiler: [clang, gcc]
+ extra: [[]]
+ architecture: [native]
+ include:
+ - features: tiny
+ compiler: clang
+ extra: [nogui]
+ - features: tiny
+ compiler: gcc
+ extra: [nogui]
+ - features: tiny
+ compiler: gcc
+ extra: [nogui]
+ architecture: arm64
+ - features: huge
+ coverage: true
+ - features: huge
+ compiler: clang
+ interface: dynamic
+ python3: stable-abi
+ - features: huge
+ compiler: gcc
+ coverage: true
+ interface: dynamic
+ extra: [uchar, testgui]
+ - features: huge
+ compiler: gcc
+ coverage: true
+ extra: [unittests]
+ - features: huge
+ compiler: gcc
+ coverage: true
+ extra: [unittests]
+ architecture: arm64
+ - features: normal
+ compiler: gcc
+ extra: [vimtags, proto, codestyle]
+
+ defaults:
+ run:
+ working-directory: uvim
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v6
+
+ - name: Install dependencies
+ run: |
+ sudo apt-get update && sudo apt-get install -y \
+ autoconf \
+ clang \
+ lcov \
+ gettext \
+ libcanberra-dev \
+ libperl-dev \
+ python3-dev \
+ liblua5.4-dev \
+ lua5.4 \
+ ruby-dev \
+ tcl-dev \
+ libsodium-dev \
+ libgtk-3-dev \
+ desktop-file-utils \
+ libtool-bin
+
+ - name: Build
+ run: |
+ if [ "${{ matrix.features }}" = "tiny" ]; then
+ ./configure --with-features=tiny --disable-gui
+ elif [ "${{ matrix.features }}" = "normal" ]; then
+ ./configure --with-features=normal --disable-gui
+ else
+ ./configure --with-features=huge \
+ --enable-perlinterp \
+ --enable-pythoninterp \
+ --enable-python3interp \
+ --enable-rubyinterp \
+ --enable-luainterp \
+ --enable-tclinterp \
+ --enable-gui=gtk3
+ fi
+ make -j$(nproc)
+
+ - name: Test
+ timeout-minutes: 25
+ run: |
+ make $TEST
+
+ - name: Upload test artifacts
+ if: failure()
+ uses: ./.github/actions/uvim/test_artifacts
+
+ macos:
+ runs-on: ${{ matrix.runner }}
+
+ env:
+ CC: clang
+ TEST: test
+ SRCDIR: ./src
+ LEAK_CFLAGS: -DEXITFREE
+ TERM: xterm
+
+ strategy:
+ fail-fast: false
+ matrix:
+ features: [tiny, normal, huge]
+ runner: [macos-15]
+
+ defaults:
+ run:
+ working-directory: uvim
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v6
+
+ - name: Install dependencies
+ run: brew install lua
+
+ - name: Build
+ run: |
+ if [ "${{ matrix.features }}" = "tiny" ]; then
+ ./configure --with-features=tiny --disable-gui
+ elif [ "${{ matrix.features }}" = "normal" ]; then
+ ./configure --with-features=normal --disable-gui
+ else
+ ./configure --with-features=huge \
+ --enable-python3interp \
+ --enable-rubyinterp \
+ --enable-luainterp \
+ --enable-tclinterp
+ fi
+ make -j$(sysctl -n hw.logicalcpu)
+
+ - name: Test
+ timeout-minutes: 25
+ run: |
+ make $TEST