mirror of
https://github.com/zadam/trilium.git
synced 2026-03-23 04:10:16 +01:00
; Conflicts: ; apps/client/src/layouts/mobile_layout.tsx ; apps/client/src/services/promoted_attribute_definition_parser.ts ; apps/server/package.json ; apps/server/src/becca/entities/bnote.ts ; apps/server/src/etapi/etapi_utils.ts ; apps/server/src/etapi/notes.ts ; apps/server/src/routes/api/clipper.ts ; apps/server/src/routes/api/export.ts ; apps/server/src/routes/api/files.ts ; apps/server/src/routes/api/image.ts ; apps/server/src/routes/api/import.ts ; apps/server/src/routes/api/note_map.ts ; apps/server/src/routes/api/search.ts ; apps/server/src/routes/api/similar_notes.ts ; apps/server/src/routes/api/sync.ts ; apps/server/src/routes/error_handlers.ts ; apps/server/src/routes/index.ts ; apps/server/src/routes/route_api.ts ; apps/server/src/routes/routes.ts ; apps/server/src/services/anonymization.ts ; apps/server/src/services/app_info.ts ; apps/server/src/services/builtin_attributes.ts ; apps/server/src/services/export/zip.ts ; apps/server/src/services/hidden_subtree.ts ; apps/server/src/services/llm/ai_service_manager.ts ; apps/server/src/services/llm/context/modules/context_formatter.ts ; apps/server/src/services/llm/context/note_content.ts ; apps/server/src/services/llm/formatters/base_formatter.ts ; apps/server/src/services/llm/formatters/ollama_formatter.ts ; apps/server/src/services/llm/formatters/openai_formatter.ts ; apps/server/src/services/llm/tools/read_note_tool.ts ; apps/server/src/services/note_types.ts ; apps/server/src/services/notes.ts ; apps/server/src/services/options.ts ; apps/server/src/services/options_init.ts ; apps/server/src/services/search/expressions/note_content_fulltext.ts ; apps/server/src/services/utils.ts ; apps/server/src/services/ws.ts ; apps/server/src/share/content_renderer.ts ; packages/commons/src/lib/builtin_attributes.ts ; packages/commons/src/lib/rows.ts ; packages/trilium-core/src/routes/api/attachments.ts ; packages/trilium-core/src/routes/api/attributes.ts ; packages/trilium-core/src/routes/api/branches.ts ; packages/trilium-core/src/routes/api/notes.ts ; packages/trilium-core/src/routes/api/recent_changes.ts ; packages/trilium-core/src/routes/api/revisions.ts ; packages/trilium-core/src/routes/api/sql.ts ; packages/trilium-core/src/routes/api/stats.ts ; packages/trilium-core/src/services/attributes.ts ; packages/trilium-core/src/services/builtin_attributes.ts ; packages/trilium-core/src/services/promoted_attribute_definition_parser.ts ; pnpm-lock.yaml
156 lines
4.4 KiB
YAML
156 lines
4.4 KiB
YAML
name: Dev
|
|
on:
|
|
push:
|
|
branches: [ main, standalone ]
|
|
pull_request:
|
|
branches: [ main, standalone ]
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
env:
|
|
GHCR_REGISTRY: ghcr.io
|
|
DOCKERHUB_REGISTRY: docker.io
|
|
IMAGE_NAME: ${{ github.repository}}
|
|
TEST_TAG: ${{ github.repository}}:test
|
|
|
|
permissions:
|
|
pull-requests: write # for PR comments
|
|
|
|
jobs:
|
|
test_dev:
|
|
name: Test development
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout the repository
|
|
uses: actions/checkout@v6
|
|
|
|
- uses: pnpm/action-setup@v5
|
|
- name: Set up node & dependencies
|
|
uses: actions/setup-node@v6
|
|
with:
|
|
node-version: 24
|
|
cache: "pnpm"
|
|
- run: pnpm install --frozen-lockfile
|
|
|
|
- name: Typecheck
|
|
run: pnpm typecheck
|
|
|
|
- name: Run the client-side tests
|
|
run: pnpm run --filter=client test
|
|
|
|
- name: Upload client test report
|
|
uses: actions/upload-artifact@v7
|
|
if: always()
|
|
with:
|
|
name: client-test-report
|
|
path: apps/client/test-output/vitest/html/
|
|
retention-days: 30
|
|
|
|
- name: Run the server-side tests
|
|
run: pnpm run --filter=server test
|
|
|
|
- name: Upload server test report
|
|
uses: actions/upload-artifact@v7
|
|
if: always()
|
|
with:
|
|
name: server-test-report
|
|
path: apps/server/test-output/vitest/html/
|
|
retention-days: 30
|
|
|
|
- name: Run CKEditor e2e tests
|
|
run: |
|
|
pnpm run --filter=ckeditor5-mermaid test
|
|
pnpm run --filter=ckeditor5-math test
|
|
|
|
- name: Run the rest of the tests
|
|
run: pnpm run --filter=\!client --filter=\!server --filter=\!ckeditor5-mermaid --filter=\!ckeditor5-math test
|
|
|
|
build_docker:
|
|
name: Build Docker image
|
|
runs-on: ubuntu-latest
|
|
needs:
|
|
- test_dev
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- uses: pnpm/action-setup@v5
|
|
- name: Install dependencies
|
|
run: pnpm install --frozen-lockfile
|
|
- name: Update build info
|
|
run: pnpm run chore:update-build-info
|
|
- name: Trigger client build
|
|
run: pnpm client:build
|
|
- name: Send client bundle stats to RelativeCI
|
|
if: false
|
|
uses: relative-ci/agent-action@v3
|
|
with:
|
|
webpackStatsFile: ./apps/client/dist/webpack-stats.json
|
|
key: ${{ secrets.RELATIVE_CI_CLIENT_KEY }}
|
|
- name: Trigger server build
|
|
run: pnpm run server:build
|
|
- uses: docker/setup-buildx-action@v4
|
|
- uses: docker/build-push-action@v7
|
|
with:
|
|
context: apps/server
|
|
cache-from: type=gha
|
|
cache-to: type=gha,mode=max
|
|
test_docker:
|
|
name: Check Docker build
|
|
runs-on: ubuntu-latest
|
|
needs:
|
|
- build_docker
|
|
strategy:
|
|
matrix:
|
|
include:
|
|
- dockerfile: Dockerfile.alpine
|
|
- dockerfile: Dockerfile
|
|
steps:
|
|
- name: Checkout the repository
|
|
uses: actions/checkout@v6
|
|
|
|
- uses: pnpm/action-setup@v5
|
|
- name: Install dependencies
|
|
run: pnpm install --frozen-lockfile
|
|
|
|
- name: Update build info
|
|
run: pnpm run chore:update-build-info
|
|
- name: Trigger build
|
|
run: pnpm server:build
|
|
|
|
- name: Set IMAGE_NAME to lowercase
|
|
run: echo "IMAGE_NAME=${IMAGE_NAME,,}" >> $GITHUB_ENV
|
|
- name: Set TEST_TAG to lowercase
|
|
run: echo "TEST_TAG=${TEST_TAG,,}" >> $GITHUB_ENV
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v4
|
|
|
|
- name: Build and export to Docker
|
|
uses: docker/build-push-action@v7
|
|
with:
|
|
context: apps/server
|
|
file: apps/server/${{ matrix.dockerfile }}
|
|
load: true
|
|
tags: ${{ env.TEST_TAG }}
|
|
cache-from: type=gha
|
|
cache-to: type=gha,mode=max
|
|
|
|
- name: Validate container run output
|
|
run: |
|
|
CONTAINER_ID=$(docker run -d --log-driver=journald --rm --name trilium_local ${{ env.TEST_TAG }})
|
|
echo "Container ID: $CONTAINER_ID"
|
|
|
|
- name: Wait for the healthchecks to pass
|
|
uses: stringbean/docker-healthcheck-action@v3
|
|
with:
|
|
container: trilium_local
|
|
wait-time: 50
|
|
require-status: running
|
|
require-healthy: true
|
|
|
|
# Print the entire log of the container thus far, regardless if the healthcheck failed or succeeded
|
|
- name: Print entire log
|
|
if: always()
|
|
run: journalctl -u docker CONTAINER_NAME=trilium_local --no-pager
|