feat: initial iLSP project scaffolding
Some checks failed
CI / deploy (push) Has been cancelled
CI / build-and-push (push) Has been cancelled

- Python LSP (pylsp + pylsp_i80 plugin): i80 pypi package completions
- Bicep LSP (asyncio TCP proxy → Bicep.LangServer.dll): LRU module injection
- Health HTTP endpoint (:2089) for Consul/Nomad checks
- Startup catalog fetch from pypi-server.i80.dk + DevOpsMCP (no volume needed)
- Multi-stage Dockerfile: downloads Bicep LS at build time, dotnet-runtime-8.0 + python3.12
- Nomad job: static TCP ports 2087/2088, health check on 2089
- Gitea Actions CI: build + push + deploy pipeline
- Editor configs: Helix / nvim / LSP4IJ / VS Code
This commit is contained in:
Henrik Jess Nielsen
2026-05-10 12:23:05 +02:00
parent e8708191f6
commit d8536468ab
14 changed files with 808 additions and 95 deletions

64
.gitea/workflows/ci.yml Normal file
View File

@@ -0,0 +1,64 @@
name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
env:
REGISTRY: registry.i80.dk
IMAGE: registry.i80.dk/gitea/ilsp
jobs:
build-and-push:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set image tag
id: tag
run: echo "tag=${GITHUB_SHA::8}" >> "$GITHUB_OUTPUT"
- name: Log in to registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ secrets.REGISTRY_USER }}
password: ${{ secrets.REGISTRY_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v5
with:
context: .
push: ${{ github.ref == 'refs/heads/main' }}
tags: |
${{ env.IMAGE }}:${{ steps.tag.outputs.tag }}
${{ env.IMAGE }}:latest
cache-from: type=registry,ref=${{ env.IMAGE }}:latest
cache-to: type=inline
deploy:
runs-on: ubuntu-latest
needs: build-and-push
if: github.ref == 'refs/heads/main'
steps:
- uses: actions/checkout@v4
- name: Set image tag
id: tag
run: echo "tag=${GITHUB_SHA::8}" >> "$GITHUB_OUTPUT"
- name: Deploy to Nomad
run: |
scp ilsp.nomad ${{ secrets.DEPLOY_HOST }}:/tmp/ilsp.nomad
ssh ${{ secrets.DEPLOY_HOST }} \
"NOMAD_ADDR=https://nomad.i80.dk:4646 nomad job run \
-var='image_tag=${{ steps.tag.outputs.tag }}' /tmp/ilsp.nomad"
- name: Health check
run: |
sleep 20
curl -sf https://ilsp.i80.dk/health | jq .