aboutsummaryrefslogtreecommitdiff
path: root/.github/workflows
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows')
-rw-r--r--.github/workflows/backport.yml28
-rw-r--r--.github/workflows/build.yml19
-rw-r--r--.github/workflows/build_dummy.yml33
-rw-r--r--.github/workflows/docs.yml7
-rw-r--r--.github/workflows/labeler_pr.yml19
-rw-r--r--.github/workflows/lintcommit.yml2
-rw-r--r--.github/workflows/lintcommit_dummy.yml16
-rw-r--r--.github/workflows/notes.md7
-rw-r--r--.github/workflows/optional.yml6
-rw-r--r--.github/workflows/reviewers_add.yml2
-rw-r--r--.github/workflows/test.yml32
-rw-r--r--.github/workflows/test_windows.yml1
-rw-r--r--.github/workflows/vim_patches.yml2
13 files changed, 130 insertions, 44 deletions
diff --git a/.github/workflows/backport.yml b/.github/workflows/backport.yml
index 9fbe837106..25a52c4757 100644
--- a/.github/workflows/backport.yml
+++ b/.github/workflows/backport.yml
@@ -12,25 +12,35 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
+
+ - uses: actions/create-github-app-token@v1
+ id: app-token
+ with:
+ app-id: ${{ vars.BACKPORT_APP }}
+ private-key: ${{ secrets.BACKPORT_KEY }}
+
- name: Create backport PR
id: backport
- uses: korthout/backport-action@v2
+ uses: korthout/backport-action@v3
with:
pull_title: "${pull_title}"
label_pattern: "^ci:backport ([^ ]+)$"
- # https://github.com/korthout/backport-action/pull/399
- experimental: >
- {
- "detect_merge_method": true
- }
+ github_token: ${{ steps.app-token.outputs.token }}
- - if: ${{steps.backport.outputs.was_successful == 'true'}}
+ - name: Create failed backport label
+ if: ${{ steps.backport.outputs.was_successful == 'false' }}
uses: actions/github-script@v7
with:
script: |
github.rest.issues.addLabels({
- issue_number: ${{steps.backport.outputs.created_pull_numbers}},
+ issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
- labels: ['target:release']
+ labels: ['needs:backport']
})
+
+ - name: Enable automerge
+ if: ${{ steps.backport.outputs.was_successful == 'true' }}
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ run: gh pr merge --rebase --auto ${{ steps.backport.outputs.created_pull_numbers }}
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index a2316f3f0f..ab313729b9 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -21,13 +21,28 @@ env:
INSTALL_PREFIX: ${{ github.workspace }}/nvim-install
jobs:
+ wasmtime:
+ strategy:
+ fail-fast: false
+ matrix:
+ test: [ubuntu-latest, macos-latest, windows-latest]
+ runs-on: ${{ matrix.test }}
+ steps:
+ - uses: actions/checkout@v4
+ - uses: ./.github/actions/setup
+ - run: |
+ cmake -S cmake.deps --preset ci -D ENABLE_WASMTIME=ON
+ cmake --build .deps
+ cmake --preset ci -D ENABLE_WASMTIME=ON
+ cmake --build build
+
old-cmake:
name: Test oldest supported cmake
runs-on: ubuntu-latest
timeout-minutes: 15
env:
- CMAKE_URL: 'https://cmake.org/files/v3.13/cmake-3.13.0-Linux-x86_64.sh'
- CMAKE_VERSION: '3.13.0'
+ CMAKE_URL: 'https://cmake.org/files/v3.16/cmake-3.16.0-Linux-x86_64.sh'
+ CMAKE_VERSION: '3.16.0'
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup
diff --git a/.github/workflows/build_dummy.yml b/.github/workflows/build_dummy.yml
new file mode 100644
index 0000000000..b499ba7fa2
--- /dev/null
+++ b/.github/workflows/build_dummy.yml
@@ -0,0 +1,33 @@
+name: build_dummy
+on:
+ pull_request:
+ branches:
+ - 'master'
+ - 'release-[0-9]+.[0-9]+'
+ # This needs to be an exact complement of `paths` in the build.yml workflow.
+ # This is required to bypass required checks since a required job is always
+ # needed to run.
+ paths-ignore:
+ - '**.cmake'
+ - '**/CMakeLists.txt'
+ - '**/CMakePresets.json'
+ - 'cmake.*/**'
+ - '.github/**'
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: ${{ github.event_name == 'pull_request' }}
+
+jobs:
+ old-cmake:
+ name: Test oldest supported cmake
+ runs-on: ubuntu-latest
+ timeout-minutes: 15
+ steps:
+ - run: echo "success"
+
+ use-existing-src:
+ name: Test USE_EXISTING_SRC_DIR=ON builds with no network access
+ runs-on: ubuntu-latest
+ steps:
+ - run: echo "success"
diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml
index c91f2945fb..f132404382 100644
--- a/.github/workflows/docs.yml
+++ b/.github/workflows/docs.yml
@@ -2,13 +2,6 @@ name: docs
on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
- paths:
- - 'src/nvim/api/*.[ch]'
- - 'src/nvim/eval.lua'
- - 'runtime/lua/**.lua'
- - 'runtime/doc/**'
- - 'scripts/gen_vimdoc.py'
- - 'scripts/gen_help_html.lua'
jobs:
docs:
runs-on: ubuntu-latest
diff --git a/.github/workflows/labeler_pr.yml b/.github/workflows/labeler_pr.yml
index 8fd93bfb6d..5d402c3c03 100644
--- a/.github/workflows/labeler_pr.yml
+++ b/.github/workflows/labeler_pr.yml
@@ -33,8 +33,25 @@ jobs:
- name: "Extract if the PR is a breaking change and add it as label"
run: gh pr edit "$PR_NUMBER" --add-label "$(echo "$PR_TITLE" | sed -E 's|[[:alpha:]]+(\(.*\))?!:.*|breaking-change|')" || true
- request-reviewer:
+ target-release:
needs: ["changed-files", "type-scope"]
+ runs-on: ubuntu-latest
+ permissions:
+ pull-requests: write
+ steps:
+ - if: startsWith(github.base_ref, 'release')
+ uses: actions/github-script@v7
+ with:
+ script: |
+ github.rest.issues.addLabels({
+ issue_number: context.issue.number,
+ owner: context.repo.owner,
+ repo: context.repo.repo,
+ labels: ['target:release']
+ })
+
+ request-reviewer:
+ needs: ["changed-files", "type-scope", "target-release"]
permissions:
pull-requests: write
uses: ./.github/workflows/reviewers_add.yml
diff --git a/.github/workflows/lintcommit.yml b/.github/workflows/lintcommit.yml
index 3d140532cd..49dc7f3e66 100644
--- a/.github/workflows/lintcommit.yml
+++ b/.github/workflows/lintcommit.yml
@@ -1,4 +1,4 @@
-name: "lintcommit"
+name: lintcommit
on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
diff --git a/.github/workflows/lintcommit_dummy.yml b/.github/workflows/lintcommit_dummy.yml
new file mode 100644
index 0000000000..e4a0c4af2d
--- /dev/null
+++ b/.github/workflows/lintcommit_dummy.yml
@@ -0,0 +1,16 @@
+# Dummy workflow of lintcommit.yml. lintcommit is a required check, but it's
+# only designed to work on master. Since required checks are always required to
+# run, we can essentially "skip" the lintcommit on release branches with this
+# dummy check that automatically passes.
+name: lintcommit_dummy
+on:
+ pull_request:
+ types: [opened, synchronize, reopened, ready_for_review]
+ branches:
+ - 'release-[0-9]+.[0-9]+'
+jobs:
+ lint-commits:
+ runs-on: ubuntu-latest
+ if: github.event.pull_request.draft == false
+ steps:
+ - run: echo "success"
diff --git a/.github/workflows/notes.md b/.github/workflows/notes.md
index f67a098687..25f4a5fb32 100644
--- a/.github/workflows/notes.md
+++ b/.github/workflows/notes.md
@@ -18,6 +18,8 @@ ${NVIM_VERSION}
2. Run the MSI
3. Run `nvim.exe` on your CLI of choice
+Note: On Windows "Server" you may need to [install vcruntime140.dll](https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170).
+
### macOS (x86_64)
1. Download **nvim-macos-x86_64.tar.gz**
@@ -34,11 +36,10 @@ ${NVIM_VERSION}
### Linux (x64)
-Minimum glibc version to run these releases is 2.31. People requiring releases
-that work on older glibc versions can find them at
-https://github.com/neovim/neovim-releases.
+glibc 2.31 or newer is required. Or you may try the (unsupported) [builds for older glibc](https://github.com/neovim/neovim-releases).
#### AppImage
+
1. Download **nvim.appimage**
2. Run `chmod u+x nvim.appimage && ./nvim.appimage`
- If your system does not have FUSE you can [extract the appimage](https://github.com/AppImage/AppImageKit/wiki/FUSE#type-2-appimage):
diff --git a/.github/workflows/optional.yml b/.github/workflows/optional.yml
index 742d51377f..540daccc56 100644
--- a/.github/workflows/optional.yml
+++ b/.github/workflows/optional.yml
@@ -11,7 +11,7 @@ concurrency:
env:
INSTALL_PREFIX: ${{ github.workspace }}/nvim-install
# Double test timeout since it's running via qemu
- TEST_TIMEOUT: 2400
+ TEST_TIMEOUT: 3600
# TEST_FILE: test/functional/shada
# TEST_FILTER: foo
@@ -23,7 +23,7 @@ jobs:
matrix:
test: [functionaltest, oldtest]
runs-on: ubuntu-latest
- timeout-minutes: 60
+ timeout-minutes: 90
steps:
- run: docker run --rm --privileged multiarch/qemu-user-static:register --reset
- uses: docker://multiarch/ubuntu-core:s390x-focal
@@ -34,7 +34,7 @@ jobs:
bash -c
"
apt-get -y update &&
- DEBIAN_FRONTEND=noninteractive apt-get -y install build-essential cmake curl gettext ninja-build locales-all cpanminus git attr libattr1-dev &&
+ time DEBIAN_FRONTEND=noninteractive apt-get -y install build-essential cmake curl gettext ninja-build locales-all cpanminus git attr libattr1-dev xdg-utils &&
useradd --create-home qemuci &&
chown -R qemuci. . &&
runuser -u qemuci -- git clone --depth=1 https://github.com/neovim/neovim.git &&
diff --git a/.github/workflows/reviewers_add.yml b/.github/workflows/reviewers_add.yml
index b116bca29b..90b473c754 100644
--- a/.github/workflows/reviewers_add.yml
+++ b/.github/workflows/reviewers_add.yml
@@ -5,7 +5,7 @@ on:
workflow_call:
jobs:
request-reviewer:
- if: github.event.pull_request.state == 'open' && github.event.pull_request.draft == false
+ if: github.event.pull_request.state == 'open' && github.event.pull_request.draft == false && !endsWith(github.actor, '[bot]')
runs-on: ubuntu-latest
permissions:
pull-requests: write
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index d0ee18ab73..522692b30a 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -8,8 +8,6 @@ on:
branches:
- 'master'
- 'release-[0-9]+.[0-9]+'
- paths-ignore:
- - 'contrib/**'
workflow_dispatch:
concurrency:
@@ -30,7 +28,7 @@ env:
jobs:
lint:
- runs-on: ubuntu-22.04
+ runs-on: ubuntu-24.04
timeout-minutes: 10
env:
CC: clang
@@ -80,7 +78,7 @@ jobs:
run: cmake --build build --target lintc-uncrustify
clang-analyzer:
- runs-on: ubuntu-22.04
+ runs-on: ubuntu-24.04
timeout-minutes: 20
env:
CC: clang
@@ -95,18 +93,23 @@ jobs:
- run: cmake --build build --target clang-analyzer
posix:
- name: ${{ matrix.build.runner }} ${{ matrix.build.flavor }} ${{ matrix.build.cc }} ${{ matrix.test }}
+ name: ${{ matrix.build.os }} ${{ matrix.build.flavor }} ${{ matrix.build.cc }} ${{ matrix.test }}
strategy:
fail-fast: false
matrix:
+ # The `os` field is not needed to differentiate between the different
+ # matrix builds. It is needed to not change the required checks (which
+ # uses jobs names) each time we bump the runner version. It may be
+ # possible to remove if we e.g. start using `-latest` runner versions
+ # or if github introduces a wildcard for required checks in the future.
build:
[
- { runner: ubuntu-22.04, flavor: asan, cc: clang, flags: -D ENABLE_ASAN_UBSAN=ON },
- { runner: ubuntu-22.04, flavor: tsan, cc: clang, flags: -D ENABLE_TSAN=ON },
- { runner: ubuntu-22.04, cc: gcc },
- { runner: macos-12, cc: clang, flags: -D CMAKE_FIND_FRAMEWORK=NEVER, deps_flags: -D CMAKE_FIND_FRAMEWORK=NEVER },
- { runner: macos-14, cc: clang, flags: -D CMAKE_FIND_FRAMEWORK=NEVER, deps_flags: -D CMAKE_FIND_FRAMEWORK=NEVER },
- { runner: ubuntu-22.04, flavor: puc-lua, cc: gcc, deps_flags: -D USE_BUNDLED_LUAJIT=OFF -D USE_BUNDLED_LUA=ON, flags: -D PREFER_LUA=ON },
+ { runner: ubuntu-24.04, os: ubuntu, flavor: asan, cc: clang, flags: -D ENABLE_ASAN_UBSAN=ON },
+ { runner: ubuntu-24.04, os: ubuntu, flavor: tsan, cc: clang, flags: -D ENABLE_TSAN=ON },
+ { runner: ubuntu-24.04, os: ubuntu, cc: gcc },
+ { runner: macos-12, os: macos, flavor: 12, cc: clang, flags: -D CMAKE_FIND_FRAMEWORK=NEVER, deps_flags: -D CMAKE_FIND_FRAMEWORK=NEVER },
+ { runner: macos-15, os: macos, cc: clang, flags: -D CMAKE_FIND_FRAMEWORK=NEVER, deps_flags: -D CMAKE_FIND_FRAMEWORK=NEVER },
+ { runner: ubuntu-24.04, os: ubuntu, flavor: puc-lua, cc: gcc, deps_flags: -D USE_BUNDLED_LUAJIT=OFF -D USE_BUNDLED_LUA=ON, flags: -D PREFER_LUA=ON },
]
test: [unittest, functionaltest, oldtest]
exclude:
@@ -199,7 +202,7 @@ jobs:
# single-config generators so it's nice to have a small sanity check for
# multi-config.
build-types:
- runs-on: ubuntu-22.04
+ runs-on: ubuntu-24.04
timeout-minutes: 10
env:
CC: gcc
@@ -225,7 +228,7 @@ jobs:
run: cmake --build build --config MinSizeRel
with-external-deps:
- runs-on: ubuntu-22.04
+ runs-on: ubuntu-24.04
timeout-minutes: 10
env:
CC: gcc
@@ -238,8 +241,6 @@ jobs:
sudo add-apt-repository ppa:neovim-ppa/stable
sudo apt-get install -y \
libluajit-5.1-dev \
- libmsgpack-dev \
- libtermkey-dev \
libunibilium-dev \
libuv1-dev \
lua-filesystem \
@@ -247,7 +248,6 @@ jobs:
luajit \
lua-luv-dev
# libtree-sitter-dev \
- # libvterm-dev
# Remove comments from packages once we start using these external
# dependencies.
diff --git a/.github/workflows/test_windows.yml b/.github/workflows/test_windows.yml
index d92993a08c..db7ad93f55 100644
--- a/.github/workflows/test_windows.yml
+++ b/.github/workflows/test_windows.yml
@@ -60,6 +60,7 @@ jobs:
uses: msys2/setup-msys2@v2
with:
update: true
+ install: unzip
pacboy: >-
make:p gcc:p diffutils:p
release: false
diff --git a/.github/workflows/vim_patches.yml b/.github/workflows/vim_patches.yml
index f4251336c7..b0be01089f 100644
--- a/.github/workflows/vim_patches.yml
+++ b/.github/workflows/vim_patches.yml
@@ -50,6 +50,6 @@ jobs:
if: ${{ steps.update-version.outputs.NEW_PATCHES != 0 }}
run: |
git add -u
- git commit -m 'docs: update version.c [skip ci]'
+ git commit -m 'docs: update version.c'
git push --force https://${GITHUB_ACTOR}:${GITHUB_TOKEN}@github.com/${GITHUB_REPOSITORY} ${VERSION_BRANCH}
gh pr create --draft --fill --label vim-patch --base ${GITHUB_REF#refs/heads/} --head ${VERSION_BRANCH} || true