diff options
Diffstat (limited to '.github/workflows/uvim-ci.yml')
| -rw-r--r-- | .github/workflows/uvim-ci.yml | 180 |
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 |
