Skip to content

Some cleanup for signature help #911

Some cleanup for signature help

Some cleanup for signature help #911

Workflow file for this run

name: Build and test the editor
on:
# Runs on pushes targeting the default branch
push:
branches: ["main", "nim-upgrade"]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
group: "build"
cancel-in-progress: true
jobs:
build-linux:
name: Build Linux
runs-on: ubuntu-latest
strategy:
matrix:
container: ["ubuntu:22.04"]
container:
image: ${{ matrix.container }}
volumes:
- ${{ github.workspace }}:/app
steps:
- name: Checkout the repo
uses: actions/checkout@v4.1.7
- run: apt-get update
continue-on-error: true
- run: apt-get install gcc-mingw-w64 libx11-xcb-dev curl wget build-essential git musl-tools cmake -y
continue-on-error: true
- name: Install stable rust toolchain
uses: dtolnay/rust-toolchain@1.81
- run: rustup target add x86_64-unknown-linux-musl
- uses: iffy/install-nim@v5
with:
version: nightly:https://github.com/nim-lang/nightlies/releases/tag/2025-10-31-version-2-2-ab00c56904e3126ad826bb520d243513a139436a
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: add project dir as git safe.directory so nimble can install stuff
run: git config --global --add safe.directory /__w/Absytree/Absytree
continue-on-error: true
# not working because "source" doesn't exist?
#- run: echo "export PATH=/github/home/.nimble/bin:\$PATH" > ~/.profile
#- run: source ~/.profile
# continue-on-error: true
- name: Cache nimble modules
id: cache-nimble
uses: actions/cache@v3
env:
cache-name: cache-nimble-modules-7
with:
path: |
~/.nimble
emsdk
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('nimble.lock') }}
- uses: actions/setup-python@v5
with:
python-version: '3.8'
- if: ${{ steps.cache-nimble.outputs.cache-hit != 'true' }}
name: Download emscripten
run: git clone https://github.com/emscripten-core/emsdk.git
- if: ${{ steps.cache-nimble.outputs.cache-hit != 'true' }}
name: Install emscripten
run: cd emsdk; ./emsdk install 4.0.10; ./emsdk activate 4.0.10; cd ..
- run: echo "${GITHUB_WORKSPACE}/emsdk" >> $GITHUB_PATH
- run: echo "${GITHUB_WORKSPACE}/emsdk/node/22.16.0_64bit/bin" >> $GITHUB_PATH
- run: echo "${GITHUB_WORKSPACE}/emsdk/upstream/emscripten" >> $GITHUB_PATH
- name: nimble setup
continue-on-error: true
run: PATH=/github/home/.nimble/bin:$PATH nimble setup
# linux builds
- run: cd plugins/vim; nimble --legacy --disablevalidation --verbose setup; nim c -d:release --skipParentCfg --passL:"-o vim.m.wasm" vim.nim; cd ../..
- run: nim c --out:nev -D:enableGui=false -D:enableTerminal=true --app:console -D:forceLogToFile --passC:-std=gnu11 -d:exposeScriptingApi -D:isCI -D:isCINimbleCached=${{steps.cache-nimble.outputs.cache-hit}} src/desktop_main.nim
# - run: nim c --out:nevc -D:enableGui=false -D:enableTerminal=true --app:console -D:forceLogToFile --passC:-std=gnu11 -d:exposeScriptingApi -D:isCI -D:isCINimbleCached=${{steps.cache-nimble.outputs.cache-hit}} --cc:clang --passC:-Wno-incompatible-function-pointer-types --passL:-ladvapi32.lib -d:enableSystemClipboard=false src/desktop_main.nim
- run: nim c --out:nevg -D:enableGui=true -D:enableTerminal=false --app:gui -D:forceLogToFile --passC:-std=gnu11 -d:exposeScriptingApi -D:isCI -D:isCINimbleCached=${{steps.cache-nimble.outputs.cache-hit}} src/desktop_main.nim
- run: nim c --out:nev-musl -D:enableGui=false -D:enableTerminal=true --app:console -d:musl -d:nimWasmtimeBuildMusl -D:forceLogToFile --passC:-std=gnu11 -d:exposeScriptingApi -D:isCI -D:isCINimbleCached=${{steps.cache-nimble.outputs.cache-hit}} src/desktop_main.nim
#- run: PATH=/github/home/.nimble/bin:$PATH nimble buildRemoteWorkspaceHost
#- run: PATH=/github/home/.nimble/bin:$PATH nimble buildLspWs
# create release packages
- run: PATH=/github/home/.nimble/bin:$PATH nim ./tools/package_release.nims -l
# make zips
#- name: Zip release_linux
# uses: vimtor/action-zip@v1.2
# with:
# files: release_linux
# dest: release_linux.zip
# upload artifacts
- name: Upload release_linux
uses: actions/upload-artifact@v4.3.3
with:
path: nev-*-x86_64-unknown-linux-*.tar
name: nev-linux
build-windows:
name: Build Windows
runs-on: windows-2022
steps:
- name: Checkout the repo
uses: actions/checkout@v4.1.7
# If I want a specific rust version
#- name: Install latest nightly
# uses: actions-rs/toolchain@v1.0.6
# with:
# toolchain: stable
# override: true
- uses: iffy/install-nim@v5
with:
version: nightly:https://github.com/nim-lang/nightlies/releases/tag/2025-10-31-version-2-2-ab00c56904e3126ad826bb520d243513a139436a
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Cache nimble modules
id: cache-nimble
uses: actions/cache@v3
env:
cache-name: cache-nimble-modules-4
with:
path: |
~/.nimble
emsdk
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('nimble.lock') }}
- if: ${{ steps.cache-nimble.outputs.cache-hit != 'true' }}
name: Download emscripten
run: git clone https://github.com/emscripten-core/emsdk.git
- if: ${{ steps.cache-nimble.outputs.cache-hit != 'true' }}
name: Install emscripten
run: ./emsdk/emsdk.ps1 install 4.0.10
- if: ${{ steps.cache-nimble.outputs.cache-hit != 'true' }}
name: nimble setup
continue-on-error: true
run: nimble setup
- name: nimble setup
continue-on-error: true
run: nimble setup
- run: Invoke-WebRequest -Uri "https://github.com/electron/rcedit/releases/download/v2.0.0/rcedit-x64.exe" -OutFile "./rcedit-x64.exe"
# windows builds
- run: ./emsdk/emsdk.ps1 activate 4.0.10; cd plugins/vim; nimble --legacy --disablevalidation --verbose setup; nim c -d:release --skipParentCfg --passL:"-o vim.m.wasm" vim.nim; cd ../..
- run: nim c --out:nev.exe -D:enableGui=false -D:enableTerminal=true --app:console -D:forceLogToFile --passC:-std=gnu11 -d:exposeScriptingApi -D:isCI -D:isCINimbleCached=${{steps.cache-nimble.outputs.cache-hit}} src/desktop_main.nim
- run: nim c --out:nevg.exe -D:enableGui=true -D:enableTerminal=false --app:gui -D:forceLogToFile --passC:-std=gnu11 -d:exposeScriptingApi -D:isCI -D:isCINimbleCached=${{steps.cache-nimble.outputs.cache-hit}} src/desktop_main.nim
- run: nim c --out:nevc.exe -D:enableGui=true -D:enableTerminal=false --app:gui -D:forceLogToFile --passC:-std=gnu11 -d:exposeScriptingApi -D:isCI -D:isCINimbleCached=${{steps.cache-nimble.outputs.cache-hit}} --cc:clang --passC:-Wno-incompatible-function-pointer-types "--passL:-ladvapi32.lib -luser32.lib" -d:enableSystemClipboard=false src/desktop_main.nim
#- run: nimble buildRemoteWorkspaceHostWindows
#- run: nimble buildLspWsWindows
- run: ./rcedit-x64.exe nev.exe --set-icon ./res/icon.ico
- run: ./rcedit-x64.exe nevg.exe --set-icon ./res/icon.ico
- run: ./rcedit-x64.exe nevc.exe --set-icon ./res/icon.ico
# create release packages
- run: nim ./tools/package_release.nims -w
# make zips
#- name: Zip release_windows
# uses: vimtor/action-zip@v1.2
# with:
# files: release_windows
# dest: release_windows.zip
# upload artifacts
- name: Upload release_windows
uses: actions/upload-artifact@v4.3.3
with:
path: nev-*-x86_64-pc-windows-gnu.zip
name: nev-windows
run-tests:
name: Run tests
runs-on: ubuntu-latest
container:
image: "ubuntu:22.04"
volumes:
- ${{ github.workspace }}:/app
steps:
- name: Checkout the repo
uses: actions/checkout@v4.1.7
- run: apt-get update
continue-on-error: true
- run: apt-get install gcc-mingw-w64 libx11-xcb-dev curl wget build-essential git musl-tools cmake -y
continue-on-error: true
- name: Install stable rust toolchain
uses: dtolnay/rust-toolchain@1.81
- uses: iffy/install-nim@v5
with:
version: nightly:https://github.com/nim-lang/nightlies/releases/tag/2025-10-31-version-2-2-ab00c56904e3126ad826bb520d243513a139436a
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: add project dir as git safe.directory so nimble can install stuff
run: git config --global --add safe.directory /__w/Absytree/Absytree
continue-on-error: true
- name: Cache nimble modules
id: cache-nimble
uses: actions/cache@v3
env:
cache-name: cache-nimble-modules-5
with:
path: ~/.nimble
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('nimble.lock') }}
- name: nimble setup
continue-on-error: true
run: PATH=/github/home/.nimble/bin:$PATH nimble setup
- run: "echo 'import wasmtime' > src/temp.nim && nim c -d:nimWasmtimeBuild src/temp.nim"
- name: Run tests
continue-on-error: true
run: testament --print category unit
- name: Build test report
run: testament html
- uses: actions/upload-artifact@v4.3.3
with:
name: testresults.html
path: testresults.html
# Build job
build-page:
runs-on: ubuntu-latest
needs: run-tests
if: always()
steps:
- name: Checkout
uses: actions/checkout@v4.1.7
- uses: actions/download-artifact@v4.1.7
with:
name: testresults.html
continue-on-error: true
- name: Setup Pages
uses: actions/configure-pages@v5.0.0
- name: Build with Jekyll
uses: actions/jekyll-build-pages@v1.0.12
with:
source: ./
destination: ./_site
- name: Upload artifact
uses: actions/upload-pages-artifact@v3.0.1
# Deployment job
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: build-page
if: github.ref_name == 'main'
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4.0.5